SlideShare a Scribd company logo
MobingiALM で
スポットインスタンスを
いい感じに手なづけている裏側の話
Masafumi Noguchi
2017.8.10 MasterCloud #4
自己紹介
・野口雅史(Masafumi Noguchi)
・Mobingi, Inc.
・github.com/ngratin
・Mobingi blog - https://labs.mobingi.com
・Slack group - https://slack.mobingi.com
Mobingi ALM (Saasサービス)
・アプリケーションをクラウドで動かすことを簡単に。
・インフラ/アプリケーション実行環境の構築、継続的
 なデプロイの自動化。
・アプリケーション実行環境はDocker を利用。
・お客様はアプリケーションの開発に集中出来る。
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
についてのお話
(スポットブロック、スポットフリートではなく通常の
 スポットインスタンスのお話です)
とは?
Amazon EC2 の購入オプション
オンデマンド 通常の従量課金(長期契約、前払いなし)
リザーブド
1~3年間の利用予約
オンデマンドの最大75%割引 
スポット
未使用のインスタンスに入札し利用
オンデマンドの最大90%割引
Dedicated
Host
専用物理サーバ
Amazon EC2 の購入オプション
オンデマンド 通常の従量課金(長期契約、前払いなし)
リザーブド
1~3年間の利用予約
オンデマンドの最大75%割引 
スポット
未使用のインスタンスに入札し利用
オンデマンドの最大90%割引
Dedicated
Host
専用物理サーバ
料金例 (2017.8.9 10:30時点, 東京リージョン, Linux, 1時間当たりの単価)
オンデマンド スポット 割引率
m4.large $0.129 $0.0286 78%
m3.medium $0.096 $0.0124 87%
r4.large $0.16 $0.0253 84%
c4.large $0.126 $0.029 77%
料金例 (2017.8.9 10:30時点, 東京リージョン, Linux, 1時間当たりの単価)
オンデマンド スポット 割引率
m4.large $0.129 $0.0286 78%
m3.medium $0.096 $0.0124 87%
r4.large $0.16 $0.0253 84%
c4.large $0.126 $0.029 77%
なぜ安いのか
・未使用のインスタンスを安くてもいいから使っても
 らいたい。(AWS)
・入札形式。入札価格がスポット価格を上回り、空き
 があれば利用可能。(需要と共有)
・スポット価格が変動し、入札価格を上回ると強制
 ターミネートされる。
スポットインスタンスの仕組み
スポット価格
オンデマンド価格
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
起動可能 起動可能削除 削除
スポットインスタンス価格履歴
スポットインスタンス価格履歴
スポットインスタンスの仕組み
スポット価格
入札価格
オンデマンド価格
課金されるのはスポット価格
(入札価格ではない)
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances
スポットインスタンス活用
スタックの重要度や目的に合わせて、お客様自身で
スポットインスタンスの割合を設定可能
たとえば、
・テスト環境であればサービス停止を許容しスポット100%
・QA 環境であればスポット50%
 (オンデマンドの数を担保しておく)
構成
On-Demand
Spot
構成
・Auto Scaling Group, Launch Configuration の組を
 オンデマンドインスタンス用、スポットインスタ
 ンス用とで分ける。
・同じロードバランサの配下に設定する。
・一般的な組み合わせですが、
 AWSでこの構成は自動で設定してくれない。
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
Cost vs. Availability
スポット価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
削除削除 起動可能
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
Cost vs. Availability
スポット価格
入札価格
オンデマンド価格
起動可能
スポットインスタンス活用のポイント
・コストを下げつつ継続的にサービスを提供したい
- オンデマンドとの併用
- 入札価格
・強制ターミネート前の処理
- 新規のリクエストは停止しておきたい
構成
On-Demand
Spot
構成
On-Demand
Spot
構成
On-Demand
Spot
リクエストは受け付けない
ようにしたい
強制ターミネートの通知を受取る方法
・インスタンスメタデータで取得
・強制ターミネートの 2 分前から警告が提供される
- 通常は 404
- 強制ターミネート対象の場合、ターミネート時刻が返る
http://169.254.169.254/latest/meta-data/spot/termination-time
強制ターミネートの通知を受取る方法
強制ターミネートの通知を受取る方法
強制ターミネートの通知を受取る方法
・インスタンスメタデータで取得
・強制ターミネートの 2 分前から警告が提供される
- 通常は 404
- 強制ターミネート対象の場合、ターミネート時刻が返る
http://169.254.169.254/latest/meta-data/spot/termination-time
modaemon (MobingiALM)
・コンテナ管理デーモン
・docker run/stop, git clone
・NAT (Host - Container)
Container
Ubuntu
Apache
PHP
modaemon
Host OS
Docker
・コンテナ管理デーモン
・docker run/stop, git clone
・NAT (Host - Container)
・メタデータチェック(ELB からデタッチ)
Container
Ubuntu
Apache
PHP
modaemon
Host OS
Docker
Check metadata
modaemon (MobingiALM)
まとめ
・スポットインスタンスを活用してコスト削減
・オートスケーリンググループを分けることで、
 オンデマンドインスタンスの数を担保。
・MobingiALM では modaemon でインスタンス側で
 必要な対応をしている。
さいごに
Alibaba Cloud にもスポットインスタンス欲しいですね♥
MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances

More Related Content

PDF
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
PDF
OpenShift 3で、DockerのPaaSを作る話
PPTX
AWS Amplify 入門
PPTX
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
PPTX
CCCEU Feedback
PDF
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
PDF
Google Cloud Messaging for Android ことはじめ(もっと簡単に動かしてみる編)
PPTX
AKS と ACI を組み合わせて使ってみた
マルチクラウド環境でモビンギはどのようにコンテナを動かしているか
OpenShift 3で、DockerのPaaSを作る話
AWS Amplify 入門
コンテナベースサーバーレスプラットフォーム「Knative」はServerlessなのか?
CCCEU Feedback
Google Cloud Messaging for Android ことはじめ(Eclipseから動かしてみる編)
Google Cloud Messaging for Android ことはじめ(もっと簡単に動かしてみる編)
AKS と ACI を組み合わせて使ってみた

What's hot (20)

PDF
LocalStack
PPTX
Jupiter notebookをawsに構築しよう
PPTX
Amazon EKS への道 ~ EKS 再入門 ~
PPTX
コンテナ運用基盤 with OpenShift
 
PDF
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
PDF
Istio, Kubernetes and Cloud Foundry
PDF
Vagrantと網元で開発環境を作ってみよう
PPTX
第六回Jenkins勉強会
PDF
Azure serverlesssummit2018
PPTX
Live配信のワークフロー takusuta tech conf #1
PDF
各社のFaaSを比較してみる
PPTX
開発環境をVagrantからdockerに移行してみた
PPTX
ここ最近のJenkins新機能
PDF
The Internal of Serverless Plugins
PDF
サーバー&インフラ勉強会 Vol.1 いとー
PDF
Cloud Foundry構成概要 111018
PDF
Google Cloud Messaging for Android ことはじめ(サンプルコードを動かしてみる編)
PPTX
Grunt入門
PPTX
Infrakit Docker_Tokyo_meetup
PDF
Babelで先取り次世代javascript
LocalStack
Jupiter notebookをawsに構築しよう
Amazon EKS への道 ~ EKS 再入門 ~
コンテナ運用基盤 with OpenShift
 
Ruby で zabbix agent の loadable module を作れる loadable module を C言語 + mruby で作った
Istio, Kubernetes and Cloud Foundry
Vagrantと網元で開発環境を作ってみよう
第六回Jenkins勉強会
Azure serverlesssummit2018
Live配信のワークフロー takusuta tech conf #1
各社のFaaSを比較してみる
開発環境をVagrantからdockerに移行してみた
ここ最近のJenkins新機能
The Internal of Serverless Plugins
サーバー&インフラ勉強会 Vol.1 いとー
Cloud Foundry構成概要 111018
Google Cloud Messaging for Android ことはじめ(サンプルコードを動かしてみる編)
Grunt入門
Infrakit Docker_Tokyo_meetup
Babelで先取り次世代javascript
Ad

MobingiALM でスポットインスタンスをいい感じに手なづけている裏側の話 / How to manage EC2 Spot Instances