ECSとSpotFleetで新規ビジネスのトライアル

48
AWSの EC2 Container Service(ECS)と SpotFleetで 新規ビジネスのトライアル NTTソフトウェア 須藤 悠

Transcript of ECSとSpotFleetで新規ビジネスのトライアル

Page 1: ECSとSpotFleetで新規ビジネスのトライアル

AWSの

EC2 Container Service(ECS)と

SpotFleetで

新規ビジネスのトライアルNTTソフトウェア

須藤悠

Page 2: ECSとSpotFleetで新規ビジネスのトライアル

あるいは

48時間AWSにて、斯く戦えり

Page 3: ECSとSpotFleetで新規ビジネスのトライアル

はじめに

技術者として技術的な知見の共有を目的とするもので、

NTTソフトウェア株式会社の公式見解ではありません。

スライド中に使用している写真は

●発表者本人が撮影したもの

●弊社社員が撮影したもの

●CC0ライセンスで公開されているもの

のいずれかで、権利上問題ないものです。

Page 4: ECSとSpotFleetで新規ビジネスのトライアル

自己紹介

Page 5: ECSとSpotFleetで新規ビジネスのトライアル

須藤悠 / Yu, SUDO

所属:NTTソフトウェア

✘ ソフトウェア生産技術センター

Grails推進室 “Grails Advocate”

ソフト道場 研修講師

✘ 戦略ビジネス特区新ビジネス創出推進ユニット

サポータ

✘入社10年目

✘ ピザ大好き

Page 6: ECSとSpotFleetで新規ビジネスのトライアル

ピザ大好き(再掲)

年末年始にピザを食すこと9回

トマトとチーズ♥それはすなわちピザとイコールであることを意味します

などと意味不明な供述をしておりますが

Page 7: ECSとSpotFleetで新規ビジネスのトライアル

みなさんご存知のように

4月から社名変わります

Page 8: ECSとSpotFleetで新規ビジネスのトライアル

超絶ホワイト企業サビ残など絶対に許されない

在宅勤務もできるし椎間板ヘルニア発症して座れなくなったとき

6週間有給の病気休暇くれた※医師の診断書による※ボーナスはちょっと減りました

Page 9: ECSとSpotFleetで新規ビジネスのトライアル

で技術専門職をやっております

そんな

Page 10: ECSとSpotFleetで新規ビジネスのトライアル

Grails推進室フルスタックWebアプリケーションフレームワーク

Grailsを推進・サポートする組織

最近はGrailsに限らず多様な技術支援を提供している

Page 11: ECSとSpotFleetで新規ビジネスのトライアル

心得:己の才能を開花すべし知恵を貪欲に習得すべし己の習得した知識を磨くべし

ソフト道場実践中心の研修を提供する組織

Grails/AWS/Ansible等のカリキュラムで講師を務める

Page 12: ECSとSpotFleetで新規ビジネスのトライアル

戦略ビジネス特区俊敏かつ効率的に新ビジネスを創出する組織ワールドビジネスサテライトの取材を受けたことも

今回の話はここでのプロジェクト

Page 13: ECSとSpotFleetで新規ビジネスのトライアル

戦略ビジネス特区での新ビジネス創出

戦略ビジネス特区では、新規ビジネス立ち上げの流れを

大きく5つのフェーズ “Stage0” ~ “Stage4” に分けて、

大きな失敗をする前に、軌道修正できる仕組みをとっています。

Stage-4Stage-3Stage-2Stage-1Stage-0新ビジネス考案 受容性確認と

初期顧客発見実用最小製品開発と初期顧客での評価

市場展開

アイデアソン 事業化プロトタイプ・開発

審査会中止/継続

判断中止/継続

判断

中止/継続判断

お金を払ってでも解決したい顧客ニーズの獲得

顧客開拓

Page 14: ECSとSpotFleetで新規ビジネスのトライアル

戦略ビジネス特区での新ビジネス創出

戦略ビジネス特区では、新規ビジネス立ち上げの流れを

大きく5つのフェーズ “Stage0” ~ “Stage4” に分けて、

大きな失敗をする前に、軌道修正できる仕組みをとっています。

Stage-4Stage-3Stage-2Stage-1Stage-0新ビジネス考案 受容性確認と

初期顧客発見実用最小製品開発と初期顧客での評価

市場展開

アイデアソン 事業化プロトタイプ・開発

審査会中止/継続

判断中止/継続

判断

中止/継続判断

お金を払ってでも解決したい顧客ニーズの獲得

顧客開拓

ここで

AWS使った

Page 15: ECSとSpotFleetで新規ビジネスのトライアル

備蓄品管理 CSR活動

備蓄品安心サポート複数拠点の備蓄品を

一括管理

期限が近づくとメールでアラーム通知

廃棄ではなく、寄付などによる社会貢献

管理サイトから履歴やお勧め情報を活用し、

簡単に追加購入。

簡単登録・見える化

期限管理

社会貢献(寄付)

購入

「備蓄品安心サポート」は、企業の

災害備蓄品の維持管理をサポートし

ながら、購入金の一部を寄付される

仕組みや、期限切れになる前に寄付

することができる仕組みにより、

災害備蓄品の管理と社会貢献を

簡単に両立できます。

備蓄品安心サポート(仮称)管理を簡単に。廃棄削減と寄付で社会貢献!

備蓄品管理と、

CSR活動を

同時に実現!

Page 16: ECSとSpotFleetで新規ビジネスのトライアル

「備蓄品安心サポート」は、企業の

災害備蓄品の維持管理をサポートし

ながら、購入金の一部を寄付される

仕組みや、期限切れになる前に寄付

することができる仕組みにより、

災害備蓄品の管理と社会貢献を

簡単に両立できます。

備蓄品管理と、

CSR活動を

同時に実現!

NTTソフトウェア株式会社戦略ビジネス特区

〒220-0012横浜市西区みなとみらい4-4-5

横浜アイマークプレイス12F

TEL:045-212-7484E-mail:[email protected]

こんな企業様におすすめ

災害備蓄品の管理を楽にしたい

備蓄品を寄付するなど、廃棄を減らし有効活用したい

社会貢献を視野に入れた施策を検討したい

トライアル協業法人様

相日防災株式会社 様

全国フードバンク推進協議会 様

NTTファイナンス 様(調整中)

備蓄品安心サポート(仮称)管理を簡単に。廃棄削減と寄付で社会貢献!

Page 17: ECSとSpotFleetで新規ビジネスのトライアル

プロジェクトの体制

イントラプレナー

企画・渉外チーム

開発・インフラチーム

Androidアプリ開発 Webアプリ開発 AWSインフラ構築

Grails推進室メンバ

※この他にもデザイナ2名が参画しました

Page 18: ECSとSpotFleetで新規ビジネスのトライアル

プロジェクトの体制

イントラプレナー

企画・渉外チーム

開発・インフラチーム

Androidアプリ開発 Webアプリ開発 AWSインフラ構築

40時間

当初与えられたのは

※この他にもデザイナ2名が参画しました

Userアプリ

AdminアプリAPIアプリ

Page 19: ECSとSpotFleetで新規ビジネスのトライアル

指令:

40時間でAWSの環境作って

Page 20: ECSとSpotFleetで新規ビジネスのトライアル

まじかよ

Page 21: ECSとSpotFleetで新規ビジネスのトライアル

面白そう

Page 22: ECSとSpotFleetで新規ビジネスのトライアル

EC2 Container Service(ECS)

を採用した理由

Page 23: ECSとSpotFleetで新規ビジネスのトライアル

「ECS/ECR使うのとEC2と、どっちがいいっすかね先輩」「ECS/ECR使おっか!」

Page 24: ECSとSpotFleetで新規ビジネスのトライアル

ECSを採用した理由

✘ Webアプリ開発者がDockerを使って開発している

✘ 社内検索エンジンや共有ビルド環境もDockerで構築している

✘ 技術支援組織として、常に新しい技術をキャッチアップしたい

✘ そろそろクラウドサービス上でのContainerもやってみたい

✘ ECSはSpotFleetと組み合わせるとコスト効率が良い

✘ ECS/ECRを使うことで、EC2よりも構築・運用が楽になるのでは

✘ 関連サービスがすべてTokyoリージョンでローンチされている

✘ AWSはCLI/SDKが充実してるから大概のことは何とかできる

Page 25: ECSとSpotFleetで新規ビジネスのトライアル

最終的に構築した環境

Page 26: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECS

Admin Service

ECS Cluster

Admin

ALB

API

ALB

User

ALB

API Service User Service

ECR

Route53

TargetGroup

Docker Image

Lambda

CloudWatch

Logs

awslogs agent

SES

email delivery

Page 27: ECSとSpotFleetで新規ビジネスのトライアル

プロジェクトの体制

イントラプレナー

企画・渉外チーム

開発・インフラチーム

Androidアプリ開発 Webアプリ開発 AWSインフラ構築

実際にかかったのは

※この他にもデザイナ2名が参画しました

48時間

Page 28: ECSとSpotFleetで新規ビジネスのトライアル

48時間、どんなことをやったか

Page 29: ECSとSpotFleetで新規ビジネスのトライアル

ざっくり8時間刻みで追います!

Page 30: ECSとSpotFleetで新規ビジネスのトライアル

~8時間

IAM

✘ rootアカウントのMFA設定と開発メンバ用のIAMユーザ発行

CloudTrail

✘全APIログの取得と保存の設定

VPC

✘ VPCとマルチAZなサブネットの作成

ECR

✘ 各Webアプリ用のDockerリポジトリ作成

Page 31: ECSとSpotFleetで新規ビジネスのトライアル

ECR

Docker Image

Page 32: ECSとSpotFleetで新規ビジネスのトライアル

~16時間

EC2

✘ EC2インスタンスとSpotインスタンスの制限緩和申請

✘ SpotFleetリクエストの作成(※)

RDS

✘ PostgreSQLインスタンスの作成

Route53

✘ Private Hosted Zoneの作成

Page 33: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECR

Docker Image

Page 34: ECSとSpotFleetで新規ビジネスのトライアル

~24時間

CloudWatch Logs

✘ ログ出力先のロググループ作成

ECS

✘ タスク定義やECSクラスタの作成

EC2

✘ SpotFleetリクエストの再作成とuser-dataの設定

SES

✘ メール送信の設定とサンドボックスモードの解除

Page 35: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECS

ECS Cluster

ECR

Docker Image

CloudWatch

Logs

SES

email delivery

Admin Task API Task User Task

_JAVA_OPTIONS : -DdataSource.url='jdbc:postgresql://rds.example.com:5432/production'

Page 36: ECSとSpotFleetで新規ビジネスのトライアル

~32時間

ECS

✘ Serviceの作成と実行(※)

✘ awslogsエージェントによる標準出力ログの確認

ALB

✘ ロードバランサとターゲットグループの作成

✘ ヘルスチェックの設定

Page 37: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECS

Admin Service

ECS Cluster

Admin

ALB

API

ALB

User

ALB

API Service User Service

ECR

TargetGroup

Docker Image

CloudWatch

Logs

awslogs agent

SES

email delivery

Page 38: ECSとSpotFleetで新規ビジネスのトライアル

~40時間

Lambda

✘ ターゲットグループをメンテナンスするLambda Function作成

CloudWatch Events

✘ 作成したLambda Functionの定期起動

EC2

✘ SpotFleetのAutoScaling設定

Page 39: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECS

Admin Service

ECS Cluster

Admin

ALB

API

ALB

User

ALB

API Service User Service

ECR

TargetGroup

Docker Image

Lambda

CloudWatch

Logs

awslogs agent

SES

email delivery

Page 40: ECSとSpotFleetで新規ビジネスのトライアル

~48時間

Route53

✘ ドメインの購入とPublic Hosted Zoneの作成

✘ ALBのエンドポイントへのCNAME設定

ACM

✘ 証明書の発行

ALB

✘ HTTPS化の設定

Page 41: ECSとSpotFleetで新規ビジネスのトライアル

RDS

(PostgreSQL)

SpotFleet

ECS

Admin Service

ECS Cluster

Admin

ALB

API

ALB

User

ALB

API Service User Service

ECR

Route53

TargetGroup

Docker Image

Lambda

CloudWatch

Logs

awslogs agent

SES

email delivery

Page 42: ECSとSpotFleetで新規ビジネスのトライアル

運用コスト

Page 43: ECSとSpotFleetで新規ビジネスのトライアル

主要な運用コスト(1ヶ月の実績)

✘ 7~8割引で使えるなんてSpotFleet最高ですね

✘ ELB(CLB)→ALBも1割くらいコストが下がる

✘ 2017年に入ってからm3.mediumの価格が不安定なので

c3.largeに移行しました

サービス 1ヶ月の運用コスト(USD) EC2/ELBでの最小コスト試算(USD)

EC2 (SpotFleet m3.medium 744h×2) 20.4 (t2.small 744×4) 95.2

ALB(ELB) (ALB 2226h) 54.1 (ELB 2226h) 60.1

ECR 0.4 0.0

合計 74.9 155.3

Page 44: ECSとSpotFleetで新規ビジネスのトライアル

失敗による知見

✘ ECSクラスタを作ってからSpotFleetリクエストを作成すること

✘ ALBやターゲットグループの後にECSのServiceを作成すること

→Service DiscoveryはService作成時にしか設定できない

✘ ALBを無闇に作るとそれだけコストがかかるので注意すること

Page 45: ECSとSpotFleetで新規ビジネスのトライアル

最高なところ

✘ Dockerで動作確認したアプリをそのままAWS上で運用できる

✘ SpotFleetを使うことで安価にリソースが確保できる

✘ ECS+ALBを使うとサービスの運用がとても楽になる

→Health Check、Load Balancing、AutoScaling、

Blue/Green Deployment

Page 46: ECSとSpotFleetで新規ビジネスのトライアル

ちゃんと考えないと危なそうなところ

✘ awslogsエージェントで収集される標準出力ログの設計

✘永続化が必要なデータの持ち方

→今回は RDS + CloudWatch Logs のみ

✘ アプリケーションの更新とDBのマイグレーション

✘ ALBのパスベースルーティングとセキュリティグループ

Page 47: ECSとSpotFleetで新規ビジネスのトライアル

AWSのSAさんとやり取りしてこんな記事書きましたECS使う方はぜひご一読を

Page 48: ECSとSpotFleetで新規ビジネスのトライアル

ご清聴ありがとうございました

ECS+ALB ベストプラクティス 検索