本連載では、マイクロサービスアーキテクチャでの継続的デリバリ(Continuous Delivery:CD)を以下のようなパイプラインで実現していきます。
前回は(4)E2Eテストが完了したWeb(BackendForFrontend:BFF)アプリケーションのコンテナイメージをビルドして、DockerHubへプッシュするパイプラインを構築しました。 続く今回は、そのコンテナをステージング環境へデプロイするパイプラインを構築します。
パイプラインの設定を行う前に、BFFアプリケーションをデプロイする先であるステージング環境のアプリケーションロードバランサ、ECSクラスタ、タスク定義、サービスの構築を行います。 作成方法の要領は、以下の手順と同様です。
上記の設定では、マイクロサービスにおけるステージング環境の構築と同様、事前準備:マイクロサービスのステージング環境の構築 の表の記載してある、 タスクのメモリ、CPU、コンテナ名、イメージ設定で同様の留意が必要です。加えて、BFFアプリケーションは、マイクロサービスを呼び出すため、 バックエンドサブネットのロードバランサのDNSを applicaiton.yml で環境変数から取得するよう定義しています。 そのため、このアプリケーションロードバランサのDNSを、BFFアプリケーションコンテナの実行時に環境変数として渡すように、下記の要領に従って設定します。 コンテナ実行時に参照する環境変数はECSタスク定義で設定しておくことが可能ですが、ここでは更に、SystemsManager ParameterStoreを経由して環境変数を取得するものとし、ECSサービスを実行するサービスロールにSSMのアクセス権限を付与しておきましょう。 このように設定しておくことで、ステージング・プロダクションともに同一のコンテナイメージで、コンテナ実行時の環境変数を切り替えて、テストが完了したステージング環境のコンテナイメージをそのままプロダクション環境で利用できるようになります。
設定箇所 | 設定内容 | 説明 |
ECSタスク定義:コンテナの追加 | 環境:環境変数 | バックエンドマイクロサービスへパスルーティングするアプリケーションロードバランサのDNSをSERVICE_DNS環境変数として設定します。ステージング環境での具体的な設定値は、SystemsManagerParameterStoreで定義した"SERVICE_DNS_STAGING"から取得するよう、ValueFromフィールドを設定します。 |
CodePipelineの設定を行う前に、前節のECSで使用する環境変数を定義しておきます。設定の要領は、 AWS Systems Manager Parameter Storeの概要と設定 と同様です。以下のパラメータを定義します。
また、前節で設定しているECSのタスク実行IAMロールにSystemsManagerParameterStoreのアクセス権限を付与しておきましょう。
これまで作成してきたCodePipelineを編集して、BFFアプリケーションのコンテナイメージをデプロイ設定します。 AWSコンソールの「CodePipeline」サービスを選択し、パイプラインを選択して、「編集する」ボタンを押下します。
「ステージを追加する」ボタンを押下し、新たなステージを追加します。
任意のステージ名を設定します。
コンテナイメージをデプロイするための設定を行います。以下の要領でアクションを設定し、「完了」ボタンを押下します。
設定完了後、「変更をリリースする」ボタンを押下し、デプロイが問題なく完了するか確認します。
これでBFFアプリケーションをステージング環境へデプロイするパイプラインが作成できました。次回は、AmazonSNSへのトピックの作成とパイプラインの一時停止を行い、ステージング環境で実行したテスト結果を確認し、プロダクション環境へのリリースを承認するプロセスを行うパイプラインを作成します。
川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理
金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。
Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなど様々な開発プロジェクト支援にも携わる。