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

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

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
    ⼤規模Webアプリケーションプラットフォームを
    開発して軌道に乗るまでにやったこと
    @hhiroshell
    1

    View full-size slide

  2. Platform Engineering Meetup
    【PR】⾃作キーボードはいいぞ
    • ⾃キ専⾨店「遊舎⼯房」へGo!
    2
    ←遊舎⼯房さんの店舗はこちら
    ↓@hhiroshellのキーボード #crkbd
    ⾃⼰紹介
    @hhiroshell
    早川 博
    (はやかわ ひろし)
    • Cloud Nativeなインフラを開発
    するエンジニア。
    LINEヤフー 所属

    View full-size slide

  3. Platform Engineering Meetup
    【PR】本を書きました
    • 「Kubernetesマイクロサービス開発の実践」
    – Kubernetesでアプリケーションを実⾏するサービ
    ス開発者向け
    – “マイクロサービス”と銘打っていますが、コント
    ローラーやサービスメッシュでクラスタをもりも
    りにするよりも、Kubernetesの仕組みを理解して
    使いこなすことにフォーカスしてます
    3

    View full-size slide

  4. Platform Engineering Meetup
    ⽬次
    1. どんなプラットフォームを提供しているの?
    2. 新規⽴ち上げから軌道に乗るまでにやったこと
    3. まとめ
    4

    View full-size slide

  5. Platform Engineering Meetup
    ⽬次
    1. どんなプラットフォームを提供しているの?
    2. 新規⽴ち上げから軌道に乗るまでにやったこと
    3. まとめ
    5

    View full-size slide

  6. 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!
    ※⼀部実際のものとは異なる箇所があります

    View full-size slide

  7. Platform Engineering Meetup
    プラットフォームの概要 2/2
    • ヤフーのプライベートクラウドにある多数の他サービスと連携し、
    様々な機能を提供
    – クラウドコンソールからのNamespace作成
    – オブザーバビリティ系のサービスにテレメトリを⾃動送信
    – 認証認可によるAPIの保護、ワークロードアイデンティティの⾃動挿⼊
    – シークレットマネージャーと連携して機密情報をアプリに設定
    • マルチテナント&スケーラビリティ
    – 複数のKubernetesクラスター組み合わせて論理的にひとつのクラスターを構成
    – ヤフーが抱える多数のサービスを少数のクラスタで実⾏可能
    7

    View full-size slide

  8. Platform Engineering Meetup 8
    • コンソールからのNamespace作成
    ※画像はイメージです

    View full-size slide

  9. Platform Engineering Meetup 9
    • コンソールからのNamespace作成
    ※画像はイメージです
    4VQFS"XFTPNF1SJWBUF$MPVE$POTPMF NZQSPKFDU
    Namespace新規作成
    Namespace名:

    View full-size slide

  10. 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
    • アプリケーションを実⾏するための最低限のマニフェスト
    ※⼀部実際のものとは異なる箇所があります

    View full-size slide

  11. Platform Engineering Meetup
    どのくらい使われているか
    • テナント数:数百
    • アプリケーション数:約1万
    • Pod数:数万
    11

    View full-size slide

  12. 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

    View full-size slide

  13. Platform Engineering Meetup
    ⽬次
    1. どんなプラットフォームを提供しているの?
    2. 新規⽴ち上げから軌道に乗るまでにやったこと
    3. まとめ
    13

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. Platform Engineering Meetup 17
    取り組んだこと
    パイロット
    提供
    GA
    導⼊期 成⻑期 成熟期
    イマココ
    仕様検討
    開発者への情報提供とサポート
    普及活動

    View full-size slide

  18. Platform Engineering Meetup
    仕様検討
    • ユーザー調査
    – これから開発するプラットフォームに対するユーザーのニーズを調査したり、
    プラットフォーム開発者間でのイメージを合わせる
    – ユーザーストーリーマッピングの作成と、アンケート やインタビューによる
    ヒアリングを実施
    • プロダクト調査
    – 世の中にある競合サービスや、類似の既存のプラットフォームを調査し、こ
    れから開発するプラットフォームで必要/不要となるであろう機能の当たりを
    付ける
    18

    View full-size slide

  19. Platform Engineering Meetup
    ユーザーストーリーマッピング
    • ⽬的
    – ユーザー(開発者)の時系列の⾏動と、それに対する利⽤者/運⽤者視点のス
    トーリーを網羅的に洗い出す(→ 仮説の設定)
    – 特定された機能群に対して実現の優先度を決定する
    19
    開発者の行動、そのとき感じ
    ていること、何に意識が向い
    ているかなど
    この場合、時系列をアプリ開
    発のフェーズで表現

    View full-size slide

  20. Platform Engineering Meetup
    ユーザーアンケートとユーザーインタビュー
    • ⽬的
    – ユーザーストーリーマッピングで仮定した利⽤者の⾏動が正しいかどうかを
    確認する(→ 仮説の検証)
    – 既存の業務フローでのペインポイントや、既存プラットフォームに対する不
    満点を確認し、機能提供の優先度に反映する
    • アンケートとインタビューは2段階
    – ユーザーアンケートでインタビューに協⼒いただけると回答があった利⽤者
    に対し、インタビューを実施
    – インタビューは、オープンな質問をきっかけにした議論や、既存システムの
    アーキテクチャの詳細を聞くなど、広く深く利⽤者を理解できる機会になる
    20

    View full-size slide

  21. Platform Engineering Meetup 21
    取り組んだこと
    パイロット
    提供
    GA
    導⼊期 成⻑期 成熟期
    イマココ
    仕様検討
    開発者への情報提供とサポート
    普及活動

    View full-size slide

  22. Platform Engineering Meetup
    開発者への情報提供とサポート
    • ドキュメンテーション
    – 利⽤者にプラットフォームの使い⽅をガイドするドキュメントを提供
    • サポート窓⼝開設・問い合わせ対応
    – トラブルシュートや使い⽅に関する個々の相談を持ち込む窓⼝
    • 個別案件の設定と対応
    – パイロット(先⾏利⽤)ユーザーや特殊要件の対応が必要なユーザーに対し、
    専⽤のチャネルを設けて⼿圧いサポートを⾏う
    22

    View full-size slide

  23. Platform Engineering Meetup
    ドキュメンテーション
    • ⽬的
    – 利⽤者がプラットフォームをセルフサービスで利⽤可能にする
    – 既知の問題や特定機能のサポート状況を知らせるなど、利⽤者へのコミュニ
    ケーションパスの⼀つとして利⽤する
    • ⾯倒かもしれないが、とても⼤事…。
    – 無⽤な問い合わせを減らすことにもつながる
    23

    View full-size slide

  24. Platform Engineering Meetup
    ドキュメンテーションで意識していること
    • コンテンツ決め
    – 初期のコンテンツはユーザーストーリーマッピングを元に考える
    – チートシートは結構読まれる
    – トラブルシュートのガイドは問い合わせの削減に効く
    • ドキュメントの書き⽅
    – 読者の⽴場を意識する(例: 開発者向けか、そのマネージャー向けか)
    – できることではなく、読者がやりたいことを起点に
    – フィードバックが欲しい場合は実装よりドキュメント先に書くことも
    24

    View full-size slide

  25. Platform Engineering Meetup
    個別案件の設定と対応
    • ⽬的
    – 特殊な要件があるなどして、継続的かつ⼿厚いサポートを必要とするプロ
    ジェクトに対し、円滑なプラットフォーム利⽤のお⼿伝いをする
    • 例:超⼤規模アプリケーションの実⾏
    – 同種の要件があるプロダクトを受け⼊れるためのノウハウを獲得する
    – プラットフォームの利⽤実績の獲得
    • 専⽤のチャネルで密にやり取り
    – ちょっとした相談にも乗りやすい環境を⽤意することで、サポート窓⼝では
    気づけない問題を発⾒することも
    25

    View full-size slide

  26. Platform Engineering Meetup 26
    取り組んだこと
    パイロット
    提供
    GA
    導⼊期 成⻑期 成熟期
    イマココ
    仕様検討
    開発者への情報提供とサポート
    普及活動

    View full-size slide

  27. Platform Engineering Meetup
    普及活動
    • ハンズオンセッション
    – プラットフォームを触り始めるきっかけを作る
    • よろず相談会
    – プラットフォームを使う上での種々の相談を受け付ける
    • 事例セッション
    – プラットフォームを使ってくれた開発に発表してもらう
    27
    (いずれもTGConという社内イベントの中のコンテンツとして実施)

    View full-size slide

  28. Platform Engineering Meetup
    TGConとは
    • プラットフォームやそれに関連する技術を取り扱う社内技術カン
    ファレンス
    – 新機能の発表、事例セッション、ハンズオン...etc
    28

    View full-size slide

  29. Platform Engineering Meetup
    ハンズオンセッション
    • ⽬的
    – ユーザーがプラットフォームを使い始めるきっかけを作る
    – 開発部⾨の各チームにおいて「このプラットフォームに詳しい⼈」になって
    もらう
    • ユースケースや習熟度毎のハンズオンを提供
    – 新規アプリケーションの開発を始めるケース
    – 他のコンピューティングプラットフォームとの使い分け
    29

    View full-size slide

  30. Platform Engineering Meetup
    よろず相談会
    • ⽬的
    – ディスカッションを通じて開発チームのプロジェクトのアーキテクチャや課
    題を深く理解した上で、最適な使い⽅をガイドする
    – 問い合わせフォームで聞くことでもないような質問を投げかけられる場を設
    ける
    – プラットフォームに対する潜在的な受容を発⾒する
    • オンラインのバーチャルオフィス
    ツールで、⼊退場⾃由で相談を
    受け付ける
    30

    View full-size slide

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

    View full-size slide