Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How ...

hhiroshell
December 06, 2023

大規模Webアプリケーションプラットフォームを開発して軌道に乗るまでにやったこと / How to Put Platforms on Track

hhiroshell

December 06, 2023
Tweet

More Decks by hhiroshell

Other Decks in Technology

Transcript

  1. Platform Engineering Meetup 【PR】⾃作キーボードはいいぞ • ⾃キ専⾨店「遊舎⼯房」へGo! 2 ←遊舎⼯房さんの店舗はこちら ↓@hhiroshellのキーボード #crkbd

    ⾃⼰紹介 @hhiroshell 早川 博 (はやかわ ひろし) • Cloud Nativeなインフラを開発 するエンジニア。 LINEヤフー 所属
  2. Platform Engineering Meetup 【PR】本を書きました • 「Kubernetesマイクロサービス開発の実践」 – Kubernetesでアプリケーションを実⾏するサービ ス開発者向け –

    “マイクロサービス”と銘打っていますが、コント ローラーやサービスメッシュでクラスタをもりも りにするよりも、Kubernetesの仕組みを理解して 使いこなすことにフォーカスしてます 3
  3. Platform Engineering Meetup プラットフォームの概要 1/2 • Webアプリケーションの実⾏基盤 – 簡単なコマンドを実⾏ or

    マニフェストを適⽤するだけでアプリが起動し、エ ンドポイントが公開される 6 $ paasctl create app hello-world --image=example-registry/sample/helloworld-go:latest --port=8080 $ paasctl get app hello-world NAME ENDPOINT READY REASON AGE hello-world https://hello-world.sandbox.app.dev.yahoo.co.jp True 6m4s $ curl https://hello-world.sandbox.app.dev.yahoo.co.jp Hello World! ※⼀部実際のものとは異なる箇所があります
  4. Platform Engineering Meetup プラットフォームの概要 2/2 • ヤフーのプライベートクラウドにある多数の他サービスと連携し、 様々な機能を提供 – クラウドコンソールからのNamespace作成

    – オブザーバビリティ系のサービスにテレメトリを⾃動送信 – 認証認可によるAPIの保護、ワークロードアイデンティティの⾃動挿⼊ – シークレットマネージャーと連携して機密情報をアプリに設定 • マルチテナント&スケーラビリティ – 複数のKubernetesクラスター組み合わせて論理的にひとつのクラスターを構成 – ヤフーが抱える多数のサービスを少数のクラスタで実⾏可能 7
  5. Platform Engineering Meetup 10 apiVersion: paas.yahoo.co.jp/v1 kind: App metadata: name:

    hello-world namespace: my-project spec: service: autoscale: maxReplicas: 10 minReplicas: 2 template: spec: containers: - name: nginx image: registry.example.com/hello-world:latest ports: - containerPort: 8080 • アプリケーションを実⾏するための最低限のマニフェスト ※⼀部実際のものとは異なる箇所があります
  6. Platform Engineering Meetup 参考リンク • Kubernetesとカスタムコントローラーを活⽤したプラットフォーム開発・運⽤の 勘所 – https://www.docswell.com/s/ydnjp/KW1E1D-2023-02-13-111059 •

    より安全なKubernetes Secrets管理のためのエコシステムの開発 – https://techblog.yahoo.co.jp/entry/2023021630413822/ – https://youtu.be/JQjL0-c1A-M • 価値提供のリードタイムを短くするための戦術としてのチーム替え「流動チー ム体制」に取り組んでいたら実はLeSSでのモブプロだったお話 – https://confengine.com/conferences/regional-scrum-gathering-tokyo-2024/proposal/19113/less 12
  7. Platform Engineering Meetup 14 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 ※ これとは別に開発活動ももちろん⾏っています
  8. Platform Engineering Meetup 15 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 開発者への情報提供とサポート ※ これとは別に開発活動ももちろん⾏っています
  9. Platform Engineering Meetup 16 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 開発者への情報提供とサポート 普及活動 ※ これとは別に開発活動ももちろん⾏っています
  10. Platform Engineering Meetup 17 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 開発者への情報提供とサポート 普及活動
  11. Platform Engineering Meetup 仕様検討 • ユーザー調査 – これから開発するプラットフォームに対するユーザーのニーズを調査したり、 プラットフォーム開発者間でのイメージを合わせる –

    ユーザーストーリーマッピングの作成と、アンケート やインタビューによる ヒアリングを実施 • プロダクト調査 – 世の中にある競合サービスや、類似の既存のプラットフォームを調査し、こ れから開発するプラットフォームで必要/不要となるであろう機能の当たりを 付ける 18
  12. Platform Engineering Meetup ユーザーストーリーマッピング • ⽬的 – ユーザー(開発者)の時系列の⾏動と、それに対する利⽤者/運⽤者視点のス トーリーを網羅的に洗い出す(→ 仮説の設定)

    – 特定された機能群に対して実現の優先度を決定する 19 開発者の行動、そのとき感じ ていること、何に意識が向い ているかなど この場合、時系列をアプリ開 発のフェーズで表現
  13. Platform Engineering Meetup ユーザーアンケートとユーザーインタビュー • ⽬的 – ユーザーストーリーマッピングで仮定した利⽤者の⾏動が正しいかどうかを 確認する(→ 仮説の検証)

    – 既存の業務フローでのペインポイントや、既存プラットフォームに対する不 満点を確認し、機能提供の優先度に反映する • アンケートとインタビューは2段階 – ユーザーアンケートでインタビューに協⼒いただけると回答があった利⽤者 に対し、インタビューを実施 – インタビューは、オープンな質問をきっかけにした議論や、既存システムの アーキテクチャの詳細を聞くなど、広く深く利⽤者を理解できる機会になる 20
  14. Platform Engineering Meetup 21 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 開発者への情報提供とサポート 普及活動
  15. Platform Engineering Meetup 開発者への情報提供とサポート • ドキュメンテーション – 利⽤者にプラットフォームの使い⽅をガイドするドキュメントを提供 • サポート窓⼝開設・問い合わせ対応

    – トラブルシュートや使い⽅に関する個々の相談を持ち込む窓⼝ • 個別案件の設定と対応 – パイロット(先⾏利⽤)ユーザーや特殊要件の対応が必要なユーザーに対し、 専⽤のチャネルを設けて⼿圧いサポートを⾏う 22
  16. Platform Engineering Meetup ドキュメンテーション • ⽬的 – 利⽤者がプラットフォームをセルフサービスで利⽤可能にする – 既知の問題や特定機能のサポート状況を知らせるなど、利⽤者へのコミュニ

    ケーションパスの⼀つとして利⽤する • ⾯倒かもしれないが、とても⼤事…。 – 無⽤な問い合わせを減らすことにもつながる 23
  17. Platform Engineering Meetup ドキュメンテーションで意識していること • コンテンツ決め – 初期のコンテンツはユーザーストーリーマッピングを元に考える – チートシートは結構読まれる

    – トラブルシュートのガイドは問い合わせの削減に効く • ドキュメントの書き⽅ – 読者の⽴場を意識する(例: 開発者向けか、そのマネージャー向けか) – できることではなく、読者がやりたいことを起点に – フィードバックが欲しい場合は実装よりドキュメント先に書くことも 24
  18. Platform Engineering Meetup 個別案件の設定と対応 • ⽬的 – 特殊な要件があるなどして、継続的かつ⼿厚いサポートを必要とするプロ ジェクトに対し、円滑なプラットフォーム利⽤のお⼿伝いをする •

    例:超⼤規模アプリケーションの実⾏ – 同種の要件があるプロダクトを受け⼊れるためのノウハウを獲得する – プラットフォームの利⽤実績の獲得 • 専⽤のチャネルで密にやり取り – ちょっとした相談にも乗りやすい環境を⽤意することで、サポート窓⼝では 気づけない問題を発⾒することも 25
  19. Platform Engineering Meetup 26 取り組んだこと パイロット 提供 GA 導⼊期 成⻑期

    成熟期 イマココ 仕様検討 開発者への情報提供とサポート 普及活動
  20. Platform Engineering Meetup 普及活動 • ハンズオンセッション – プラットフォームを触り始めるきっかけを作る • よろず相談会

    – プラットフォームを使う上での種々の相談を受け付ける • 事例セッション – プラットフォームを使ってくれた開発に発表してもらう 27 (いずれもTGConという社内イベントの中のコンテンツとして実施)
  21. Platform Engineering Meetup ハンズオンセッション • ⽬的 – ユーザーがプラットフォームを使い始めるきっかけを作る – 開発部⾨の各チームにおいて「このプラットフォームに詳しい⼈」になって

    もらう • ユースケースや習熟度毎のハンズオンを提供 – 新規アプリケーションの開発を始めるケース – 他のコンピューティングプラットフォームとの使い分け 29
  22. Platform Engineering Meetup よろず相談会 • ⽬的 – ディスカッションを通じて開発チームのプロジェクトのアーキテクチャや課 題を深く理解した上で、最適な使い⽅をガイドする –

    問い合わせフォームで聞くことでもないような質問を投げかけられる場を設 ける – プラットフォームに対する潜在的な受容を発⾒する • オンラインのバーチャルオフィス ツールで、⼊退場⾃由で相談を 受け付ける 30
  23. Platform Engineering Meetup まとめ • LINEヤフーでは開発者向けに様々なプラットフォームを提供 • Webアプリケーションの実⾏基盤となるプラットフォームを新規に 開発し提供中 •

    新しいプラットフォームを使ってもらうために、種々の取り組みを おこなった – 仕様策定のためのユーザー調査、プロダクト調査 – 開発者への情報提供とサポート(ドキュメント、個別案件対応...etc) – 普及活動(ハンズオン、よろず相談会 ...etc) • 個々の取り組みは⼀般に知られたもの。これらを地道に続けること が⼤切…。 31