中級カリキュラム:5つのコンテンツ
ステップ1:ソースコード管理とコンテナ化の基礎を学ぶ
内容:GitHub(CodeStar Connections経由)、Docker、Amazon ECRを使ったソースコード管理とコンテナイメージ管理
例え:料理のレシピをGitHubに記録し、AWSと安全に連携させ、その料理を冷凍食品(Dockerコンテナ)にして保管庫(ECR)に保存する作業
詳細説明:
- GitHubリポジトリを作成し、サンプルNext.jsアプリケーションのソースコードをバージョン管理します
- AWS CodeStar Connectionsを使用して、GitHubとAWSを安全に連携させる方法を学びます
- Dockerfileを作成し、Next.jsアプリケーションをコンテナ化する方法を学びます
- Amazon ECR(Elastic Container Registry)リポジトリを作成し、コンテナイメージを安全に保管します
- ローカル環境でDockerコンテナを動かし、「どこでも動く」アプリケーションの仕組みを理解します
- IaCカリキュラムで構築したECS環境との連携を確認します
ステップ2:AWS CodePipelineとCodeBuildで自動ビルド・ECRプッシュを実現する
内容:AWS CodePipeline、AWS CodeBuild、ECRへの自動プッシュ、IAMロールによる安全な認証
例え:工場の自動化ラインを作り、原材料(ソースコード)が届いたら自動的に製品(Dockerイメージ)を作り、倉庫(ECR)に保管する仕組み
詳細説明:
- AWS CodePipelineを作成し、ソースステージでGitHub(CodeStar Connections経由)を設定してCI/CDパイプラインの基礎を構築します
- AWS CodeBuildプロジェクトを設定し、buildspec.ymlファイルでビルド手順を定義します
- IAMロールを使用してCodeBuildからECRへのプッシュ権限を安全に設定します
- GitHubへのプッシュをトリガーに、自動的にDockerイメージがビルドされる仕組みを実装します
- ビルドされたDockerイメージをECRに自動プッシュする設定を行います
- CloudWatch Logsでビルドログを確認し、問題発生時のデバッグ方法を学びます
ステップ3:自動テストを統合する
内容:ユニットテスト、統合テストを自動実行し、品質を担保したビルドプロセスの構築
例え:工場で製品を出荷する前に、自動検査装置で品質チェックを行い、不良品は出荷しない仕組み
詳細説明:
- Next.jsアプリケーションにユニットテスト(Jest)を追加し、コードの品質を自動的に検証する方法を学びます
- VPC内のプライベートなALBとECSサービスにアクセスする統合テストを追加し、CodeBuildのVPC設定を構成します
- buildspec.ymlでテストフェーズを定義し、テスト失敗時にパイプラインを自動停止させる設定を行います
- CodeBuild Test Reportsを使用してテストカバレッジレポートを生成し、コード品質を可視化します
- CloudWatch Logsでテスト実行ログを確認し、問題発生時のデバッグ方法を学びます
ステップ4:IaC環境への自動デプロイを実現する
内容:IaCカリキュラムで構築したECS on Fargate環境への自動デプロイ、ECSタスク定義の更新
例え:試食用のサンプル商品を自動的に店舗(IaCで構築したECS環境)に並べ、問題がないか最終確認する作業
詳細説明:
- IaCカリキュラムで構築したECSクラスター、サービス、タスク定義を確認します
- AWS CodePipelineにデプロイステージを追加し、CodeDeployアクションを設定します
- buildspec.ymlでECSタスク定義ファイルとAppSpec.yamlファイルを出力し、新しいコンテナイメージをデプロイする方法を学びます
- CodeDeployのECSデプロイアクションを使って、プライベートサブネット内のECSサービスにデプロイします
- デプロイ後のヘルスチェックを設定し、問題があれば自動ロールバックする仕組みを実装します
- CloudWatch Logsでデプロイ後のアプリケーションログを確認し、問題発生時のデバッグ方法を学びます
ステップ5:Blue/Greenデプロイと監視・通知の統合
内容:ECS Blue/Greenデプロイ戦略、CloudWatchアラーム、Slack通知の統合
例え:店長の承認を得てから、新商品を本店(本番環境)に並べ、問題があればすぐに前の商品に戻せる仕組みと、異常を即座に店長に通知する仕組み
詳細説明:
- AWS CodeDeployを使ったECS Blue/Greenデプロイ戦略を実装し、無停止で新バージョンに切り替える方法を学びます
- ロールバック機能を実装し、問題発生時に即座に前のバージョンに戻す仕組みを構築します
- CloudWatchアラームを設定し、デプロイ後の異常(エラー率、レスポンスタイム)を監視します
- Amazon SNSとSlackを連携し、デプロイ状況や異常を自動通知する仕組みを構築します
- CodePipelineの手動承認アクションを追加し、本番環境への段階的なリリースプロセスを構築します
- 複数環境(dev/stg/prod)用のパイプラインを作成し、環境ごとの安全なデプロイフローを実現します
学習完了後の次のステップ
この学習カリキュラムを完了し、最終アセスメント(テスト)に合格すると以下のステップに進むことができます。
- Kubernetes(EKS)を使った、よりスケーラブルなコンテナオーケストレーションを学ぶ
- マルチリージョン対応のCI/CDパイプラインを構築する
- IaCカリキュラムで学んだAWS CDKと統合し、インフラ変更も自動化する(CDK Pipelines)
中級カリキュラムの勉強の仕方
学ぶ前に以下にアクセスできるかを確認しましょう。
- AWS 中級カリキュラム(CI/CD Pipeline Construction)のサイト
- AWSコンソール
- GitHubアカウント
- Git CLI(ローカル開発用)
- IaCカリキュラムで構築したECS on Fargate環境
- 学ぶ
- それぞれのステップに記載してある手順に従いAWS CodePipeline、CodeBuild、CodeDeployを使ったCI/CDパイプラインを構築します。
- 用語やサービス名がわからない場合には学習カリキュラム内の「用語集、参考資料」を見てみましょう。
- 記載の内容や概念が理解できない場合には専用Slackにて質問をしてください。より初級レベルの知識を学びたい方は以下がおすすめの参考書籍となります。
- 学んだことの確認
- それぞれのステップには以下3つの確認項目が用意されていますのでそれぞれに回答を専用Slack上で提出してください。
- 実践チェック:CodePipelineの実行結果とデプロイされたアプリケーションで証明しよう
- 提出方法:CodePipelineの実行画面とデプロイされたアプリケーションのURLをキャプチャし、提出
- 構成図による理解度チェック
- 提出方法:CI/CDパイプラインの構成図を作成し、提出
- 理解度チェック:なぜ?を考えてみよう
- 提出方法:質問の回答を提出
- アセスメント
- ステップ5までの学習が完了すると、最終アセスメントへ進みます。
- 最終アセスメントはオンラインで講師を相手にホワイトボーディングを行います。
- ホワイトボーディングとは相手がやりたいたいことをヒアリングし、それを実現するためのCI/CD構成をその場で図示しながら作り上げていくロープレ形式のセッションです。
- 最終アセスメントを実施するかどうかは皆さんにお選びいただけます。実施希望の方は専用チャネルでManagerまでご連絡ください。
Last updated on