1. はじめに
本記事はCI/CD
を学習で実際に手を動かす前の前提知識を簡単にまとめた記事となります。
注意: コードを書いたり、AWSのマネジメントコンソールを操作したりすることをまとめてはいません。
2. 記事の対象読者
以下のような方を想定した記事になっています。
-
CI/CD
って何? -
CI/CD
って聞いたことあるけど雰囲気しかわかっていない -
CI/CD
きちんと学習してなかったけどそろそろきちんと学習・理解したい
3. CI/CDとは
CI/CDの概要については以下の記事を引用しています。
CIとは
CIはContinuos Integration
(継続的インテグレーション)の略称。
コード変更がマージされると自動化されたビルドやテストを実行する手法のこと。
コード変更を共有ソースコードリポジトリに自動的かつ頻繁に取り込む手法
CDとは
CDはContinuos Delivery
(継続的デリバリー)またはContinuos Deployment
(継続的デリバリー)の略称。
継続的デリバリー
CI でのビルドおよびユニットテストと統合テストの自動化に続いて、検証済みコードのリポジトリへのリリース
引用: Red Hat様のCI/CD とは記事より
継続的デプロイメント
継続的デプロイメントは継続的デリバリーを拡張したものであり、リポジトリから本番環境への開発者による変更のリリースを自動化し、顧客が使用できるようにする
継続的デリバリーと継続的デプロイメントはどう違う
時には同じ意味で使用されることもあります。どちらもパイプラインのさらなる段階の自動化に関するものですが、自動化の程度を示すために切り離して使用される
要は継続的デリバリー
の段階だとユーザーからは確認できない段階で継続的デプロイメント
の段階ではユーザーまでコード変更が提供されているということのようです。CI/CD
全体を指す場合では意識しないでも良さそうですが、責務や範囲を意識しなければならないケースだと使い分ける必要がありそうです。
4. CI/CDに関わる主なサービス
GitHub Actinons
ワールドクラスのCI / CDですべてのソフトウェアワークフローを簡単に自動化できます。 GitHubから直接コードをビルド、テスト、デプロイでき、コードレビュー、ブランチ管理、問題のトリアージを希望どおりに機能させます。
言わずと知れ渡っているCI/CDのサービス。採用されている企業様も多いと思います。
ただ、CI/CDのみで完結することも可能ですが、GitHub Actions
+ AWS
のサービスを組み合わせてCI/CDを環境を構築することでIAMにより権限を詳細に管理したいというニーズもあるようです。
ECR (Amazon Elastic Container Registry)
Amazon Elastic Container Registry (Amazon ECR) は、ハイパフォーマンスホスティングを提供するフルマネージドコンテナレジストリであるため、アプリケーションイメージとアーティファクトをどこにでも確実にデプロイすることができます。
ECS (Amazon Elastic Container Service)
Amazon Elastic Container Service (Amazon ECS) はフルマネージドコンテナオーケストレーションサービスであり、コンテナ化されたアプリケーションをより効率的にデプロイ、管理、スケールするのに役立ちます
引用元: Amazon ECS(Docker コンテナを実行および管理)| AWS -Amazon Web Services, Inc.
Fargate
コンテナ向けサーバーレスコンピューティング
引用元: AWS Fargate(サーバーやクラスターの管理が不要なコンテナの使用)| AWS -Amazon Web Services, Inc.
今回のCI/CDで学習したorするサービスというだけで他にも様々なコンテナ向けサービスがあります。
5. CI/CDの大まかな流れ
アーキテクチャ図でわかりやすいように整理してみるとこんな感じでしょうか?
- トリガーとなるイベントが検知される *
push
など - Docker Imageをビルドする
- ビルドされたDocker ImageをAmazon ECRにプッシュする
- AWS CLIでタスク定義を作成
- タスク定義でサービスをデプロイ
6. 最後に
簡単にですが、手を動かす前にCI/CDの概要を調べてまとめました。
次の執筆予定の記事ではGitHub Actionsを利用してサービスをデプロイするところまで書きたいと思っています。
(アーキテクチャ図書くの難しい、でも書けるようになりたい。)