クラスメソッド株式会社
都元ダイスケ
CloudFormation
#jawsdays #ace
自己紹介
• Webアプリ屋

出身のAWS屋	

• Classmethod所属	

• AWS歴 2.5年	

• @daisuke_m
CloudFormation
EC2S3
Glacier
ElasticMapReduce
AutoS...
works
✦ AWSインフラの コンサル・設計・構築
✦ お客様向けアプリケーションの DevOps
✦ 人間CloudFormer
✦ 気づくと書いてるJSONが1000行越えてます
#jawsdays #ace
Agenda
• CloudFromationの概要
• CloudFormation Helper Scripts
• CFnで実現する Blue-Green Deployment
#jawsdays #ace
‒ D-chan
SSHしたら負けかなと思っている。
※ あくまでも心意気の話ですが
#jawsdays #ace
CloudFormation
#jawsdays #ace
CloudFormation
Template
+
Parameter
Parameter
Stack
Bucket with
Objects
DynamoDB
Table
ELB
Instances Auto Scaling Amazon
C...
Template
#jawsdays #ace
JSON、ということはインフラを
バージョン管理できる\(^o^)/
育てるインフラ
• インフラの構成をTemplateとしてバージョン管理する
• TemplateからStackを作る(構築)
• インフラ構成を追加・編集(そしてバージョン管理)
• 既存Stackを新しいテンプレートで更新する(成長)
#j...
Resource
【S3のバケットを1つ作成する例】	

"CacheBucket" がリソース名	

"Type" に種類リソースの種類を指定して	

"Properties" で詳細設定する
Parameter
#jawsdays #ace
Parameter Reference
#jawsdays #ace
Parameter Inputs
#jawsdays #ace
Mapping / Mapping
Reference
Output
突然ですがここでCFnの課題
✦ テスタビリティ
✦ 一部作成に対応していないサービス有り(順次)
✦ 一部更新に対応していないサービス有り(順次…)
✦ 自動化コンポーネントを手動で触るとFAILEDス
テータスとなり、詰む(御法度)
CloudFormtaion
Helper Scripts
#jawsdays #ace
user-data
user-data
user-data
自己組織化
user-dataの問題点
✦ 失敗検知ができない
✦ 複雑になると、カオス化する(手順の構造化)
✦ 設定の更新(再実行)ができない
✦ Immutable Infrastructureからは離れるが
#jawsdays #ace
WaitCondition(失敗検知)
cfn-init(手順の構造化)
Metadata
AWS::CloudFormation::Init
cfn-hup(更新ヘルパー)
configSets
• cfn-init起動時の -c で

configSetを指定する
!
• configSetは、実行するconfig
のリストと順序を定義
!
• packages
• sources
• users
• groups
• ...
cfn-hupの設定
CloudFormtaionで実現する
Blue-Green Deployment
#jawsdays #ace
というテンプレート
書いてみた。
パラメータ(主なもの)
✦ ProductionEnv ( blue or green )
✦ BlueInstanceType / GreenInstanceType
✦ BlueFleetSize / GreenFleetSize
✦ Bl...
アプリのtgz
URL
更新されたらhttpd
再起動
PHP
の中から
$_SERVER[ RDS_… ]
で参照
デプロイ(開発時)
• 現在Blueが本番だとすると、Greenが開発
• アプリケーションファイルをtar.gzに固める
• S3にアップロードし、そのURLを確認
• GreenのURLを書き換えてStack update
#jawsday...
スワップ(リリース時)
• Blueが本番だとすると、Greenが開発
• Greenに次期バージョンをデプロイして動作確認
• OKだったらGreenを増強(インスタンスサイズ↗ 数量↗)
• ProductionEnvをblueからgree...
gist
bit.ly/cfn-bgd-php
1000行超えたJSONがここに
#jawsdays #ace
まとめ
CloudFormationの5要素
Parameter
Condition
Mapping
Resource
Outputs
CFn Helper Scripts
cfn-signal (WaitCond.)
cfn-init
cfn...
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
Upcoming SlideShare
Loading in …5
×

20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編

2,179 views
2,129 views

Published on

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

No Downloads
Views
Total views
2,179
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編

  1. 1. クラスメソッド株式会社 都元ダイスケ CloudFormation #jawsdays #ace
  2. 2. 自己紹介 • Webアプリ屋
 出身のAWS屋 • Classmethod所属 • AWS歴 2.5年 • @daisuke_m CloudFormation EC2S3 Glacier ElasticMapReduce AutoScaling ELB CloudFrontRDS DynamoDB ElastiCache RedShift IAM CloudWatch Beanstalk Data Pipeline OpsWorks CloudHSM CloudSearch SWF SQS SNS SES Transcoder Route53VPC DirectConnect StorageGateway Mechanical Turk CloudTrail AppStream Kinesis #jawsdays #ace
  3. 3. works ✦ AWSインフラの コンサル・設計・構築 ✦ お客様向けアプリケーションの DevOps ✦ 人間CloudFormer ✦ 気づくと書いてるJSONが1000行越えてます #jawsdays #ace
  4. 4. Agenda • CloudFromationの概要 • CloudFormation Helper Scripts • CFnで実現する Blue-Green Deployment #jawsdays #ace
  5. 5. ‒ D-chan SSHしたら負けかなと思っている。 ※ あくまでも心意気の話ですが #jawsdays #ace
  6. 6. CloudFormation #jawsdays #ace
  7. 7. CloudFormation Template + Parameter Parameter Stack Bucket with Objects DynamoDB Table ELB Instances Auto Scaling Amazon CloudFront 基本的システム構成 S3, DynamoDB, EC2, IAM,AutoScaling, SecurityGroup, ELB, CloudFront Instance Type, クラスタの台数, SSH接続元IP, キー名, ...等
  8. 8. Template #jawsdays #ace JSON、ということはインフラを バージョン管理できる\(^o^)/
  9. 9. 育てるインフラ • インフラの構成をTemplateとしてバージョン管理する • TemplateからStackを作る(構築) • インフラ構成を追加・編集(そしてバージョン管理) • 既存Stackを新しいテンプレートで更新する(成長) #jawsdays #ace
  10. 10. Resource 【S3のバケットを1つ作成する例】 "CacheBucket" がリソース名 "Type" に種類リソースの種類を指定して "Properties" で詳細設定する
  11. 11. Parameter #jawsdays #ace
  12. 12. Parameter Reference #jawsdays #ace
  13. 13. Parameter Inputs #jawsdays #ace
  14. 14. Mapping / Mapping Reference
  15. 15. Output
  16. 16. 突然ですがここでCFnの課題 ✦ テスタビリティ ✦ 一部作成に対応していないサービス有り(順次) ✦ 一部更新に対応していないサービス有り(順次…) ✦ 自動化コンポーネントを手動で触るとFAILEDス テータスとなり、詰む(御法度)
  17. 17. CloudFormtaion Helper Scripts #jawsdays #ace
  18. 18. user-data
  19. 19. user-data
  20. 20. user-data 自己組織化
  21. 21. user-dataの問題点 ✦ 失敗検知ができない ✦ 複雑になると、カオス化する(手順の構造化) ✦ 設定の更新(再実行)ができない ✦ Immutable Infrastructureからは離れるが #jawsdays #ace
  22. 22. WaitCondition(失敗検知)
  23. 23. cfn-init(手順の構造化)
  24. 24. Metadata AWS::CloudFormation::Init
  25. 25. cfn-hup(更新ヘルパー)
  26. 26. configSets • cfn-init起動時の -c で
 configSetを指定する ! • configSetは、実行するconfig のリストと順序を定義 ! • packages • sources • users • groups • files • commands • services それぞれの 設定の中で この順序で 実行される
  27. 27. cfn-hupの設定
  28. 28. CloudFormtaionで実現する Blue-Green Deployment #jawsdays #ace
  29. 29. というテンプレート 書いてみた。
  30. 30. パラメータ(主なもの) ✦ ProductionEnv ( blue or green ) ✦ BlueInstanceType / GreenInstanceType ✦ BlueFleetSize / GreenFleetSize ✦ BlueApplication / GreenApplication #jawsdays #ace
  31. 31. アプリのtgz URL 更新されたらhttpd 再起動 PHP の中から $_SERVER[ RDS_… ] で参照
  32. 32. デプロイ(開発時) • 現在Blueが本番だとすると、Greenが開発 • アプリケーションファイルをtar.gzに固める • S3にアップロードし、そのURLを確認 • GreenのURLを書き換えてStack update #jawsdays #ace
  33. 33. スワップ(リリース時) • Blueが本番だとすると、Greenが開発 • Greenに次期バージョンをデプロイして動作確認 • OKだったらGreenを増強(インスタンスサイズ↗ 数量↗) • ProductionEnvをblueからgreenに書き換えてStack update • 切り替わったらBlueを縮退(インスタンスサイズ↘ 数量↘) • 以降、Greenが本番で、Blueが開発環境となる #jawsdays #ace
  34. 34. gist bit.ly/cfn-bgd-php 1000行超えたJSONがここに #jawsdays #ace
  35. 35. まとめ CloudFormationの5要素 Parameter Condition Mapping Resource Outputs CFn Helper Scripts cfn-signal (WaitCond.) cfn-init cfn-hup Blue-Green Deployment #jawsdays #ace

×