Your SlideShare is downloading. ×
0
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

5,144

Published on

2013/12/10 CM re:Growth Developers.IO Meetup 01でお話しした資料です。

2013/12/10 CM re:Growth Developers.IO Meetup 01でお話しした資料です。

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,144
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
19
Comments
0
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 6リージョン同時75万接続のメッ セージ配信基盤を CloudFormationと Capistranoで 3日で構築した話 CM re:Growth Developers.IO Meetup 01 大瀧隆太(@takipone) 2013/12/10 classmethod.jp 1
  • 2. 6リージョン同時75万接続のメッ セージ配信基盤を CloudFormationと Capistranoで 3日で構築した話 CM re:Growth Developers.IO Meetup 01 2013/12/10 classmethod.jp Twitter #cmdevio 大瀧隆太(@takipone) 2
  • 3. 自己紹介 • 氏名 : 大瀧隆太 • ポジション : ソリューションアーキテクト / 研修講師 • 得意分野 : ネットワーク / デプロイツール • 好きなAWSサービス Amazon Route 53 classmethod.jp 3
  • 4. システム概要1 • いくつかのシステムを組み合わせて構築 • 今回の担当は、75万のクライアントに データをプッシュするもの • アプリは担当外 → 3日で180台のインスタンスを デプロイしなければならない。 しかも複数リージョンなので、 単純なAutoScaling構成ともいかない。 classmethod.jp 4
  • 5. システム概要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
  • 6. システム概要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
  • 7. 時間との闘い • 実装方法は、社内にノウハウがあるもの と思いついたもので手を動かしながら検 討。 →最新のかっこいいツールを使ったわけ ではないです。 →ノウハウはベストプラクティスとは 限りません。時には、手間を惜しんで 力技に訴える場合もあります。 classmethod.jp 7
  • 8. とはいえ... • 手作業で180台構築、しかもマルチリー ジョンは現実的ではない。 • コードが順次アップデートされ、インス タンス起動後のデプロイも必要なので、 マスター(AMIイメージ)の作成では不十分。 →ツールに頼ることにした。 classmethod.jp 8
  • 9. ツールという翼を授かる • 今回は学習コストをかけられないので、 触ったことのあるツールから選択。 • AWS CloudFormation • Capistrano classmethod.jp 9
  • 10. CloudFormationで マルチリージョン構成 • CloudFormationは、AWSのコンポーネント を自動作成できるAWSサービス – あらかじめJSON形式のテンプレートで記述する • リージョン毎の違いはほとんど意識しなくて よい (一部例外アリ) – 単一リージョン用のテンプレートを使い回しでき る! – Parameters/Outputsなど構成を柔軟にする機能↑ これ重要 classmethod.jp 10
  • 11. CloudFormation活用ノウハウ1 • 全コンポーネントを単一テンプレートで記述 しない。 – 作成でコケると全部ロールバックしてしまい、な にも残らない。 – 大規模環境では、テンプレートが正しいものでも 不確定要素によってコケるケースがある。 • なんらかのリソース上限に到達 →特に、AutoScalingは上限に行ってもエラーを出さず、 上限内のインスタンス数を維持する • リージョン全体のキャパシティ不足で、インスタンス 起動に失敗 classmethod.jp 11
  • 12. CloudFormation活用ノウハウ2 • 分割例(というか、今回使った構成) 1. 2. 3. 4. VPCとセキュリティグループ ELB【重要】→ 暖気申請 EIP【重要】 → セキュリティグループ EC2インスタンス / AutoScaling • 依存関係(作る順番)は手で管理 – テンプレートファイル名のプレフィックス に番号をつけた – Parameters/Outputsの受け渡しが必要 classmethod.jp 12
  • 13. CloudFormation活用ノウハウ3 • 複数テンプレートを組み合わせると、 Management Consoleでの実行は 破綻する – IDの受け渡しとか無理。 – 6リージョンで6回繰り返しとか無理。 →スクリプトを組むべし。 – jq/awscli --queryと仲良くなれると 効率アップ! classmethod.jp 13
  • 14. classmethod.jp 14
  • 15. classmethod.jp 15
  • 16. classmethod.jp 16
  • 17. Capistranoでデプロイ • Capistranoは、Ruby製のデプロイツール – Ruby on Railsのデプロイで有名。 – やってることはSSH経由のコマンド実行なので、 Rails以外の用途でも汎用で使えます。 • AWS SDK for Rubyとの組み合わせが 超強力!! – ELB配下の全EC2インスタンスを動的に取得し、 同じコマンドラインが実行できる! – AutoScalingやTagづけでも夢がひろが(以下略 classmethod.jp 17
  • 18. AWSのAPIキー ELB名の ハッシュ 定義 classmethod.jp 18
  • 19. EC2のEIPを格納する配列を定義 ↑ELB配下のEC2のEIPを配列に追加! ロールに設定 classmethod.jp 19
  • 20. Capistrano活用ノウハウ1 • ユーザーデータ(CloudFormation)とのユーザー権 限のバッティングに注意 – ユーザーデータはroot権限で実行される – CapistranoはSSHで接続するユーザー権限(Amazon Linuxでは非root) – コピペではまず通らない。 – ユーザーデータで作ったファイルがCapistranoで消せ ない、書き出せない事象が多発。 → su -cやsudoと仲良くなりましょう。 • 冪等性がやっぱりほすぃ...。 – 終了値0以外で全台ストップするので、ごにょごにょ classmethod.jp 20
  • 21. classmethod.jp 21
  • 22. Capistrano活用ノウハウ2 • User-Separatedな実行系に注意 – RubyGems/Bundler(Ruby)やnpm(nodejs)、 Composer(PHP)など →今回はnpm – ユーザーデータ/Capistranoタスクの難易度が ぐーんと上がる。 – 絶対パスやcd/sudoなどでなんとか対応した。 – Capistranoタスクであれば、Rubyシンタック ス(変数/配列の参照)を上手く使いましょう。 classmethod.jp 22
  • 23. classmethod.jp 23
  • 24. まとめと後日談1 • CloudFormationで自動構築、複数リー ジョン対応は強力! • CapistoranoはRails以外のデプロイでも絶 大な力を発揮する。AWS SDKとの組み合 わせが強力すぎる。 classmethod.jp 24
  • 25. まとめと後日談2 • CloudFormationとCapistoranoが無かった と思うとゾッとします。あと、AMIリー ジョン間コピーも。 • もう、しばらくいいです・・・。 • 社内で同じような案件がゴロゴロしてい るので、ノウハウ蓄積の一助になりたい。 classmethod.jp 25

×