aws マネージドサービスで実現する ci/cd パイプ …...本セッションのテーマ...
TRANSCRIPT
![Page 1: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/1.jpg)
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Yuki, Chiba, AWS Solutions Architect
2017. 6. 2
AWSマネージドサービスで実現するCI/CDパイプライン
![Page 2: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/2.jpg)
✤ Name : 千葉 悠貴(ちば ゆうき)
✤ Role : Solutions Architect
✤ Segment : Internet Media
✤ Favorite Service : CloudFormation
![Page 3: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/3.jpg)
本セッションのテーマ
継続的インテグレーション(CI)と継続的デリバリー(CD)
✤ 本セッションに含まれるもの
✤ CI/CDを実現する”ツールとしての”AWSサービスの概要
✤ 継続的デリバリーにフォーカスしたテクニックと実装例
✤ 本セッションに含まれないもの
✤ What’s CI/CD? Why CI/CD?
✤ DevOpsの文化的な話
✤ 取り上げる個々のAWSサービスの機能詳細
![Page 4: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/4.jpg)
CI/CDパイプラインを実現するAWSのマネージドサービス
![Page 5: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/5.jpg)
CI/CDパイプライン
Source Build Test Production
継続的インテグレーション
継続的デプロイメント
継続的デリバリー
![Page 6: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/6.jpg)
ソースコードのバージョン管理
ビルド自動化
ワークフロー管理
デプロイ自動化
AWS CodeCommit
AWS CodeBuild
AWS CodeDeploy
AWS CodePipeline
AWS CloudFormation AWS Elastic Beanstalk
CI/CDパイプラインを実現するAWSサービス
AWS CodeStar
![Page 7: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/7.jpg)
AWS Code Services
AWS CodeCommit
✤ セキュア、スケーラブルなGit互換のリポジトリサービス✤ スタンダードなGit Toolからアクセス可能✤ PushなどのイベントをトリガーにSNS/Lambdaを呼び出し可能
AWS CodeBuild
✤ スケーラビリティに優れたビルドサービス✤ ソースのコンパイル、テスト、パッケージ生成をサポート✤ Dockerイメージの作成も可能
AWS CodeDeploy
✤ S3またはGitHub上のコードをあらゆるインスタンスにデプロイ✤ デプロイを安全に実行するための様々な機能を提供✤ In-place(ローリング) およびBlue/Greenのデプロイをサポート
AWS CodePipeline
✤ リリースプロセスのモデル化と見える化を実現✤ カスタムアクションによる柔軟なパイプライン作成が可能✤ 様々なAWSサービスや3rdパーティ製品との統合をサポート
![Page 8: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/8.jpg)
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
DeployToProd
CodeDeploy
Production
ソースのコミット
アプリケーション
のビルド
結合テスト環境へ
のデプロイ
結合テスト
本番環境への
デプロイ
CodePipelineでのリリースプロセスモデル化
アクション ステージ
パイプライン
トランジション
![Page 9: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/9.jpg)
DEMO!
![Page 10: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/10.jpg)
![Page 11: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/11.jpg)
AWS CodeStar
![Page 12: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/12.jpg)
AWS CodeStar
AWS上にアプリケーションをすばやく開発・ビルド・デプロイ
AWS上での開発をわずか数分間で開始
チームをまたがった開発をセキュアに
ソフトウェアデリバリの管理を容易に
様々なプロジェクトテンプレートから選択
![Page 13: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/13.jpg)
Step1 : プロジェクトテンプレート選択
![Page 14: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/14.jpg)
Step1 : プロジェクトテンプレート選択
![Page 15: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/15.jpg)
Step2 : 開発ツールセットアップ
![Page 16: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/16.jpg)
Complete!
![Page 17: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/17.jpg)
セットアップ内容
✤サンプルアプリケーション
✤ EC2 or Beanstalk or Lambda
✤ CodeCommitリポジトリ
✤ CodeBuildビルドプロジェクト
✤デプロイツール
✤ CodeDeploy or Beanstalk or CloudFormation
✤ CodePipeline 継続的デプロイメントパイプライン
✤ CloudWatchメトリクス
✤プロジェクトダッシュボード
![Page 18: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/18.jpg)
Project Dashboard
CloudWatchメトリクス
CodeCommit Appエンドポイント
CodePipelineJIRA統合メニュー
![Page 19: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/19.jpg)
AWSサービスを利用した継続的デリバリーテクニック
![Page 20: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/20.jpg)
継続的デリバリー?
✤ プロダクション環境=ビジネスをヘルシーに保つ
✤ リリース作業による問題を減らす=安全にデプロイする
✤ 問題が起きた際は素早く検知し影響範囲を少なくする
✤ リリース判断/タイミングをビジネスに合わせる
✤ ビジネス影響が大きいリリースはマニュアル承認ステップを設ける
✤ ビジネス判断でリリースを遅らせることも
✤ 継続的デリバリー ⇒ 継続的デプロイメント
✤ いつでもプロダクションリリース可能な状態にしておく
✤ ビルド〜テスト〜デプロイの自動化は必須事項
✤ 安全性が担保されたらマニュアルステップを自動化する
![Page 21: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/21.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 22: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/22.jpg)
リリースプロセス:ベースライン
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
DeployToProd
CodeDeploy
Production
CodeDeploy
![Page 23: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/23.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 24: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/24.jpg)
本番環境の継続的な監視
本番環境のサービス停止を意識する
✤サービスは内部起因/外部起因でいつでも停止し得る
✤内部監視では健全でもユーザーからアクセスできない可能性も
シンセティックトラフィックで本番環境を常に監視をする
✤接続性のチェック
✤クライアントレイテンシーの測定
✤重要なビジネスファンクション(API/UI)のテスト
Requirement
Implement
シンセティックトラフィック=リアルユーザーをシミュレートしたトラフィック
![Page 25: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/25.jpg)
リリースプロセス + シンセティックトラフィック
DeployToProd
CodeDeploy
Production
Synthetic Traffic
CodeDeploy
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
シンセティックトラフィック監視
![Page 26: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/26.jpg)
Reference Architecture – シンセティックトラフィック
CloudWatch
Lambda Function
(Synthetic Traffic)
CloudWatch
Events
CloudWatchEventsでLambdaファンクション
を定期実行
サーバーサイドのメトリクスを
CloudWatchで監視
リーチャビリティやレイテンシーはクライアントサイド(Lambda)
から直接CloudWatchにPUT
Lambdaからサービスにアクセス
Alarm
クライアントサイドで問題を検知したらAlarm
https://github.com/awslabs/aws-codepipeline-synthetic-tests
![Page 27: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/27.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 28: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/28.jpg)
デプロイメントヘルスチェック
デプロイメント時の失敗・問題をすばやく検知する
✤ユニットテストが正常でもデプロイ時に異常になるケースもあり得る
✤単一ホストの問題か、全体に波及する問題かを区別する
デプロイ時のヘルスチェックとロールバックを実装する
1. 各ホストごとにデプロイ後のセルフヘルスチェックを実施する
2. 問題のあるホスト数が閾値を超えた場合デプロイを失敗にする
3. デプロイ失敗時はロールバックする
Requirement
Implement
![Page 29: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/29.jpg)
リリースプロセス + デプロイヘルスチェック
DeployToProd
CodeDeploy
Production
Synthetic Traffic
CodeDeploy
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
![Page 30: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/30.jpg)
CodeDeploy - ValidateServiceフック✤ CodeDeployではValidateServiceフックを利用してアプリ開始後に
セルフヘルスチェックスクリプトの実行が可能
CodeDeploy設定ファイル : AppSpec.yml
![Page 31: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/31.jpg)
MHH 66%, 10 hosts:
V1V2 V1V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2V2 V2 V2 V2 V2
CodeDeploy - Minimum Healthy Hosts
Production Fleet
ELB
1 failure – 90% healthy
✤ デプロイ対象全体の何割が正常であればデプロイを成功とみなすかを定義できる
![Page 32: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/32.jpg)
MHH 66%, 10 hosts:
V1V2 V1V1 V1 V1 V1 V1 V1 V1 V1V2 V2 V2 V2V2 V2 V2 V2 V2
CodeDeploy - Minimum Healthy Hosts
Production Fleet
ELB
4 failure – 60% healthy
✤ デプロイ対象全体の何割が正常であればデプロイを成功とみなすかを定義できる
![Page 33: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/33.jpg)
CodeDeploy - ロールバック
✤ デプロイメントが失敗した際に自動的に前のリビジョンにロールバックするようにDeployment Groupを設定する
![Page 34: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/34.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 35: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/35.jpg)
デプロイ単位のセグメンテーション
健全でないアプリのデプロイ範囲を広げない
✤問題範囲を制限しビジネス影響を最小限にする
✤部分的に数時間〜数日間運用してみてから範囲を広げる
セグメント分割することでデプロイのリスクを低減する
1. 本番環境を複数のセグメントに分割する
2. 一つのセグメントを対象にデプロイする
3. 各セグメントに対してポストデプロイテストを実施する
4. 各セグメントに対し2と3を繰り返す
Requirement
Implement
![Page 36: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/36.jpg)
複数セグメントにデプロイ単位を分割
セグメントタイプ:
• リージョン
• Availability Zone
• サブゾーン
• 特定ホスト(カナリア)
US-EAST-1
US-EAST-1A US-EAST-1B
![Page 37: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/37.jpg)
リリースプロセス + デプロイセグメンテーション
DeployToProd
CodeDeploy
Production
Synthetic Traffic
CodeDeploy
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
![Page 38: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/38.jpg)
Synthetic Traffic
CodeDeploy
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
Deploy-AZ-3
CodeDeploy
リリースプロセス + デプロイセグメンテーション
IntegTest
End2EndTester セグメンテーション/ポストデプロイテスト
![Page 39: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/39.jpg)
CodeDeploy - デプロイメントグループ
✤ セグメントごとにデプロイメントグループを作成
✤ タグ
✤ Auto Scaling Group
![Page 40: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/40.jpg)
DeployToProd
CodeDeploy
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
Deploy-AZ-3
CodeDeploy
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
1. 最小セグメントへのデプロイ
2. ポストデプロイテスト
3. 1AZへのデプロイ
4. ポストデプロイテスト
5. 残りのAZへのデプロイ
CodePipeline - アクションの分割
![Page 41: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/41.jpg)
CodePipeline - Approvalアクション
Deploy
CanaryDeploy
CodeDeploy
SNS topicValidateSegment
Approval
putApprovalResult“Approved” or "Rejected"
Approval
message
Deploy-AZ-1
CodeDeploy
✤ Approvalアクションによりマニュアル承認ステップを追加できる
✤ SNSにメッセージが飛ぶため、Lambdaと連携し自動承認も可能✤ Approvalアクションのタイムアウト期間は7日間あるため、長時間のヘルス
チェックの結果を確認してから次のステップに進むということができる
✤ タイムアウトが短くても良い処理の場合、直接Lambdaを実行するInvokeアクションも利用可能(タイムアウトは1時間)
![Page 42: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/42.jpg)
Reference Architecture - ポストデプロイテスト
Source
MyAppSource
CodeCommit
Build
MyAppBuild
Build
Deploy
CanaryDeploy
CodeDeploy
ValidateCanary
Approval
SNS topic Lambda Function
registerDeployTest()
Lambda Function
evaluateDeploy()
DynamoDB
CloudWatch
Events (1m)
Prod-us-east-1a
CodeDeploy alarmtimeusage
https://github.com/awslabs/aws-codepipeline-block-production
Approvalアクションに入ったらSNS経由で
Lambdaを実行
DynamoDBにApprovalレコード
を格納
問題なければCodePipelineに対してApproveを実行
Lambda内でApprovalレコード
をチェック
メトリクスを収集しデプロイの健全性を
チェック
![Page 43: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/43.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 44: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/44.jpg)
プロダクション昇格の無効化
デプロイ先環境の健全性を確認してからデプロイする
✤パイプラインはデプロイ先が健全かは意識しない
✤健全でない環境にデプロイを続けると問題が拡大する
本番環境に問題が起きている場合はリリースを停止する
1. シンセティックトラフィックで本番環境を監視する
2. 問題が見つかったらパイプラインのトランジションを無効化する
Requirement
Implement
![Page 45: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/45.jpg)
Synthetic Traffic
CodeDeploy
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
Deploy-AZ-3
CodeDeploy
リリースプロセス + プロダクション昇格の無効化
IntegTest
End2EndTesterプロダクション昇格の無効化
![Page 46: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/46.jpg)
CodePipeline - トランジションの無効化/有効化
✤ ステージ間のトランジションを一時的に無効化できる
![Page 47: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/47.jpg)
Source
MyAppSource
CodeCommit
Build
MyAppBuild
Build
DeployToProd
MyApp
CodeDeploy
CloudWatchSynthetic
Trafficdeploys checks
CloudWatch
Events (1m)
triggers
emitsdisables
disableTransition() CW alarm
EC2 instance
SNS
https://github.com/awslabs/aws-codepipeline-synthetic-tests
Reference Architecture – プロダクション昇格の無効化
シンセティックトラフィックで本番環境を監視
問題を検知したらCW Alarm→SNSを経由して
LambdaをInvokeLambdaでステージの
トランジションを無効化
![Page 48: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/48.jpg)
継続的デリバリーテクニック
1. 本番環境の継続的監視
2. デプロイメントヘルスチェック
3. デプロイ単位のセグメンテーション
4. プロダクション昇格の無効化
5. BlackDayゲート
![Page 49: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/49.jpg)
BlackDayゲート
ビジネス的にセンシティブな時期/時間を考慮する
✤キャンペーン期間中など、ビジネス的にセンシティブなタイミングに問題が起きると大きな機会損失につながる
センシティブな時間(BlackDay)はデプロイを停止する
1. パイプラインにBlackDayカレンダーを導入する
2. BlackDay中はApproveアクションでデプロイを止める
3. BlackDay期間以外は自動的にApproveする
Requirement
Implement
![Page 50: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/50.jpg)
リリースプロセス + BlackDayゲート
Synthetic Traffic
CodeDeploy
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
Deploy-AZ-3
CodeDeploy
IntegTest
End2EndTester
![Page 51: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/51.jpg)
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
CheckBlackDays
Approval
Synthetic Traffic
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
Deploy-AZ-3
CodeDeploy
IntegTest
End2EndTester
リリースプロセス + BlackDayゲート
Black-Dayゲート
![Page 52: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/52.jpg)
Reference Architecture – BlackDayゲート
Source
MyAppSource
CodeCommit
Build
MyAppBuild
Build
Deploy
BlackDayCheck
Approval
ProductionDeploy
CodeDeploy
SNS topic Lambda Function
registerDeployment
Lambda Function
processTimeWindows
DynamoDB
CloudWatch
Events (1m)
https://github.com/awslabs/aws-codepipeline-time-windows
Approvalアクションに入ったらSNS経由で
Lambdaを実行
DynamoDBにApprovalレコード
を格納
Black-DayでなければなければCodePipelineに対して
Approveを実行
Lambda内でApprovalレコード
をチェック
![Page 53: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/53.jpg)
まとめ
![Page 54: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/54.jpg)
ソースコードのバージョン管理
ビルド自動化
ワークフロー管理
デプロイ自動化
AWS CodeCommit
AWS CodeBuild
AWS CodeDeploy
AWS CodePipeline
AWS CloudFormation AWS Elastic Beanstalk
CI/CDパイプラインを実現するAWSサービス
AWS CodeStar
マネージドサービスを使えば簡単にCI/CDを実現するツールが利用できる
![Page 55: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/55.jpg)
継続的デリバリープロセス:ベースライン
MyApp
CodeCommit
Source
Build
CodeBuild
Build
DeployToInteg
CodeDeploy
Integration
IntegTest
End2EndTester
DeployToProd
CodeDeploy
Production
CodeDeploy
![Page 56: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/56.jpg)
Production
CanaryDeploy
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-2
CodeDeploy
CheckBlackDays
Approval
Synthetic
Traffic
CodeDeploy
PostDeployTest
Approval
Deploy-AZ-1
CodeDeploy
Deploy-AZ-3
CodeDeploy
IntegTest
End2EndTester
継続的デリバリープロセス:ゴール
シンセティックトラフィック監視
デプロイメントヘルスチェック
セグメンテーション/ポストデプロイテスト
プロダクション昇格の無効化
Black-DayゲートCodePipelineをカスタマイズすることで
ビジネスに最適なCI/CDパイプラインが作れる
![Page 57: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/57.jpg)
関連リソース
✤関連セッション(Dev Day)
✤Docker コンテナへの継続的デプロイメント on AWS 〜CodeCommit, CodeBuild, CodePipeline, CloudFormation, ECR, ECS を活用した CI/CD 〜
✤DevSecOps on AWS - Policy in Code
✤サーバーレスアプリケーションのための CI/CD パイプライン構築
✤CI/CDホワイトペーパーpracticing-continuous-integration-continuous-delivery-on-AWS.pdf
✤AWS クラウドサービス活用資料集https://aws.amazon.com/jp/aws-jp-introduction/
![Page 58: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/58.jpg)
本セッションのFeedbackをお願いします
受付でお配りしたアンケートに本セッションの満足度やご感想などをご記入くださいアンケートをご提出いただきました方には、もれなく素敵なAWSオリジナルグッズをプレゼントさせていただきます
アンケートは受付、パミール3FのEXPO展示会場内にて回収させて頂きます
![Page 59: AWS マネージドサービスで実現する CI/CD パイプ …...本セッションのテーマ 継続的インテグレーション(CI)と継続的デリバリー(CD) 本セッションに含まれるもの](https://reader033.vdocuments.site/reader033/viewer/2022042405/5f1c68e4418eef585f42aa2e/html5/thumbnails/59.jpg)