SlideShare a Scribd company logo
CloudFormation による 
Blue-Green Deployment 
Ⓒ Classmethod, Inc. 
1 
DevIO MTUP11-SAPPORO-003 
渡辺 修司, クラスメソッド 
2014年11月19日
渡辺 修司 
• AWSコンサルティング部 
• ソリューションアーキテクト 
• 2014年8月入社 
• 前職 
• Java業務システムの開発 
• Web関連のサービス開発 
• 現在 
• メンバーズポータル開発 
• 開発系のAWS環境のコンサル、開発支援 
• 趣味 
• ロードバイク、スノーボード、猫 
Ⓒ Classmethod, Inc. 
2
Blue-Green Deployment 
3
Deployment / 配備 
• アプリケーションを配置し、利用できる状態にする 
• ビルド 
• サーバへの転送 
• アプリケーションサーバの再起動 
• 初期リリース時やアップデート時に実施 
• デプロイ用ツールなどを使って自動化する 
• 複数サーバを手動でやるのは手間 
• 人為的ミスの防止 
Ⓒ Classmethod, Inc. 
4
Deployment時の課題 
• ダウンタイム 
• メンテナンス時間として利用不可 
• 切り戻し 
• アップデートが原因によるシステム障害 
Ⓒ Classmethod, Inc. 
5
Blue-Green Deployment 
• ダウンタイムゼロのデプロイメントパターン 
• マーチン・ファウラ̶が提唱 
• プロダクション環境を2系統用意(Blue/Green) 
• 一方をアクティブ系、もう一方をスタンバイ系 
• スタンバイ系にデプロイを行う 
• デプロイが完了したならばRouterで切り替える 
• http://martinfowler.com/bliki/BlueGreenDeployment.html 
Ⓒ Classmethod, Inc. 
6
Blue-Green Deploymentの課題 
• 2系統のサーバが必要 
• コストが2倍 
• トランザクションデータの扱い 
• RDBのデータ移行時間が発生 
• データベースのスキーマ変更 
Ⓒ Classmethod, Inc. 
7
AWSによる解決と妥協点 
• Blue-Green環境は必要に応じて構築 
• 不要な時は破棄することでコストを抑える 
• アップデート後、切り戻しが不要と判断したら破棄 
• DBレイヤはBlue-Greenとしない 
• 妥協する部分 
• Multi-AZならば冗長化もされている 
• 問題発生時はレストアの方針 
• DBのスキーマ変更 
• クリティカルならばダウンタイムを許容 
• 変更前と変更後に対応できるような実装もあり 
• 切り替え時のユーザ操作の整合性 
Ⓒ Classmethod, Inc. 
8
Cloud Formationによる 
Blue-Green Deployment 
9 
AWS 
CloudFormation
CloudFormationでリソースを構築 
• 繰り返し作業に効果的な自動化 
• 手作業はNG 
• ヒューマンエラー防止 
• AMIイメージを予め作成(Chefなど) 
Ⓒ Classmethod, Inc. 
10 
AWS 
CloudFormation
RDSは妥協 
• Blue/Greenにするデメリットが大きい 
• データの同期問題 
• スキーマ変更の影響 
• アプリレイヤで吸収(必要に応じて) 
• 問題発生時はバックアップからリストア 
• どうにもならない場合は止める 
• 最終的にはコストバランスを考慮 
Ⓒ Classmethod, Inc. 
11 
Amazon 
RDB
テンプレートはレイヤ毎に分割 
• Base / Green / Blue のテンプレートを用意 
• Base にはVPC関連と共通リソースを定義 
• GreenとBlueにはアプリレイヤーを定義 
• GreenとBlueは独立してStackを構築/撤収可能 
Ⓒ Classmethod, Inc. 
12 
CloudFormation 
Template
BlueとGreenはパラメータで指定 
• 共通テンプレートでOK 
• パラメータを活用し違いを吸収 
Ⓒ Classmethod, Inc. 
13 
"Parameters": { 
"Env": { 
"Type": "String", 
"Default": "Blue", 
"AllowedValues": [ 
"Blue", 
"Green" 
] 
} 
}, 
"Resources": { 
"FrontWeb1": { 
"Type": "AWS::EC2::Instance", 
"Properties": { 
"SubnetId": { 
"Fn::FindInMap": [ 
"Subnet", { "Ref": "Env" }, "AppA" 
] 
} 
} 
"Mappings": { 
"Subnet": { 
"Blue": { 
"AppA": "subnet-xxxxxxxxx", 
"AppC": "subnet-xxxxxxxxx" 
}, 
"Green": { 
"AppA": "subnet-xxxxxxxx", 
"AppC": "subnet-xxxxxxxx" 
} 
} 
} 
CloudFormation 
Template
1)デプロイの準備 
• Base環境を構築 
• 基本的に1回だけ(必要に応じてUpdate) 
Ⓒ Classmethod, Inc. 
14 
CloudFormation 
Stack
2)初回リリース 
• Blue環境を構築(初回リリース) 
• アプリはデプロイツールでデプロイ 
Ⓒ Classmethod, Inc. 
15 
CloudFormation 
Stack
3)初回アップデート 
• Green環境を構築 
• Green環境にアップデート版をデプロイし検証 
Ⓒ Classmethod, Inc. 
16 
CloudFormation 
Stack 
検証できたら 
Route53の設定を 
Green側に変更
4)Blue環境の撤収 
• Blue環境を削除してコストを押さえる 
• 不安がある場合はしばらく残してもOK 
Ⓒ Classmethod, Inc. 
17 
CloudFormation 
Stack
まとめ 
• 最小のダウンタイム 
• アップデート時のリスク対策 
• Cloud Formationを活用し、省コスト 
• Deployの自動化でヒューマンエラーを防止 
Ⓒ Classmethod, Inc. 
18
Ⓒ Classmethod, Inc. 
#cmdevio 
ご静聴ありがとうございました。 
スライドは後日ブログで公開します。 
19 
DevIO MTUP11-SAPPORO-003

More Related Content

PDF
LambdaとMobileの美味しいかもしれない関係
PDF
Cm re growth-reinvent-app304-kaji
PPTX
AWSによるWebサイト構築と運用 - concrete5 編 -
PDF
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
PDF
AWSクラウドデザインパターン(CDP) - 概要編 -
PDF
JAWS DAYS 2017 LT 古きを捨て新しきに近づける
PDF
VIOPS09 AWSで実現するクラウドと物理製品の融合
PPTX
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話
LambdaとMobileの美味しいかもしれない関係
Cm re growth-reinvent-app304-kaji
AWSによるWebサイト構築と運用 - concrete5 編 -
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
AWSクラウドデザインパターン(CDP) - 概要編 -
JAWS DAYS 2017 LT 古きを捨て新しきに近づける
VIOPS09 AWSで実現するクラウドと物理製品の融合
6リージョン同時75万接続のメッセージ配信基盤をCloudFormationとCapistranoで3日で構築した話

What's hot (16)

PDF
AWSクラウドデザインパターン(CDP) - コンテンツ配信編 -
PDF
CDP(キャンペーンサイト編)
PDF
AWS で concrete5 を 簡単起動!
PDF
AWSクラウドデザインパターン(CDP) - Eコマース編 -
PDF
サーバーレスの今とこれから
PPTX
グリーにおけるAWS移行の必然性
PDF
Single Command Deployのための gradle-aws-plugin講座
PDF
AWS クックパッドの運用事例
PDF
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
PDF
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
PDF
Aws startup-tech-summer2015
PDF
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
PPTX
20140628 AWSの2014前半のアップデートまとめ
PDF
AWSでアプリ開発するなら 知っておくべこと
PDF
MySQL→Aurora移行セミナー
PDF
Awsのインフラをデザインパターン駆使して設計構築
AWSクラウドデザインパターン(CDP) - コンテンツ配信編 -
CDP(キャンペーンサイト編)
AWS で concrete5 を 簡単起動!
AWSクラウドデザインパターン(CDP) - Eコマース編 -
サーバーレスの今とこれから
グリーにおけるAWS移行の必然性
Single Command Deployのための gradle-aws-plugin講座
AWS クックパッドの運用事例
[AWS Summit 2012] クラウドデザインパターン#8 CDP アンチパターン編
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
Aws startup-tech-summer2015
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
20140628 AWSの2014前半のアップデートまとめ
AWSでアプリ開発するなら 知っておくべこと
MySQL→Aurora移行セミナー
Awsのインフラをデザインパターン駆使して設計構築
Ad

Viewers also liked (20)

PDF
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
PPTX
Cloud Formationで既存のインフラを増築した話
PPTX
オープンセミナー2015@広島プレゼン
PPT
Green Tourism Business Award training museums dec 2011
PPTX
Green Tourism Certification Programme - GTBS Update - Simpler & Better
PDF
もっと気軽にCloudFormation
PPTX
カナダ研修旅行報告スライド
PPT
green school Tokyo のつくり方
PPTX
Green Tourism Certification Programme Overview April 2014 GTBS
PDF
Tourtech - Tourism × Tech - 地方創生プロジェクト
PDF
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
PPTX
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
PPTX
Eco-Tourism
PPTX
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
PPT
Sustainable Savings: Green Tourism Business Scheme
PDF
20150226_JAWS_UG札幌
PPTX
Lambdaについて
PDF
20150425 JAWS-UG Okinawa
PDF
JavaのLambdaの裏事情
PDF
20150928楽しいlambda
Jenkinsはじめました - Yahoo! JAPANのCI+CD -
Cloud Formationで既存のインフラを増築した話
オープンセミナー2015@広島プレゼン
Green Tourism Business Award training museums dec 2011
Green Tourism Certification Programme - GTBS Update - Simpler & Better
もっと気軽にCloudFormation
カナダ研修旅行報告スライド
green school Tokyo のつくり方
Green Tourism Certification Programme Overview April 2014 GTBS
Tourtech - Tourism × Tech - 地方創生プロジェクト
Deep Dive: Amazon DynamoDB (db tech showcase 2016)
MySQLメインの人がPostgreSQLのベンチマークをしてみた話
Eco-Tourism
HPC で使えそうな FPGA 搭載 AWS F1 インスタンス 20170127
Sustainable Savings: Green Tourism Business Scheme
20150226_JAWS_UG札幌
Lambdaについて
20150425 JAWS-UG Okinawa
JavaのLambdaの裏事情
20150928楽しいlambda
Ad

Similar to Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003 (20)

PPTX
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
PDF
May the FaaS be with us!!
PPTX
エンジニアのための勉強会 #2 『Public Cloud - AWSの基礎 -』
PPTX
JAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
PPTX
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
PDF
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
PDF
実践!AWSクラウドデザインパターン
PDF
クラウド+コンテナで作る簡単Webアプリケーション
PPTX
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
PDF
試して学べるクラウド技術! OpenShift
PDF
AzureDevOpsで作るHoloLensアプリCI環境
PDF
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
PPTX
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
PDF
Container deployment on Azure
PDF
20190201 Cloud Native Kansai AKS Azure
PDF
俺とHashiCorp
PDF
AWS SAMで始めるサーバーレスアプリケーション開発
PDF
Application Deployment on AWS
PDF
PHP開発者のためのNoSQL入門
Web App for Containers + MySQLでコンテナ対応したPHPアプリを作ろう!
May the FaaS be with us!!
エンジニアのための勉強会 #2 『Public Cloud - AWSの基礎 -』
JAWS-UG Santo 2014-07-05 Drupal on PaaS Cloud
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
OpenLineage による Airflow のデータ来歴の収集と可視化(Airflow Meetup Tokyo #3 発表資料)
実践!AWSクラウドデザインパターン
クラウド+コンテナで作る簡単Webアプリケーション
サンプルアプリケーションで学ぶApache Cassandraを使ったJavaアプリケーションの作り方
試して学べるクラウド技術! OpenShift
AzureDevOpsで作るHoloLensアプリCI環境
AWSへのWindows Server 2003の移行 そして今後インフラとどう向き合うべきか
20140518 JJUG MySQL Clsuter as NoSQL
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Container deployment on Azure
20190201 Cloud Native Kansai AKS Azure
俺とHashiCorp
AWS SAMで始めるサーバーレスアプリケーション開発
Application Deployment on AWS
PHP開発者のためのNoSQL入門

More from Shuji Watanabe (20)

PDF
Serverless - Developers.IO 2019
PDF
Ansible ハンズオン on AWS - DevelopersIO 2017
PDF
SSMでマネージドEC2 #reinvent #cmdevio
PPTX
ELBの概要と勘所
PDF
CloudSearchによる全文検索 - CM:道 2014/08/01
PDF
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
PDF
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
PDF
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
PDF
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
PDF
テスト駆動開発へようこそ
PDF
テスト駆動開発のはじめ方
PDF
ユースケースからテスト駆動開発へ
KEY
テスト駆動開発入門
KEY
テストコードのリファクタリング
KEY
テスト駆動開発の導入ーペアプログラミングの学習効果ー
KEY
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
KEY
アジャイルテスティング
PDF
テストリストの見つけ方
PDF
TDDをはじめよう
KEY
Jenkins導入事例
Serverless - Developers.IO 2019
Ansible ハンズオン on AWS - DevelopersIO 2017
SSMでマネージドEC2 #reinvent #cmdevio
ELBの概要と勘所
CloudSearchによる全文検索 - CM:道 2014/08/01
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
テスト駆動開発へようこそ
テスト駆動開発のはじめ方
ユースケースからテスト駆動開発へ
テスト駆動開発入門
テストコードのリファクタリング
テスト駆動開発の導入ーペアプログラミングの学習効果ー
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
アジャイルテスティング
テストリストの見つけ方
TDDをはじめよう
Jenkins導入事例

Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003

  • 1. CloudFormation による Blue-Green Deployment Ⓒ Classmethod, Inc. 1 DevIO MTUP11-SAPPORO-003 渡辺 修司, クラスメソッド 2014年11月19日
  • 2. 渡辺 修司 • AWSコンサルティング部 • ソリューションアーキテクト • 2014年8月入社 • 前職 • Java業務システムの開発 • Web関連のサービス開発 • 現在 • メンバーズポータル開発 • 開発系のAWS環境のコンサル、開発支援 • 趣味 • ロードバイク、スノーボード、猫 Ⓒ Classmethod, Inc. 2
  • 4. Deployment / 配備 • アプリケーションを配置し、利用できる状態にする • ビルド • サーバへの転送 • アプリケーションサーバの再起動 • 初期リリース時やアップデート時に実施 • デプロイ用ツールなどを使って自動化する • 複数サーバを手動でやるのは手間 • 人為的ミスの防止 Ⓒ Classmethod, Inc. 4
  • 5. Deployment時の課題 • ダウンタイム • メンテナンス時間として利用不可 • 切り戻し • アップデートが原因によるシステム障害 Ⓒ Classmethod, Inc. 5
  • 6. Blue-Green Deployment • ダウンタイムゼロのデプロイメントパターン • マーチン・ファウラ̶が提唱 • プロダクション環境を2系統用意(Blue/Green) • 一方をアクティブ系、もう一方をスタンバイ系 • スタンバイ系にデプロイを行う • デプロイが完了したならばRouterで切り替える • http://martinfowler.com/bliki/BlueGreenDeployment.html Ⓒ Classmethod, Inc. 6
  • 7. Blue-Green Deploymentの課題 • 2系統のサーバが必要 • コストが2倍 • トランザクションデータの扱い • RDBのデータ移行時間が発生 • データベースのスキーマ変更 Ⓒ Classmethod, Inc. 7
  • 8. AWSによる解決と妥協点 • Blue-Green環境は必要に応じて構築 • 不要な時は破棄することでコストを抑える • アップデート後、切り戻しが不要と判断したら破棄 • DBレイヤはBlue-Greenとしない • 妥協する部分 • Multi-AZならば冗長化もされている • 問題発生時はレストアの方針 • DBのスキーマ変更 • クリティカルならばダウンタイムを許容 • 変更前と変更後に対応できるような実装もあり • 切り替え時のユーザ操作の整合性 Ⓒ Classmethod, Inc. 8
  • 9. Cloud Formationによる Blue-Green Deployment 9 AWS CloudFormation
  • 10. CloudFormationでリソースを構築 • 繰り返し作業に効果的な自動化 • 手作業はNG • ヒューマンエラー防止 • AMIイメージを予め作成(Chefなど) Ⓒ Classmethod, Inc. 10 AWS CloudFormation
  • 11. RDSは妥協 • Blue/Greenにするデメリットが大きい • データの同期問題 • スキーマ変更の影響 • アプリレイヤで吸収(必要に応じて) • 問題発生時はバックアップからリストア • どうにもならない場合は止める • 最終的にはコストバランスを考慮 Ⓒ Classmethod, Inc. 11 Amazon RDB
  • 12. テンプレートはレイヤ毎に分割 • Base / Green / Blue のテンプレートを用意 • Base にはVPC関連と共通リソースを定義 • GreenとBlueにはアプリレイヤーを定義 • GreenとBlueは独立してStackを構築/撤収可能 Ⓒ Classmethod, Inc. 12 CloudFormation Template
  • 13. BlueとGreenはパラメータで指定 • 共通テンプレートでOK • パラメータを活用し違いを吸収 Ⓒ Classmethod, Inc. 13 "Parameters": { "Env": { "Type": "String", "Default": "Blue", "AllowedValues": [ "Blue", "Green" ] } }, "Resources": { "FrontWeb1": { "Type": "AWS::EC2::Instance", "Properties": { "SubnetId": { "Fn::FindInMap": [ "Subnet", { "Ref": "Env" }, "AppA" ] } } "Mappings": { "Subnet": { "Blue": { "AppA": "subnet-xxxxxxxxx", "AppC": "subnet-xxxxxxxxx" }, "Green": { "AppA": "subnet-xxxxxxxx", "AppC": "subnet-xxxxxxxx" } } } CloudFormation Template
  • 14. 1)デプロイの準備 • Base環境を構築 • 基本的に1回だけ(必要に応じてUpdate) Ⓒ Classmethod, Inc. 14 CloudFormation Stack
  • 15. 2)初回リリース • Blue環境を構築(初回リリース) • アプリはデプロイツールでデプロイ Ⓒ Classmethod, Inc. 15 CloudFormation Stack
  • 16. 3)初回アップデート • Green環境を構築 • Green環境にアップデート版をデプロイし検証 Ⓒ Classmethod, Inc. 16 CloudFormation Stack 検証できたら Route53の設定を Green側に変更
  • 17. 4)Blue環境の撤収 • Blue環境を削除してコストを押さえる • 不安がある場合はしばらく残してもOK Ⓒ Classmethod, Inc. 17 CloudFormation Stack
  • 18. まとめ • 最小のダウンタイム • アップデート時のリスク対策 • Cloud Formationを活用し、省コスト • Deployの自動化でヒューマンエラーを防止 Ⓒ Classmethod, Inc. 18
  • 19. Ⓒ Classmethod, Inc. #cmdevio ご静聴ありがとうございました。 スライドは後日ブログで公開します。 19 DevIO MTUP11-SAPPORO-003