はじめに
AWSのインフラ屋さんをやっていた時、「いつかシステム担当をすることになったら、Codeシリーズを駆使してシステムのCICDをやるから、学んでおいた方がいい」という言葉を貰い、勉強してから3か月後、まさかのシステム担当になっていました。ということで、今回は自分の復習も兼ねて
- 備忘録もかねてCICDとはなんなのか?
- AWSのCICD=Codeシリーズっていっぱいあるけど、どれがどの役割を果たしているのか?
について記事にまとめていこうと思います!
CICDとは?
CICDとは、「継続的インテグレーション (Continuous Integration) と継続的デリバリー (Continuous Delivery)」により、ソフトウェアの変更を常にテストして自動的に本番環境でリリース可能な状態にするものです。
何言うてんねんコイツと思った方、実際に、多くのユーザが使用しているアプリで「UI等の仕様を修正する」ことになり、それをリリースすることになったとします。ここでは某CMになぞってあるときないときで解説します。
CICDがないときー!
CICDがない場合は、以下のように全て人の手によってリリースが行われます。
- リリースのための手順書を作成する
- 検証環境で手順書に従い、リリースを行い、問題がないか確認する
- 問題があった場合、もう一度1. に戻り、ない場合は、再度手順書に従って商用環境にリリースする
- 商用環境でも問題がないことを確認する
しかし、これだと、人為的ミスが発生しそうですよね。最近のアプリは非常に複雑な機能を持つことが多いです。その場合、リリースの手順もかなり複雑なものになると思います。そんな時、検証環境でどれだけ完璧に手順をこなせても、実際は、商用環境で再度同じ手順を踏むので、「確実に成功する」という保証は担保されていません。また、リリースは一発勝負なので、問題があった場合は切り戻しをすることになります。特にリリース後、問題が発覚して切り戻すとなると、かなり労力がかかりますよね。。。
CICDがあるときー!
CICDは、これらの人為的ミスが発生しそうなリリース作業を「あとは、リリースしてください!」という状態まで自動で持って行ってくれます。
- ユーザは変更箇所についてプロジェクトのコードを管轄しているところ (gitなど) にプッシュする
- 仮想環境に変更部分のリリースを自動で行い、問題ないか自動で検証する
- 商用環境の中で現行の場所 (Blue環境) とは異なる場所 (Green環境) にリリース分を自動で構築し、問題ないか自動で検証する
- セットアップおよび検証結果をもとに、ユーザに対してBlueからGreenへの切り替えについて承認を待機する
- ユーザは切り替えを承認し、自動的にGreen環境へ切り替える。この時、Blue環境は戻せるように指定時間の間は商用環境に残す。
これだと、人為的ミスはなくなると言っても過言ではないですよね!そして、この図では、手順2がCI、手順3~5がCDに当たります。
また、切り戻しについても手順5でBlue環境を残しているので、再度Blueに環境を戻すだけで元通りになります。以上のように商用環境に2つの環境を用意し、リリースなどのたびにその環境を切り替える (元の環境を残しておく) 戦略をBlue/Greenデプロイと呼び、CDにおいて重要な考えになっています。
AWSにおけるCICDサービス
AWSにおいて、上で説明したCICDを実現するサービスは、「Codeシリーズ」です。
CodeシリーズによるCICDがあるときー!
- ユーザは変更箇所についてCodeCommitにプッシュする
-
CodeBuildは、
buildspec.yml
などの作成した手順に従って、仮想環境でビルドを行い、成果物 (アーティファクト) を出力する - CodeDeployは、CodeBuildで出力されたアーティファクトに従って、Green環境にアプリを構築し、問題ないか検証する
- セットアップおよび検証結果をもとに、ユーザに対してBlueからGreenへの切り替えについて承認を待機する
- ユーザは切り替えを承認し、自動的にGreen環境へ切り替える。この時、Blue環境は戻せるように指定時間の間は商用環境に残す。
以上のようなリソースによってCICDを実現することが出来ます。また、この1~5の手順を作成するために、CodePipelineがあります。
CodeBuildによるCIを行うためのbuildspec.yml
については以下の記事が参考になります!
また、CodeCommitは、2024年7月時点で新規受付を停止しています。そのため、新しくCICDをするためには、GitHubやGitLabといったGitプロバイダを使用することになります。(7月以前に使用していた方は継続して利用可能です)
詳しくはAWS公式の以下に記載されていますので、ご確認ください!!!
まとめ
開発のCICDがあるときー!:わっはっはっはっは! (勝手にアプリ構築してくれるし、切り戻しも簡単やでー!)
ないときー...:あぁ...。(この量のリリースを手作業で!?)
ぜひ、CICDを覚えて使いましょう!!!