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

Platform Engineering with CodeCatalyst

kensh
September 10, 2024

Platform Engineering with CodeCatalyst

Serverless Platform を作る時に、実装の改善をすばやく回したり自動化を進めたりすることはプロダクトのアジリティを高める上で非常に重要になります。

このセッションでは Amazon CodeCatalyst を例として使用してどのようにPlatform team と Stream Aligned team がGitなど既存のツールを使った連携をしていくのかお話しいたします。

kensh

September 10, 2024
Tweet

More Decks by kensh

Other Decks in Technology

Transcript

  1. © 2024, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Platform Engineering on Serverless Amazon CodeCatalyst による 実践編 S E R V E R L E SS M E ET U P O S A K A # 0 3 Kensuke Shimokawa Serverless Specialist Amazon Web Services Japan G.K.
  2. Myself 2 Kensuke Shimokawa Amazon Web Services Serverless Specialist _kensh

    Slides https://speakerdeck.com/_kensh Qiita https://qiita.com/_kensh
  3. Agenda • Platform Engineering on Serverless の “おさらい” • Platform

    Engineering on Serverless の “実践” • AWS が提供する Platform Engineering Service • X-as-a-Service モデルに沿った責任境界 • Golden Path の提供 • Catalog から Blue print を fork • Catalog version が update され App team に pull request 3
  4. Proxy pattern / Layered pattern 7 アプリチーム プラットフォームチームが ボトルネックに プラットフォームチーム

    アプリチーム アプリチーム アプリ実行環境 アプリ実行環境 アプリ実行環境 アプリ実行環境 アプリ実行環境 管理の爆発 Security Observability CI/CD Log Storage Network
  5. self-service pattern 9 フィードバックの内容を受けて有⽤なソリューションを配布し、適⽤するチームを広げる API Gateway 関数 REST API CloudWatch

    Logs ログ管理 ルーティング ログ集約 データ保護の有効化 AWS CDK コード AWS CDK cdk deploy 環境構築 公開 ストリームアラインドチーム 利用 プラットフォームチーム プラットフォームチームの 責任範囲 ストリームアラインドチームの 責任範囲 GitHub DynamoDB Traces
  6. self-service + catalog DevOps、クラウドネイティブなチーム構成 CI/CD Observability ログ収集 Application Application インフラストラクチャ

    SNS SQS AppSync Step Functions EventBridge API Gateway Lambda Integration ガードレール Configuration アプリケーションチームの責任範囲 10 よくあるパターン Catalog カタログ化 セルフ サービス 利用 プラットフォーム チームの責任範囲 AWSの責任範囲 Security
  7. Platform Engineering Principle • ⼩さく始めて、⼤きく育てる – 最初から誰が使ってくれるかも分からない重厚⻑⼤な Platform を作らない –

    Product としての Platform を意識 – Platform 利⽤者がどのように良くなっているか観測する • ボトルネックシフトを避ける – チームの負荷軽減のために別の負荷を導⼊しない – チームの負荷を別のチームの負荷に置き換えない – ボトルネックではない箇所に注⼒しても解消されない • ゲート(⾨番)ではなく、ガードレール(⼼理的安全性) • 中央集権(統制思考)から⾃治権(Ownership/Self-service)へ – 開発者がOwnershipを持つ 13
  8. self-service + catalog DevOps、クラウドネイティブなチーム構成 CI/CD Observability ログ収集 Application Application インフラストラクチャ

    SNS SQS AppSync Step Functions EventBridge API Gateway Lambda Integration ガードレール Configuration アプリケーションチームの責任範囲 14 よくあるパターン Catalog カタログ化 セルフ サービス 利用 プラットフォーム チームの責任範囲 AWSの責任範囲 Security
  9. Amazon CodeCatalyst 17 ü マネージド ü オールインワン ü 統合されている ü

    セキュリティ重視 ü フレキシブル Code Build Test Deploy … Collaborate Project management Plan
  10. Blueprint の例 20 シングルページアプリケーション REST API ・基本的な ウェブ 3層 ・Java/Node.js

    API ・データの ETL 処理 ・画像/⽂書処理 など そのほかにも︕ これらをベースにしてすぐに開発が始められる
  11. Serverless Platform の責任共有モデル Application Application SNS SQS AppSync Step Functions

    EventBridge API Gateway Lambda Integration Configuration アプリケーションチームの責任範囲 23 CI/CD Observability ログ収集 ガードレール Catalog プラットフォームチームの責任範囲 Security
  12. 26 CI/CD Observability ログ収集 ガードレール AWS Account Single Account 戦略?

    Multi Stage delivery 戦略 • Development Stage • Staging Stage • Production Stage Stage ごとに Account 分けたいのでは? Catalog Security 密結合に
  13. Catalog 27 CI/CD Observability ログ収集 ガードレール AWS Account Cross Account

    で別 Product 環境 にあるカタログを取りに行く? Multi Account 戦略 • Product A • Product B • Product C Product の Account 戦略にカタログ位置 が依存しないようにしたいのでは? Security 密結合に
  14. 29 CI/CD Catalog Amazon CodeCatalyst (Internal Developer Platform) Golden Path

    in IDP Observability ログ収集 ガードレール Application AppSync Step Functions Lambda Integration Configuration API Gateway AWS Account Golden Path in Stack Blue Print Security
  15. 30 Workflow Catalog Amazon CodeCatalyst Documentation Issue Test Coverage Report

    Source repositories Identity, Permissions, Team Dev Environments (Internal Developer Platform) Golden Path in IDP Space, Project Observability ログ収集 ガードレール Application AppSync Step Functions Lambda Integration Configuration API Gateway AWS Account Golden Path in Stack Blue Print Security
  16. 31 Workflow Catalog AWS Account Amazon CodeCatalyst Documentation Issue Test

    Coverage Report Source repositories Identity, Permissions, Team Dev Environments (Internal Developer Platform) Golden Path in IDP Space, Project Multi Accounts をサポート
  17. 32 Workflow Amazon CodeCatalyst Space, Project deploy, configure... 請求 •

    Space に AWS アカウントとの紐付けを設定する ことができる • 紐付けられた AWS アカウントに対しては以下が できるようになる • Workflow からの AWS リソースアクセス • Workflow からの VPC 接続 • 料⾦の請求および管理イベントのログの出⼒ (請求アカウントとして設定したアカウント) AWS Account 請求アカウント Dev AWS Account Staging AWS Account Prod AWS Account
  18. 33 Workflow Amazon CodeCatalyst Dev AWS Account AppSync Step Functions

    Lambda API Gateway IAM Role (Deployment) Action Action AWS Account (Dev) Space, Project Action どの AWS アカウントに接続するか どの IAM Role を引き受けるか を指定し一時クレデンシャルを取得 アクセス先アカウントで利用可能な IAM Role の中から用途に応じた 適切なものを選択して引き受け、AWS リソースにアクセス deploy, configure...
  19. X-as-a-Service モデルのまとめ • ゲート(⾨番)ではなく、ガードレール(⼼理的安全性) § 統制系とアプリ系が密結合になると ”⾨番” 思考に • 中央集権(統制思考)から⾃治権(Ownership/Self-service)へ

    § 統制系とアプリ系が密結合になると ”中央集権” 思考に 34 構築中に作用する X-as-a-Service 要素については、 開発環境、ステージ環境、商用環境から適切に切り離す
  20. Golden Path 36 • ストリームアラインドチームには膨⼤な学習コスト・認知負荷がかかる § 特に「開発チーム」に近い組織で、CI/CD、監視、セキュリティ、ポリ シー準拠などにすべてに対応することが困難なケースが多い ストリームアラインドチームの負荷を軽減 組織のクラウドオペレーションをいかにモダナイズするか

    https://aws.amazon.com/jp/blogs/news/how-organizations-are-modernizing-for-cloud-operations/ • プラットフォームチームがツールセットやテンプレートを提供 • マネージド Internal Developer Platform (Service Catalog, CodeCatalyst, Backstage etc. ) の活⽤ • 再利⽤可能な中央リポジトリ内のテンプレートとドキュメントの管理
  21. Catalog から Blue print を fork 40 App team App

    Blue print platform team fork push push clone pull request merge Catalog
  22. 41 Catalog から blue printを選択しfork blue print には sercurity, reliability,

    cost optimise, CI/CD, performance の best practice が Golden Path として カタログ化されている
  23. fork project から、merge (Catalog) 46 App team App Blue print

    platform team fork push push clone pull request merge Catalog blue print に bug や security issue があれば、platform team に pull request を送る
  24. Catalog update に伴う pull request 49 App team App Blue

    print platform team fork push clone push pull request merge Catalog V1 -> V2 V2
  25. Golden Path の提供 のまとめ • ⼩さく始めて、⼤きく育てる – 最初から誰が使ってくれるかも分からない重厚⻑⼤な Platform を作らない

    – Product としての Platform を意識 – Platform 利⽤者がどのように良くなっているか観測する • ボトルネックシフトを避ける – チームの負荷軽減のために別の負荷を導⼊しない – チームの負荷を別のチームの負荷に置き換えない – ボトルネックではない箇所に注⼒しても解消されない 53
  26. Key takeaways • ⼩さく始めて、⼤きく育てる – 最初から誰が使ってくれるかも分からない重厚⻑⼤な Platform を作らない – Product

    としての Platform を意識 – Platform 利⽤者がどのように良くなっているか観測する • ボトルネックシフトを避ける – チームの負荷軽減のために別の負荷を導⼊しない – チームの負荷を別のチームの負荷に置き換えない – ボトルネックではない箇所に注⼒しても解消されない • ゲート(⾨番)ではなく、ガードレール(⼼理的安全性) • 中央集権(統制思考)から⾃治権(Ownership/Self-service)へ – 開発者がOwnershipを持つ 55 Readme/wiki, 開発環境の準備, AWS 提供のカタログ利用 くらいから始めてみては? チームのボトルネックが何な のかを把握する CodeCatalystの全ての機能を 利用しなくても良い X-as-a-service pattern で自走 できる範囲を拡大する Platform team は御用聞ではない Platform team は監査員ではない
  27. Thank you! 56 Kensuke Shimokawa Amazon Web Services Serverless Specialist

    _kensh Slides https://speakerdeck.com/_kensh Qiita https://qiita.com/_kensh