Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

AWSとGitHubを用いたパターン別CI/CD構成解説

 AWSとGitHubを用いたパターン別CI/CD構成解説

つくぼし

July 17, 2023
Tweet

More Decks by つくぼし

Other Decks in Technology

Transcript

  1. 自己紹介 2 ★ 名前 ◦ つくぼし ★ 所属 ◦ AWS事業本部コンサルティング部

    ◦ ソリューションアーキテクト ★ 最近ハマっているAWSサービス ◦ AWS SAM ★ SNS/ブログ ◦ Twitter(@tsukuboshi0755) ◦ DevelopersIO(つくぼし)
  2. お題構成(ECR + ECS + RDS) 16 ECS ECR App Service

    RDS イメージから アプリケーションコンテナ を起動 DBに対して マイグレーション Migration Task
  3. パターン1. AWS Codeシリーズのみの構成 17 ECS ECR App Service RDS イメージから

    アプリケーションコンテナ を起動 DBに対して マイグレーション Migration Task CodePipeline CodeCommit CodeBuild CodeDeploy アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ S3 (Artifact Bucket)
  4. パターン2. GitHubサービスのみの構成 20 ECS ECR App Service RDS イメージから アプリケーションコンテナ

    を起動 DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Actions (Deploy) GitHub Repository
  5. パターン2のメリット 21 • GitHub公式のドキュメントが豊富 • GitHub Repositoryは公開されているものが多数存在するため、リポジト リ設計を参照しやすい • GitHub

    Repositoryの機能が豊富(プロジェクト管理機能、通知機能等) • GitHub Actionsの無料利用枠が多い(フリープランの場合月2000分)
  6. パターン2のデメリット 22 • AWSとGitHub両方の管理が必要 • GitHub ActionsからAWSへのアクセス方法が複雑になりやすい • GitHub Actionsではビルド環境のスペックはGA版では変更できない

    (2023年6月時点では有料プランのベータ版でのみ提供あり) • GitHub Actionsのみでは、Blue/Greenデプロイの実現が困難(デプロイ 手法はワークフローで実施するCLIやIaCに依存する)
  7. パターン3. AWS + GitHubの構成 23 ECS ECR App Service RDS

    イメージから アプリケーションコンテナ を起動 DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Repository CodePipeline CodeBuild CodeDeploy S3 (Artifact Bucket) イメージプッシュを トリガーに パイプライン実行
  8. パターン3の検討事項 26 ECS ECR App Service RDS イメージから アプリケーションコンテナ を起動

    DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Repository CodePipeline CodeDeploy S3 (Artifact Bucket) ビルドステージの サービスの組み合わせ について検討事項あり CodeBuild イメージプッシュを トリガーに パイプライン実行
  9. パターン3-1. GitHub Actionsのみ 27 ECS ECR App Service RDS イメージから

    アプリケーションコンテナ を起動 DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Repository CodeDeploy OIDCを用いた認証により AWSリソースにアクセス
  10. パターン3-2. CodeBuildのみ 28 ECS ECR App Service RDS イメージから アプリケーションコンテナ

    を起動 DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Repository CodePipeline CodeBuild CodeDeploy S3 (Artifact Bucket) GitHub接続を使用
  11. パターン3-3. GitHub Actions + CodeBuild 29 ECS ECR App Service

    RDS イメージから アプリケーションコンテナ を起動 DBに対して マイグレーション Migration Task アプリケーションサービスを ECSにデプロイ マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Repository CodePipeline CodeBuild CodeDeploy S3 (Artifact Bucket) イメージプッシュを トリガーに パイプライン実行
  12. 今後のCI/CD学習教材 33 ★ https://zenn.dev/reireias/articles/8e987af2762eaa ◦ ECSパイプライン構成の比較詳細がまとまっているため最初に見てほしい ★ https://zenn.dev/hukurouo/books/cfn-hands-on/viewer/cfn-code-deploy ◦ パターン3-1におけるGitHub

    ActionsからOIDC認証を用いたCodeDeployへの アクセス方法の記載あり ★ https://zenn.dev/ttani/articles/aws-ecs-autodeploy ◦ パターン3-2におけるCodePipelineのGitHub接続設定方法の記載あり ★ https://dev.classmethod.jp/articles/ecr_push_ecs_simple_codepipeline ◦ パターン3-3におけるCodePipelineのECRトリガー設定方法の記載あり
  13. パターン1. CI部分 38 ECS ECR RDS Migration Task CodePipeline CodeCommit

    CodeBuild CodeDeploy マイグレーション専用 タスクを起動 イメージをプッシュ S3 (Artifact Bucket) DBに対して マイグレーション
  14. パターン1. CD部分 39 ECR App Service RDS イメージから アプリケーションコンテナ を起動

    CodePipeline CodeCommit CodeBuild CodeDeploy アプリケーションサービスを ECSにデプロイ S3 (Artifact Bucket) ECS
  15. パターン2. CI部分 40 ECS ECR RDS DBに対して マイグレーション Migration Task

    マイグレーション専用 タスクを起動 イメージをプッシュ GitHub Actions (Build) GitHub Actions (Deploy) GitHub Repository
  16. パターン2. CD部分 41 ECS ECR App Service RDS イメージから アプリケーションコンテナ

    を起動 アプリケーションサービスを ECSにデプロイ GitHub Actions (Build) GitHub Actions (Deploy) GitHub Repository
  17. パターン3. CI部分 42 ECS ECR RDS DBに対して マイグレーション Migration Task

    イメージをプッシュ GitHub Actions (Build) GitHub Repository CodePipeline CodeDeploy S3 (Artifact Bucket) マイグレーション専用 タスクを起動 CodeBuild イメージプッシュを トリガーに パイプライン実行
  18. パターン3. CD部分 43 ECS ECR App Service RDS イメージから アプリケーションコンテナ

    を起動 アプリケーションサービスを ECSにデプロイ GitHub Actions (Build) GitHub Repository CodePipeline CodeDeploy S3 (Artifact Bucket) CodeBuild