パイプラインの構築(その2)

【連載】

AWSで実践! 基盤構築・デプロイ自動化

【第14回】パイプラインの構築(その2)

[2019/09/26 08:00]川畑 光平 ブックマーク ブックマーク

開発ソフトウェア

本連載では、マイクロサービスアーキテクチャでの継続的デリバリ(CD:Continuous Delivery:CD)を以下のようなパイプラインで実装する方法について、解説を進めています。

本連載で実装を進めている継続的デリバリのパイプライン

前回は、バックエンドのマイクロサービスアプリケーションをビルドし、コンテナイメージを作成してDockerHubへプッシュするパイプライン処理を構築しました。今回は、プッシュしたコンテナイメージをプロダクションとほぼ同等のステージング環境にあるECSクラスタ上にデプロイするパイプラインを構築します。

マイクロサービスのコンテナイメージをデプロイ

  1. ECSクラスタ上にアプリケーションコンテナを実行させる命令を発出します。
  2. ECSエージェントが、前回プッシュしたコンテナをECSクラスタ上にプルします。
  3. ECSクラスタ上でアプリケーションコンテナが実行されます。

マイクロサービスのコンテナイメージをデプロイ

事前準備:マイクロサービスのステージング環境の構築

パイプラインの設定を行う前に、マイクロサービスをデプロイする先であるステージング環境のアプリケーションロードバランサ、ECSクラスタ、タスク定義、サービスの構築を行います。それぞれの作成方法は、連載「AWSで作るクラウドネイティブアプリケーションの基本」の各回で解説した手順と同様です。

ただし、今回の場合、以下の設定部分に留意が必要です。

設定箇所 設定内容 説明
基本設定:ECSタスク定義 タスクサイズ:タスクメモリ SpringBootアプリケーションであれば1024MB以上を目処に設定したほうがベターです。起動時間がかかり、ヘルスチェックがNGになる可能性があります
基本設定:ECSタスク定義 タスクサイズ:タスクCPU 0.25~0.5 vcpuをめどに設定します。ECSクラスタのスペックにもよりますが、小さすぎると上記のタスクメモリの設定同様、起動に時間がかかり、ヘルスチェックがNGになる可能性があります。逆に大きすぎると、パイプライン処理のコンテナ再起動時にリソースが足りず、エラーとなる可能性があります
基本設定:ECSタスク定義 コンテナの編集:コンテナ名 前回作成した「buildspec.yml」のアーティファクトで指定した「imagedefinitions.json」のname属性と一致した名前を設定する必要があります
基本設定:ECSタスク定義 コンテナの編集:イメージ 「buildspec.yml」および「SystemsManagerParameterStore」で環境変数として設定した値のイメージ名とバージョンを指定します

タスクとコンテナの定義の設定

マイクロサービスのステージング環境へのデプロイパイプラインの設定

前回作成したベースのパイプラインに、ステージング環境として構築したECSクラスタにマイクロサービスをデプロイするパイプラインを追加します。 CodePipelineサービスメニューから、前回作成したパイプラインを選択し、「編集する」ボタンを押下して末尾にある「ステージを追加する」ボタンを押下します。

ステージの追加

「アクションを追加する」ボタンを押下して、以下の要領でステージングデプロイアクションを設定します。

  • アクション名:100文字内の任意のアクション名を設定
  • アクションプロバイダー:Amazon ECSを選択
  • リージョン:VPC及びECSクラスタを構築したリージョンを選択
  • 入力アーティファクト前回、作成したマイクロサービスのビルドパイプラインのアウトプットアーティファクトを指定(デフォルトでは、BuildArtifact)
  • クラスタ名:前節で構築したECSクラスタを設定
  • サービス名:前節で起動した、同じコンテナイメージで起動しているECSサービスを選択
  • イメージ定義ファイル:前回のビルドパイプライン処理でアウトプットしたimagedefinitions.jsonのファイル名を設定

※ 入力アーティファクトは、前回のパイプラインの出力アーティファクトですが、S3上に実体となるファイルが保存されています。

アクションの設定

作成が完了したら、「変更をリリースする」ボタンを押下して、パイプラインを実行し直してみましょう。グリーンで表示されれば、正常完了です。ECSタスクのリビジョンが上がり、ECSサービスのイベントログでは、コネクションドレイニングされて、実行コンテナが入れ替わったことがわかります。

グリーンで表示されれば正常完了

ECSサービスのイベントログ

これでBakcendサービスのコンテナイメージをステージング環境へデプロイするパイプラインが完成し、プッシュしたコンテナがECSクラスタ上で起動しました。次回以降は、Web(BFF)アプリケーションをビルドし、Seleniumを使用したE2Eテストを自動実行するパイプラインを作成します。

著者紹介


川畑 光平(KAWABATA Kohei) - NTTデータ 課長代理

金融機関システム業務アプリケーション開発・システム基盤担当を経て、現在はソフトウェア開発自動化関連の研究開発・推進に従事。

Red Hat Certified Engineer、Pivotal Certified Spring Professional、AWS Certified Solutions Architect Professional等の資格を持ち、アプリケーション基盤・クラウドなどさまざまな開発プロジェクト支援にも携わる。2019 APN AWS Top Engineers & Ambassadors選出。

本連載の内容に対するご意見・ご質問は Facebook まで。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

クラウド時代の契約/SaaS調達はここが違う! ベンダーとの交渉の要点

クラウド時代の契約/SaaS調達はここが違う! ベンダーとの交渉の要点

IT調達において、クラウドはもはや避けられない選択肢だ。だが、オンプレミスの場合とは異なる契約上の確認ポイントが把握できていないケースが少なくない。8月30日に行われた「ガートナー ITソーシング、プロキュアメント、ベンダー & アセット・マネジメント サミット 2019」では、ガートナー 海老名剛氏が登壇。クラウドベンダーとの契約に臨む際の交渉ポイントにつ…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします

会員登録(無料)

注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
知りたい! カナコさん 皆で話そうAIのコト
教えてカナコさん! これならわかるAI入門
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

ページの先頭に戻る