デモ
概要
ECS / CodeDeploy を使い、2 つのサービスを自動デプロイしてみます。
Web サービスは ECS を使ったローリングアップデート、
API サービスは CodeDeploy を使った停止時間ありのアップデート。
デプロイの流れ
- アプリケーションソースコードを修正
- GitHub へ
- リリースしたいタイミングで タグを打つ
- CircleCI で Docker イメージ生成
- テストが通ったら ECR へイメージをプッシュ
- ECS / CodeDeploy によるサービス自動更新
デモアプリ接続先(v1.0)
まずはいずれも、ハローワールドが返ってきます。
アプリバージョンアップ
- 今回は単に
Dockerfile
を書き換えてみます。
(本来ここでソースコードをガリガリ書く) - git で
api-v0.1
などとタグを打ちます。
以上
デモアプリ接続先(v2.0)
Web は v2.0 に、API は画像の推論サービスになりました。
(結局サービス間が繋がってないのはご容赦ください・・)
- Web サービス
http://d3jz5z68tvtraa.cloudfront.net/ - API サービス
curl -XPOST --data-binary @画像.png http://d3jz5z68tvtraa.cloudfront.net/api/classify
補足
今日のコンテンツは公開しています
このリポジトリ何?

こんな構成となる
- CloudFormation テンプレート
- ECS / CodeDeploy への命令を記載した circle.yml
- CodeDeploy の appspec.yml とデプロイ用スクリプト
- Dockerfile や docker-compose.yml
試してみるには
- GitHub と CircleCI にアカウント登録します
- 上記リポジトリを fork し、CircleCI にプロジェクト登録
- CloudFormation でスタック生成
- VPC、SG、ECR =>
/common/provision/cfn-common.yml
- CodeDeploy、ASG、S3、AS =>
/app-api/provision/cfn-codedeploy.yml
- ECS、ASG、ALB、CF =>
/app-web/provision/cfn-ecs.yml
- VPC、SG、ECR =>
-
Outputs
欄を見ながら CircleCI に環境変数設定 -
git push
&git tag
テンプレートだけではできていないこと
デモのために、一部マネコンなどで作業しました。
- API サービスの初期デプロイ(タグ打ち)
- CloudFront ディストリビューションへ、API サービスを追加
破棄するには
CloudFormation スタックを削除してください。
画像推論サーバについて
NVIDIA 社の GPU REST Engine を使っています。
各クラウドのコグニティブ API などとは違い、DL による学習ができ
そのモデルに基づいた推論 を HTTP プロトコルで自前提供できます。
(g2.2xlarge をスポット MAX $0.5/hour で起動設定しているので
試す際にはお気をつけください。高いかも、起動しないかも)