18. www.myphpwebsite.com
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Web Server
Amazon Machine
Image
App Server
Amazon EC2
Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Availability Zone #1
19. www.myphpwebsite.com
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Web Server
Amazon Machine
Image App Server
Amazon EC2
Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Availability Zone #1
21. www.myphpwebsite.com
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Web Server
App Server
Amazon EC2
Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Availability Zone #1
22. www.myphpwebsite.com
(dynamic traffic) media.myphpwebsite.com
(static load)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Web Server
Logs
Amazon Machine Buckets
Static Data
Image
App Server Amazon S3
Amazon EC2
Instance
Auto Scaling Group
Dynamic Data
Amazon EC2
Instance
EBS
Availability Zone #1
23. www.myphpwebsite.com
(dynamic traffic) media.myphpwebsite.com
(static load)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Amazon SNS Web Server
(notifications) Logs
Amazon Machine Buckets
Static Data
Image
App Server Amazon S3
Amazon EC2
Instance
Amazon SimpleDB
(Catalog and Config data) Auto Scaling Group
Dynamic Data
Amazon EC2
Amazon CloudWatch Instance
(Monitoring)
EBS
Availability Zone #1
24. Design for Failure with AWS
Tools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能に
アプリケーションを耐障害性の高いサービスで補強する
Amazon Elastic Block Store (EBS)のスナップショットを用いる
25. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load
LB
Balancer
Amazon
Distribution
CloudFront
Web Server
Logs
Amazon Machine Buckets
Static Data
Image
App Server Amazon S3
Amazon EC2
Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Snapshots
Availability Zone #1
26. Design for Failure with AWS
Tools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能に
アプリケーションを耐障害性の高いサービスで補強する
Amazon Elastic Block Store (EBS)のスナップショットを用いる
自動復旧のために自動スケーリング(Auto-scaling)を用いる
27. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Web Server
Logs
Static Data Buckets
App Server Amazon S3
Amazon EC2
Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Snapshots
Availability Zone #1
28. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Web Server Web Server
Logs
Static Data Buckets
App Server App Server Amazon S3
Amazon EC2 Amazon EC2
Instance Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Snapshots
Availability Zone #1
29. Design for Failure with AWS
Tools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能に
アプリケーションを耐障害性の高いサービスで補強する
Amazon Elastic Block Store (EBS)のスナップショットを用いる
自動復旧のために自動スケーリング(Auto-scaling)を用いる
Multi-AZを用いたデータ同期とデータ復旧
30. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Web Server Web Server
Logs
Static Data Buckets
App Server App Server Amazon S3
Amazon EC2 Amazon EC2
Instance Instance
Auto Scaling Group
Amazon EC2
Instance
EBS
Snapshot
s
Availability Zone #1 Amazon EC2
Instance
EBS
Availability Zone #2
31. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Amazon
Distribution
CloudFront
Web Server Web Server
Logs
Static Data Buckets
App Server App Server Amazon S3
Amazon EC2 Amazon EC2
Instance Instance
Auto Scaling Group
Snapshots
Amazon EC2
Instance
EBS
Availability Zone #1 Amazon EC2
Instance
EBS
Availability Zone #2
32. Design for Failure with AWS
Tools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能に
アプリケーションを耐障害性の高いサービスで補強する
Amazon Elastic Block Store (EBS)のスナップショットを用いる
自動復旧のために自動スケーリング(Auto-scaling)を用いる
Multi-AZを用いたデータ同期とデータ復旧
異なるAZへのオンデマンドなアプリケーションプロビジョニング
33. www.myphpwebsite.com
(dynamic data) media.myphpwebsite.com
(static data)
Amazon Route 53
(DNS)
Elastic Load LB
Balancer
Distribution
Amazon
CloudFront
Logs Buckets
Web Server Web Server Web Server Web Server Static
Data
App Server App Server App Server App Server Amazon S3
Amazon EC2 Amazon EC2 Amazon EC2 Amazon EC2
Instance Instance Instance Instance
Auto Scaling Group
Amazon EC2 Amazon EC2
Instance Instance
Synchronous
EBS Replication EBS
Snapshots
Availability Zone #1 Availability Zone #2
35. www.myphpwebsite.com
(dynamic data)
Amazon Route 53 media.myphpwebsite.com
(DNS) (static data)
Elastic Load Balancer LB
Auto Scaling group : Web Tier Auto Scaling group : Web Tier
Web Server Web Server Web Server Web Server
App Server App Server App Server App Server Distribution
Amazon
Amazon EC2 CloudFront
Memcache Memcache Memcache Memcache
Tomcat Tomcat
Cache Tier Cache Tier
DB Multi-AZ
Buckets
Amazon RDS Slave
Master Read
Replica
Availability Zone #1 Availability Zone #2 Amazon S3
36. www.myphpwebsite.com
(dynamic data)
Amazon Route 53 media.myphpwebsite.com
(DNS) (static data)
Elastic Load Balancer LB
Auto Scaling group : Web Tier
Web Server Web Server
App Server App Server Distribution
Amazon
CloudFront
Memcache Memcache
Tomcat
Cache Tier
DB
Multi-AZ
Buckets
Slave
Master
Availability Zone #2 Amazon S3
37. www.myphpwebsite.com
(dynamic data)
Amazon Route 53 media.myphpwebsite.com
(DNS) (static data)
Elastic Load Balancer LB
Auto Scaling group : Web Tier
Web Server Web Server
Web Server Web Server Distribution
App Server App Server
App Server App Server
Amazon
CloudFront
Memcache Memcache
Tomcat
Cache Tier
DB
Multi-AZ
Buckets
Slave
Master
Availability Zone #2 Amazon S3
38. 2. 疎結合なコンポーネント
疎結合であればあるほど、スケールする
コンポーネントを独立させる
ブラックボックスとみなして設計
コンポーネント間を疎結合に
アプリケーションをステートレスに
Amazon SQSをバッファに用いる
密結合 Controller A Controller B Controller C
Q Q Q
キューをもちいて
疎結合に Controller A Controller B Controller C
40. 3. 弾力性を実装する
Standardized Technology Stacks
標準的なアプリケーションスタック
WebIIS
Apache
Server
ASP.NET
Mongrel
Tomcat
App Server
ASP.NET MVC
Struts
Rails
MVC
Your Code
Log4Net
logger
Log4J
Libraries
Spring.NET
RubyGems
Spring
Packages
memcached
nHibernate
Hibernate
DB Caching
Ruby JEE
Runtime
.NET
Framework
Windows
Centos
Linux
OS
Java Stack .NET Stack RoR stack
42. 3. 弾力性を実装する
3 Approaches to design MDE
AMIの完全コピー
Apache
Apache
Tomcat Tomcat
Struts Struts
IIS IIS
Your Code Your Code IIS
ASP.NET MVC
IIS
IIS
IIS
ASP.NET MVC
IIS
Your Code ASP.NET MVC
Your Code
IIS
Log4Net Log4Net
Your Code
ASP.NET MVC
Log4J Spring.NET
Log4Net
Spring.NET
Log4J
Your Code
nHibernate nHibernate
Spring.NET
Log4Net
.NET .NET
nHibernate
Spring.NET
Windows Windows
Spring
.NET
nHibernate
Windows
.NET
Spring Windows
Hibernate
Hibernate Amazon EC2
JEE
JEE Linux
Linux
.NET Stack Java AMI
43. 3. 弾力性を実装する
3 Approaches to design MDE
“Golden AMIs” with fetch on boot
ゴールデンAMI
Apache Your
Code Fetch on boot time
Source Control
Tomcat
Struts Struts
Log4J
Spring
Your Code IIS
Amazon S3 IIS IIS
IIS IIS
IIS
IIS
Log4J .NET
Windo .NET
ws
IIS
.NET
Windo .NET Windo
Apache ws ws
Windo
Spring ws
Tomcat
Hibernate Hibernate
JEE
Amazon EC2
JEE
Linux
Linux
Java Stack Java AMI
44. 3. 弾力性を実装する
3 Approaches to design MDE
JeOS とChefを用いたAMI
Apache Your
Code Cookbooks
Tomcat Source Control
Recipes
Struts
Apache Chef Server
Your Code Struts
Tomcat
Log4J
Hibernat
Log4J e Spring
CHEF
Agent
Spring Amazon S3
Windows
Hibernate
CHEF Agent
JEE
Linux
Amazon EC2
Linux
Java Stack AMI (JeOS)