導入
コードを直すたびに、手作業でビルドしてサーバーにアップロードしていては、時間もかかりミスも起きます。この一連の流れを自動化する考え方がCI/CDです。
説明
CI(継続的インテグレーション)は、コードの変更をこまめに統合し、自動でビルド・テストして壊れていないか確かめること。CD(継続的デリバリー/デプロイ)は、そこから先の本番環境への配信までを自動化することです。
AWSでは、この流れを担当するサービスが工程ごとに分かれています。
| サービス | 担当する工程 |
|---|---|
| AWS CodeCommit | ソースコードを保管するGitリポジトリ(保管) |
| AWS CodeBuild | ソースをビルドし、テストを実行する(ビルド・テスト) |
| AWS CodeDeploy | ビルド結果をEC2・Lambda・ECSなどへ配布する(デプロイ) |
| AWS CodePipeline | 上の工程を一本のパイプラインとしてつなぎ、自動で流す(全体の進行役) |
| AWS CodeArtifact | ライブラリ(パッケージ)を保管・共有するリポジトリ |
| Amazon ECR(Elastic Container Registry) | コンテナイメージを保管するリポジトリ |
flowchart LR
Dev["開発者がpush"] --> CC["CodeCommit(保管)"]
CC --> CP["CodePipeline(進行役)"]
CP --> CB["CodeBuild(ビルド・テスト)"]
CB --> CD["CodeDeploy(配布)"]
CD --> Env["EC2 / ECS / Lambda"]
デプロイの方法にも名前が付いています。ブルー/グリーンデプロイは、新旧2つの環境を用意して切り替える方式で、問題があればすぐ元に戻せます。カナリアリリースは、まず少数の利用者にだけ新版を出して様子を見る方式です(第6章のRoute 53の加重ルーティングでも実現できます)。
読んでみよう
「保管=CodeCommit」「ビルド=CodeBuild」「配布=CodeDeploy」「全体をつなぐ=CodePipeline」。名前がそのまま役割になっているので、工程の順番とセットで覚えましょう。