SlideShare uma empresa Scribd logo
1 de 25
6リージョン同時75万接続のメッ
セージ配信基盤を

CloudFormationと
Capistranoで
3日で構築した話
CM re:Growth
Developers.IO Meetup 01
大瀧隆太(@takipone)

2013/12/10
classmethod.jp

1
6リージョン同時75万接続のメッ
セージ配信基盤を

CloudFormationと
Capistranoで
3日で構築した話
CM re:Growth
Developers.IO Meetup 01
2013/12/10
classmethod.jp

Twitter
#cmdevio

大瀧隆太(@takipone)

2
自己紹介
• 氏名 : 大瀧隆太
• ポジション :
ソリューションアーキテクト / 研修講師
• 得意分野 :
ネットワーク /
デプロイツール
• 好きなAWSサービス
Amazon Route 53
classmethod.jp

3
システム概要1
• いくつかのシステムを組み合わせて構築
• 今回の担当は、75万のクライアントに
データをプッシュするもの
• アプリは担当外
→ 3日で180台のインスタンスを
デプロイしなければならない。
しかも複数リージョンなので、
単純なAutoScaling構成ともいかない。
classmethod.jp

4
システム概要2
Sub

×15
Client

Redis
on EC2

Auto scaling

Pub

Availability Zone
Mobile
Client

×
750K

Sub

×15
Auto scaling
Availability Zone

classmethod.jp

Publish app
on EC2
Redis
on EC2
システム概要3
バージニア
us-east-1
Client

オレゴン
us-west-2
東京
ap-northeast-1

Mobile
Client

×
750K

カリフォルニア

us-west-1
アイルランド
eu-west-1
シンガポール
ap-southeast-1

classmethod.jp

Publish app
on EC2
時間との闘い
• 実装方法は、社内にノウハウがあるもの
と思いついたもので手を動かしながら検
討。
→最新のかっこいいツールを使ったわけ
ではないです。
→ノウハウはベストプラクティスとは
限りません。時には、手間を惜しんで
力技に訴える場合もあります。
classmethod.jp

7
とはいえ...
• 手作業で180台構築、しかもマルチリー
ジョンは現実的ではない。
• コードが順次アップデートされ、インス
タンス起動後のデプロイも必要なので、
マスター(AMIイメージ)の作成では不十分。
→ツールに頼ることにした。

classmethod.jp

8
ツールという翼を授かる
• 今回は学習コストをかけられないので、
触ったことのあるツールから選択。
• AWS CloudFormation
• Capistrano

classmethod.jp

9
CloudFormationで
マルチリージョン構成
• CloudFormationは、AWSのコンポーネント
を自動作成できるAWSサービス
– あらかじめJSON形式のテンプレートで記述する

• リージョン毎の違いはほとんど意識しなくて
よい (一部例外アリ)
– 単一リージョン用のテンプレートを使い回しでき
る!
– Parameters/Outputsなど構成を柔軟にする機能↑
これ重要
classmethod.jp

10
CloudFormation活用ノウハウ1
• 全コンポーネントを単一テンプレートで記述
しない。
– 作成でコケると全部ロールバックしてしまい、な
にも残らない。
– 大規模環境では、テンプレートが正しいものでも
不確定要素によってコケるケースがある。
• なんらかのリソース上限に到達
→特に、AutoScalingは上限に行ってもエラーを出さず、
上限内のインスタンス数を維持する
• リージョン全体のキャパシティ不足で、インスタンス
起動に失敗
classmethod.jp

11
CloudFormation活用ノウハウ2
• 分割例(というか、今回使った構成)
1.
2.
3.
4.

VPCとセキュリティグループ
ELB【重要】→ 暖気申請
EIP【重要】 → セキュリティグループ
EC2インスタンス / AutoScaling

• 依存関係(作る順番)は手で管理
– テンプレートファイル名のプレフィックス
に番号をつけた
– Parameters/Outputsの受け渡しが必要
classmethod.jp

12
CloudFormation活用ノウハウ3
• 複数テンプレートを組み合わせると、
Management Consoleでの実行は
破綻する
– IDの受け渡しとか無理。
– 6リージョンで6回繰り返しとか無理。
→スクリプトを組むべし。
– jq/awscli --queryと仲良くなれると
効率アップ!
classmethod.jp

13
classmethod.jp

14
classmethod.jp

15
classmethod.jp

16
Capistranoでデプロイ
• Capistranoは、Ruby製のデプロイツール
– Ruby on Railsのデプロイで有名。
– やってることはSSH経由のコマンド実行なので、
Rails以外の用途でも汎用で使えます。

• AWS SDK for Rubyとの組み合わせが
超強力!!
– ELB配下の全EC2インスタンスを動的に取得し、
同じコマンドラインが実行できる!
– AutoScalingやTagづけでも夢がひろが(以下略
classmethod.jp

17
AWSのAPIキー

ELB名の
ハッシュ
定義
classmethod.jp

18
EC2のEIPを格納する配列を定義

↑ELB配下のEC2のEIPを配列に追加!
ロールに設定
classmethod.jp

19
Capistrano活用ノウハウ1
• ユーザーデータ(CloudFormation)とのユーザー権
限のバッティングに注意
– ユーザーデータはroot権限で実行される
– CapistranoはSSHで接続するユーザー権限(Amazon
Linuxでは非root)
– コピペではまず通らない。
– ユーザーデータで作ったファイルがCapistranoで消せ
ない、書き出せない事象が多発。
→ su -cやsudoと仲良くなりましょう。

• 冪等性がやっぱりほすぃ...。
– 終了値0以外で全台ストップするので、ごにょごにょ

classmethod.jp

20
classmethod.jp

21
Capistrano活用ノウハウ2
• User-Separatedな実行系に注意
– RubyGems/Bundler(Ruby)やnpm(nodejs)、
Composer(PHP)など
→今回はnpm
– ユーザーデータ/Capistranoタスクの難易度が
ぐーんと上がる。
– 絶対パスやcd/sudoなどでなんとか対応した。
– Capistranoタスクであれば、Rubyシンタック
ス(変数/配列の参照)を上手く使いましょう。
classmethod.jp

22
classmethod.jp

23
まとめと後日談1
• CloudFormationで自動構築、複数リー
ジョン対応は強力!
• CapistoranoはRails以外のデプロイでも絶
大な力を発揮する。AWS SDKとの組み合
わせが強力すぎる。

classmethod.jp

24
まとめと後日談2
• CloudFormationとCapistoranoが無かった
と思うとゾッとします。あと、AMIリー
ジョン間コピーも。
• もう、しばらくいいです・・・。
• 社内で同じような案件がゴロゴロしてい
るので、ノウハウ蓄積の一助になりたい。
classmethod.jp

25

Mais conteúdo relacionado

Mais procurados

DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Terui Masashi
 
モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方
Junpei Nakada
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
 

Mais procurados (20)

Serverless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニングServerless Meetup Tokyo #1 オープニング
Serverless Meetup Tokyo #1 オープニング
 
JAWS DAYS 2015
JAWS DAYS 2015JAWS DAYS 2015
JAWS DAYS 2015
 
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべことAWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
 
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのことDevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
 
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
Serverless ArchitectureにおけるNoSQL Services 〜DynamoDBも良いけどSimpleDBも忘れないであげてください!!〜
 
オンプレからAws移行で変えた3つの意識
オンプレからAws移行で変えた3つの意識オンプレからAws移行で変えた3つの意識
オンプレからAws移行で変えた3つの意識
 
Ansible + Packer + CloudFormationでらくらく構築・運用
Ansible + Packer + CloudFormationでらくらく構築・運用Ansible + Packer + CloudFormationでらくらく構築・運用
Ansible + Packer + CloudFormationでらくらく構築・運用
 
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
 
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
 
モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方モバイルゲームにおけるAWSの泥臭い使い方
モバイルゲームにおけるAWSの泥臭い使い方
 
Data Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdaysData Engineering at VOYAGE GROUP #jawsdays
Data Engineering at VOYAGE GROUP #jawsdays
 
コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015コンソールゲームを世界展開してみた - JAWS DAYS 2015
コンソールゲームを世界展開してみた - JAWS DAYS 2015
 
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
 
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
 
The Internal of Serverless Plugins
The Internal of Serverless PluginsThe Internal of Serverless Plugins
The Internal of Serverless Plugins
 
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
 
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
 
AWS認定資格について
AWS認定資格についてAWS認定資格について
AWS認定資格について
 
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
 
JAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia TalkJAWS DAYS 2017 Mafia Talk
JAWS DAYS 2017 Mafia Talk
 

Destaque

ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
Sugawara Genki
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方
ShinsukeYokota
 

Destaque (18)

2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth2013.12.10 Classmethod re:Grwoth
2013.12.10 Classmethod re:Grwoth
 
Re growth takekawa-slideshare
Re growth takekawa-slideshareRe growth takekawa-slideshare
Re growth takekawa-slideshare
 
ナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしいナウなヤングにCloud Formationが流行ってほしい
ナウなヤングにCloud Formationが流行ってほしい
 
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormationAWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
 
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic BeanstalkAWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
AWS Black Belt Tech シリーズ 2015 - AWS Elastic Beanstalk
 
CloudWatchの使い方
CloudWatchの使い方CloudWatchの使い方
CloudWatchの使い方
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
Developers.IO 2016 | 疎結合で非同期なチーム開発
Developers.IO 2016 | 疎結合で非同期なチーム開発Developers.IO 2016 | 疎結合で非同期なチーム開発
Developers.IO 2016 | 疎結合で非同期なチーム開発
 
Cloud Formationで既存のインフラを増築した話
Cloud Formationで既存のインフラを増築した話Cloud Formationで既存のインフラを増築した話
Cloud Formationで既存のインフラを増築した話
 
オープンセミナー2015@広島プレゼン
オープンセミナー2015@広島プレゼンオープンセミナー2015@広島プレゼン
オープンセミナー2015@広島プレゼン
 
ChefとOpsWorksで EC2 楽チンクッキング!
ChefとOpsWorksで EC2 楽チンクッキング!ChefとOpsWorksで EC2 楽チンクッキング!
ChefとOpsWorksで EC2 楽チンクッキング!
 
AWS管理を自動化する奥義
AWS管理を自動化する奥義AWS管理を自動化する奥義
AWS管理を自動化する奥義
 
Cloud formation デザイナーで捗ろう
Cloud formation デザイナーで捗ろうCloud formation デザイナーで捗ろう
Cloud formation デザイナーで捗ろう
 
もっと気軽にCloudFormation
もっと気軽にCloudFormationもっと気軽にCloudFormation
もっと気軽にCloudFormation
 
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
ココが違うよEC2 ~オンプレミスVMとの徹底⽐比較~
 
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorksAWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks
 
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
JAWS DAYS 2015 AWS OpsWorksの仕組みと活用方法のご紹介
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 

Semelhante a 6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話

Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925
Six Apart
 
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみようデータ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
Salesforce Developers Japan
 
CloudStack最新アップデート
CloudStack最新アップデートCloudStack最新アップデート
CloudStack最新アップデート
Kimihiko Kitase
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
fumios
 

Semelhante a 6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話 (20)

【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
【BS10】Microsoft と GitHub の開発エコシステムで、開発にドライブをかけよう!
 
Service Cloud Trailblazers #5
Service Cloud Trailblazers #5Service Cloud Trailblazers #5
Service Cloud Trailblazers #5
 
Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
 
【de:code 2020】 Power Platform で広がるデータ インテグレーションの世界 (1/2)
【de:code 2020】 Power Platform で広がるデータ インテグレーションの世界 (1/2)【de:code 2020】 Power Platform で広がるデータ インテグレーションの世界 (1/2)
【de:code 2020】 Power Platform で広がるデータ インテグレーションの世界 (1/2)
 
Vertica 9.0.0 新機能
Vertica 9.0.0 新機能Vertica 9.0.0 新機能
Vertica 9.0.0 新機能
 
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
 
The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)The road of Apache CloudStack Contributor (Translation and Patch)
The road of Apache CloudStack Contributor (Translation and Patch)
 
Azure API Management 俺的マニュアル
Azure API Management 俺的マニュアルAzure API Management 俺的マニュアル
Azure API Management 俺的マニュアル
 
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [概要編]
 
Microsoft MVP から見たクラウド サービスの現状と今後について
Microsoft MVP から見たクラウド サービスの現状と今後についてMicrosoft MVP から見たクラウド サービスの現状と今後について
Microsoft MVP から見たクラウド サービスの現状と今後について
 
エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識エンジニアのための Azure 基礎知識
エンジニアのための Azure 基礎知識
 
SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015SmartNews Ads System - AWS Summit Tokyo 2015
SmartNews Ads System - AWS Summit Tokyo 2015
 
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみようデータ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
データ連携の新しいカタチ - 変更データキャプチャ/プラットフォームイベントを MuleSoft Anypoint Platform と組み合わせて試してみよう
 
64ヶ月オンプレ運用したシステムを aws移行した話
64ヶ月オンプレ運用したシステムを aws移行した話64ヶ月オンプレ運用したシステムを aws移行した話
64ヶ月オンプレ運用したシステムを aws移行した話
 
Migrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapmMigrating tocloudnativeapplicationwithusingelasticapm
Migrating tocloudnativeapplicationwithusingelasticapm
 
Hybrid Data Deliveryを活用してオンプレミスデータをQlik Cloudでリアルタイム活用!
Hybrid Data Deliveryを活用してオンプレミスデータをQlik Cloudでリアルタイム活用!Hybrid Data Deliveryを活用してオンプレミスデータをQlik Cloudでリアルタイム活用!
Hybrid Data Deliveryを活用してオンプレミスデータをQlik Cloudでリアルタイム活用!
 
CloudStack最新アップデート
CloudStack最新アップデートCloudStack最新アップデート
CloudStack最新アップデート
 
20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure20180723 PFNの研究基盤 / PFN research system infrastructure
20180723 PFNの研究基盤 / PFN research system infrastructure
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 

6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話