0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSを使ったCICDの仕組みがあるとき・ないとき

Posted at

はじめに

AWSのインフラ屋さんをやっていた時、「いつかシステム担当をすることになったら、Codeシリーズを駆使してシステムのCICDをやるから、学んでおいた方がいい」という言葉を貰い、勉強してから3か月後、まさかのシステム担当になっていました。ということで、今回は自分の復習も兼ねて

  • 備忘録もかねてCICDとはなんなのか?
  • AWSのCICD=Codeシリーズっていっぱいあるけど、どれがどの役割を果たしているのか?

について記事にまとめていこうと思います!

CICDとは?

CICDとは、「継続的インテグレーション (Continuous Integration) と継続的デリバリー (Continuous Delivery)」により、ソフトウェアの変更を常にテストして自動的に本番環境でリリース可能な状態にするものです。

何言うてんねんコイツと思った方、実際に、多くのユーザが使用しているアプリで「UI等の仕様を修正する」ことになり、それをリリースすることになったとします。ここでは某CMになぞってあるときないときで解説します。

CICDがないときー!

CICDがない場合は、以下のように全て人の手によってリリースが行われます。
image.png

  1. リリースのための手順書を作成する
  2. 検証環境で手順書に従い、リリースを行い、問題がないか確認する
  3. 問題があった場合、もう一度1. に戻り、ない場合は、再度手順書に従って商用環境にリリースする
  4. 商用環境でも問題がないことを確認する

しかし、これだと、人為的ミスが発生しそうですよね。最近のアプリは非常に複雑な機能を持つことが多いです。その場合、リリースの手順もかなり複雑なものになると思います。そんな時、検証環境でどれだけ完璧に手順をこなせても、実際は、商用環境で再度同じ手順を踏むので、「確実に成功する」という保証は担保されていません。また、リリースは一発勝負なので、問題があった場合は切り戻しをすることになります。特にリリース後、問題が発覚して切り戻すとなると、かなり労力がかかりますよね。。。

CICDがあるときー!

CICDは、これらの人為的ミスが発生しそうなリリース作業を「あとは、リリースしてください!」という状態まで自動で持って行ってくれます。

image.png

  1. ユーザは変更箇所についてプロジェクトのコードを管轄しているところ (gitなど) にプッシュする
  2. 仮想環境に変更部分のリリースを自動で行い、問題ないか自動で検証する
  3. 商用環境の中で現行の場所 (Blue環境) とは異なる場所 (Green環境) にリリース分を自動で構築し、問題ないか自動で検証する
  4. セットアップおよび検証結果をもとに、ユーザに対してBlueからGreenへの切り替えについて承認を待機する
  5. ユーザは切り替えを承認し、自動的にGreen環境へ切り替える。この時、Blue環境は戻せるように指定時間の間は商用環境に残す。

これだと、人為的ミスはなくなると言っても過言ではないですよね!そして、この図では、手順2がCI、手順3~5がCDに当たります。
また、切り戻しについても手順5でBlue環境を残しているので、再度Blueに環境を戻すだけで元通りになります。以上のように商用環境に2つの環境を用意し、リリースなどのたびにその環境を切り替える (元の環境を残しておく) 戦略をBlue/Greenデプロイと呼び、CDにおいて重要な考えになっています。

AWSにおけるCICDサービス

AWSにおいて、上で説明したCICDを実現するサービスは、「Codeシリーズ」です。

CodeシリーズによるCICDがあるときー!

  1. ユーザは変更箇所についてCodeCommitにプッシュする
  2. CodeBuildは、buildspec.ymlなどの作成した手順に従って、仮想環境でビルドを行い、成果物 (アーティファクト) を出力する
  3. CodeDeployは、CodeBuildで出力されたアーティファクトに従って、Green環境にアプリを構築し、問題ないか検証する
  4. セットアップおよび検証結果をもとに、ユーザに対してBlueからGreenへの切り替えについて承認を待機する
  5. ユーザは切り替えを承認し、自動的にGreen環境へ切り替える。この時、Blue環境は戻せるように指定時間の間は商用環境に残す。

以上のようなリソースによってCICDを実現することが出来ます。また、この1~5の手順を作成するために、CodePipelineがあります。
CodeBuildによるCIを行うためのbuildspec.ymlについては以下の記事が参考になります!

また、CodeCommitは、2024年7月時点で新規受付を停止しています。そのため、新しくCICDをするためには、GitHubやGitLabといったGitプロバイダを使用することになります。(7月以前に使用していた方は継続して利用可能です)
詳しくはAWS公式の以下に記載されていますので、ご確認ください!!!

まとめ

開発のCICDがあるときー!:わっはっはっはっは! (勝手にアプリ構築してくれるし、切り戻しも簡単やでー!)
ないときー...:あぁ...。(この量のリリースを手作業で!?)

ぜひ、CICDを覚えて使いましょう!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?