View
44
Download
8
Embed Size (px)
DESCRIPTION
2011年5月19日に行ったWebinarの資料です。 by Amazon Web Services
Citation preview
クラウドのためのアーキテクチャ設計- ベストプラクティス -
2011年5月19日
玉川 憲 (@KenTamagawa ), エバンジェリスト
大谷晋平 (@shot6), ソリューションアーキテクト
ウェビナーへようこそ!
参加者は、自動的にミュートになっています
質問を投げることができます!
GoToWebinarの仕組みを使って、書き込んでください
ただし環境によっては、日本語の直接入力ができないので、
お手数ですが、テキストエディタ等に打ち込んでから、
コピペしてください
最後のQ&Aの時間で、できるだけ回答させて頂きます
書き込んだ質問は、主催者にしか見えません
Twitterのハッシュタグは#jawsugでどうぞ
Copyright © 2011 Amazon Web Services
AWSアーキテクチャセンターのご紹介
aws.amazon.com/jp/architecture/
Webinarのご案内
ホワイトペーパー紹介
「クラウドのためのアーキテクチャ設計ベストプラクティス」by Jinesh Varia
日本語版、近日公開!!
Copyright © 2011 Amazon Web Services
トレードオフの習得
抽象化されたリソース
サーバーやハードディスクの実体は気にせずに、インスタンスとボリュームを扱える
必要なときに瞬時に調達
必要なときに瞬時に調達でき、何時でも止められる
スケールアウト自由自在
実際のピークに応じてスケールアウト/イン
従量課金 実際に使った分だけ支払う
自動化プログラマブルなインフラストラクチャ。APIを用いて自動化できる。
クラウドコンピューティングの特徴
AWS プラットフォーム
AWS プラットフォーム
いつでも、必要なだけ、安価に、コンピュータリソースを利用可能に
スケーラビリティ
スケーラブルなアプリケーションの特徴
AWSを用いたスケーラブルなアーキテクチャ構築
スケーラブルなインフラストラクチャを活用するには、スケーラブルなアーキテクチャが必要
リソースの増加に比例して、パフォーマンスが増加する
回復力に富んでいる
成長するにつれて費用効率がさらに良くなる(ユニット数が増加するにつれて、ユニット単位あたりコストが下がる)。
スケーラブルなアプリケーションはクラウド以前でも言われてきた
クラウド以前から大切だったこと
スケーラビリティ(拡張性)の大切さスケールアップ / スケールアウトなどの手法
クラウド以後で、より大切になること
Elasticity – 弾力性: いつでも必要なだけ安価にリソースが調達できるならば??
「非常に迅速な」リソースの増減を可能とするアーキテクチャ??
Copyright © 2011 Amazon Web Services
Elasticity(弾力性)の真価を理解する
※AWSエコノミクスセンター: http://aws.amazon.com/jp/economics/
1日のCPU負荷
0
2
4
6
8
10
12
14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
負荷
時刻
25% 節約
年間のCPU負荷
0
2
4
6
8
10
12
1 5 9 13 17 21 25 29 33 37 41 45 49
Load
Week
50% 節約
弾力性のある賢いアーキテクチャを作ろう
自社のアプリケーションを弾力性のあるものに!
アーキテクトは想像力を高めよう
もはやアーキテクチャ上の設計要件の一つ 弾力性を高めるとどんなメリットが?
どのコンポーネントに弾力性を?
どのレイヤーに弾力性を?
弾力性のあるアーキテクチャは芸術的
Copyright © 2011 Amazon Web Services
クラウドの制約をむやみに恐れない
よくある言い訳
「クラウドは、大量のRAMを積んでいるものがない」
「私のデータベースはもっとIOPSが必要です」
工夫しましょう
分散キャッシュを使えば?複数サーバーで分割すれば??
抽象的なクラウドリソース
x オンデマンド調達モデル
= 無限の可能性
Copyright © 2011 Amazon Web Services
クラウドのためのアーキテクチャ設計ベストプラクティス
1. 故障のための設計(Design for failure)2. 疎結合なコンポーネント3. 弾力性の実装4. 全レイヤにおけるセキュリティ担保5. 並列処理の使い倒し6. 異なるストレージの使い分け
1. 故障のための設計
“あらゆるものが何時でも故障しうる"Werner Vogels, CTO Amazon.com
そうすれば、何も故障しない
単一障害点を避ける全てが故障すると仮定したうえで、さかのぼって設計するゴール: たとえ、物理的ハードウェアが故障したり置きかえられたりしようとも、アプリケーションは動き続ける
1. 故障のための設計人生を楽にするツール達
サーバーコピーをAMIとして取得し、何時でも起動可能に
Availability Zone #1
Auto Scaling Group
Amazon Machine Image
Amazon EC2 Instance
Web Server
App Server
LB
www.myphpwebsite.com
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
EBS
Availability Zone #1
Amazon Machine Image
Auto Scaling Group
LB
www.myphpwebsite.com
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon Machine Image
Amazon EC2 Instance
EBS
1. 故障のための設計人生を楽にするツール達
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強する
Availability Zone #1
Auto Scaling Group
LB
www.myphpwebsite.com
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
EBS
Availability Zone #1
Amazon EC2 Instance
Amazon Machine Image
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Amazon EC2 Instance
EBS
Web Server
App Server
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static load)
LB
www.myphpwebsite.com
(dynamic traffic)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Dynamic Data
Availability Zone #1
Amazon EC2 Instance
Amazon Machine Image
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Amazon EC2 Instance
EBS
Web Server
App Server
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static load)
LB
www.myphpwebsite.com
(dynamic traffic)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Dynamic Data
Amazon CloudWatch
(Monitoring)
Amazon SimpleDB
(Catalog and Config data)
Amazon SNS
(notifications)
Design for Failure with AWSTools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強するAmazon Elastic Block Store (EBS)のスナップショットを用いる
Availability Zone #1
Amazon EC2 Instance
Amazon Machine Image
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Amazon EC2 Instance
EBS
Web Server
App Server
Logs
Static Data
Snapshots
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
EBS
Design for Failure with AWSTools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強するAmazon Elastic Block Store (EBS)のスナップショットを用いる自動復旧のために自動スケーリング(Auto-scaling)を用いる
Availability Zone #1
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
EBSSnapshots
Availability Zone #1
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
EBSSnapshots
Amazon EC2 Instance
Web Server
App Server
Design for Failure with AWSTools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強するAmazon Elastic Block Store (EBS)のスナップショットを用いる自動復旧のために自動スケーリング(Auto-scaling)を用いるMulti-AZを用いたデータ同期とデータ復旧
Availability Zone #2
Amazon EC2 Instance
Availability Zone #1
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
EBSSnapshot
s
Amazon EC2 Instance
Web Server
App Server
EBS
Availability Zone #2
Amazon EC2 Instance
Availability Zone #1
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Logs
Static Data
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
EBS
Snapshots
Amazon EC2 Instance
Web Server
App Server
EBS
Design for Failure with AWSTools to make your life easier
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強するAmazon Elastic Block Store (EBS)のスナップショットを用いる自動復旧のために自動スケーリング(Auto-scaling)を用いるMulti-AZを用いたデータ同期とデータ復旧異なるAZへのオンデマンドなアプリケーションプロビジョニング
Availability Zone #2Availability Zone #1
Auto Scaling Group
Distribution
Buckets
Amazon
CloudFront
Logs
Static
Data
Amazon S3
media.myphpwebsite.com
(static data)
LB
www.myphpwebsite.com
(dynamic data)
Elastic Load
Balancer
Amazon Route 53
(DNS)
Amazon EC2 Instance
EBSSnapshots
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
Web Server
App Server
Synchronous
Replication
Amazon EC2 Instance
EBS
Amazon EC2 Instance
Web Server
App Server
Amazon EC2 Instance
Web Server
App Server
1. 故障のための設計人生を楽にするツール達
サーバーコピーをAMIとして取得し、何時でも起動可能にアプリケーションを耐障害性の高いサービスで補強するAmazon Elastic Block Store (EBS)のスナップショットを用いる自動復旧のために自動スケーリング(Auto-scaling)を用いるMulti-AZを用いたデータ同期とデータ復旧異なるAZへのオンデマンドなアプリケーションプロビジョニングMulti-AZを用いたアプリケーション配備とデータ同期
Availability Zone #2
Auto Scaling group : Web Tier
Availability Zone #1
Cache Tier
Auto Scaling group : Web Tier
DBMaster
Elastic Load Balancer
Memcache
LB
TomcatMemcache
Read Replica
Cache Tier
MemcacheTomcat
Memcache
Multi-AZ
Slave
Amazon Route 53
(DNS)
Distribution
Buckets
Amazon
CloudFront
Amazon S3
Amazon RDS
www.myphpwebsite.com
(dynamic data)
media.myphpwebsite.com
(static data)
Amazon EC2
Web Server
App Server
Web Server
App Server
Web Server
App Server
Web Server
App Server
Availability Zone #2
Auto Scaling group : Web Tier
Elastic Load Balancer LB
Cache Tier
MemcacheTomcat
Memcache
Multi-AZ
Slave
Amazon Route 53
(DNS)
Distribution
Buckets
Amazon
CloudFront
Amazon S3
www.myphpwebsite.com
(dynamic data)
media.myphpwebsite.com
(static data)
Web Server
App Server
Web Server
App Server
DBMaster
Availability Zone #2
Auto Scaling group : Web Tier
Web Server
App Server
Web Server
App Server
Elastic Load Balancer LB
Cache Tier
MemcacheTomcat
Memcache
Multi-AZ
Slave
Amazon Route 53
(DNS)
Distribution
Buckets
Amazon
CloudFront
Amazon S3
www.myphpwebsite.com
(dynamic data)
media.myphpwebsite.com
(static data)
Web Server
App Server
Web Server
App Server
Multi-AZ
SlaveDB
Master
2. 疎結合なコンポーネント疎結合であればあるほど、スケールする
コンポーネントを独立させるブラックボックスとみなして設計コンポーネント間を疎結合にアプリケーションをステートレスに
Controller A Controller B Controller C
Controller A Controller B Controller C
Q Q Q
密結合
キューをもちいて疎結合に
Amazon SQSをバッファに用いる
3. 弾力性の実装
コンポーネントの健全性や場所を、決めつけないリブートを何時でもできるよう設計するインスタンスをブートストラップインスタンス自身が“自分の役割”を分かるように
動的なコンフィギュレーションを可能にする
弾力性は、クラウドの基本
Auto-scaling(オートスケーリング)を利用するElastic Load Balancingを複数レイヤで利用SimpleDBに設定情報を入れて、インスタンスをブートストラップChef、Puppetのような構成管理ツールを用いる
Centos
Ruby Runtime
Your Code
logger
RubyGems
memcached
Rails
Mongrel
Apache
Linux
JEE
Your Code
Log4J
Spring
Hibernate
Struts
Tomcat
Apache
Windows
.NET
Your Code
Log4Net
Spring.NET
nHibernate
ASP.NET MVC
ASP.NET
IIS
Centos
Ruby Runtime
Your Code
logger
RubyGems
memcached
Rails
Mongrel
Apache
OS
Framework
Your Code
Libraries
Packages
DB Caching
MVC
App Server
Web Server
Java Stack .NET Stack RoR stack
Standardized Technology Stacks3. 弾力性を実装する標準的なアプリケーションスタック
3 Approaches to design MDE
AMIの完全コピー
ブート時に設定する“ゴールデンAMI”
JeOS とChefを用いたAMI
メンテナンスが楽柔軟にコントロール可能
設定が簡単
3. 弾力性を実装するAMIを設計する3つのアプローチ
.NET Stack Java AMI
Amazon EC2
Windows
.NET
Your Code
Log4Net
Spring.NET
nHibernate
ASP.NET MVC
IIS
IIS
Windows
.NET
Your Code
Log4Net
Spring.NET
nHibernate
ASP.NET MVC
IIS
IIS
Windows
.NET
Your Code
Log4Net
Spring.NET
nHibernate
ASP.NET MVC
IIS
IIS
Windows
.NET
Your Code
Log4Net
Spring.NET
nHibernate
ASP.NET MVC
IIS
IIS
3 Approaches to design MDE3. 弾力性を実装する
AMIの完全コピー
Linux
JEE
Your Code
Log4J
Spring
Hibernate
Struts
Tomcat
Apache
Linux
JEE
Your Code
Log4J
Spring
Hibernate
Struts
Tomcat
Apache
Java Stack Java AMI
Amazon EC2
“Golden AMIs” with fetch on boot
Windows
.NET
IIS
IIS
Windows
.NET
IIS
IIS
Windows
.NET
IIS
IIS
Windows
.NET
IIS
IIS
Fetch on boot time
3 Approaches to design MDE3. 弾力性を実装する
ゴールデンAMI
Linux
JEE
Your Code
Log4J
Spring
Hibernate
Struts
Tomcat
Apache
Linux
JEE
Hibernate
Tomcat
Apache
Your Code
Amazon S3
Log4JSpring
Struts
Source Control
AMI (JeOS)
Amazon EC2
Chef Server
Linux
CHEF Agent
Windows
CHEF Agent
Cookbooks Recipes
3 Approaches to design MDE3. 弾力性を実装する
JeOS とChefを用いたAMI
Java Stack
Linux
JEE
Your Code
Log4J
Spring
Hibernate
Struts
Tomcat
Apache
Amazon S3
Hibernate
TomcatLog4J
Spring
Struts
Apache
Your Code
Source Control
自己管理するEC2インスタンスの構築
TagあるいはUserDataを読み込んでインスタンス起動
Startupコードに、コンフィグデータをチェックさせる
上記の動的な情報を基にして、インスタンスの役割をセットする
パッケージをインストール/アップデートする
サービスを開始する
アプリケーションのコードをインストール/アップデートする
必要なEBSボリュームをCreate/attachする
Elastic IPアドレスを付加する
追加のTagをセット
最後にヘルスチェックを実施して、オンラインにする
Copyright © 2011 Amazon Web Services
3 Approaches to design MDE
AMIの完全コピー
ブート時に設定する“ゴールデンAMI”
JeOS とChefを用いたAMI
メンテナンスが楽柔軟にコントロール可能
設定が簡単
3. 弾力性を実装するAMIを設計する3つのアプローチ
4. 全レイヤにおけるセキュリティ担保
セキュリティは責任分担モデル
全てのレイヤでセキュリティを考える必要がある
常にセキュリティを考えながら設計する
責任分担モデル
Copyright © 2011 Amazon Web Services
物理インタフェース
顧客 1
ハイパーバイザー
顧客 2 顧客 n…
…仮想インタフェース
ファイヤウォール
顧客1セキュリティグルー
プ
顧客2セキュリティグルー
プ
顧客nセキュリティグルー
プ
顧客が管理
AWSが管理
SAS 70 Type II AuditISO 27001/2認証PCI DSS 2.0 Level 1-5HIPAA/SOX Compliance
IAMポリシー認証デバイス, VPC, S3 バケットポリシー, EC2セキュリティグループ, EFS in EC2等..
出入りするデータの暗号化その他のデータの暗号化
AWS セキュリティ証明書秘密鍵のローテーション
アプリケーション、OS、ミドルウェアレベルの担保
セキュリティは責任分担モデル(Shared Responsibility)
アプリケーション
セキュリティ
サービスセキュリティ
インフラストラクチャ
セキュリティどのようにAWSがインフラをセキュアにしているか?
セキュリティを高めるためにどのような機能を使うことができるか?
どのようにしてアプリケーションを守るか?
セキュリティグループ
Copyright © 2011 Amazon Web Services
5. 並列処理の使い倒し
異なるアーキテクチャを、並列に実証実験するクラウドサービスに、マルチスレッドでアクセスする(S3, SimpleDB)ワークフローを分割して並列化して処理する(SQS)並列なジョブをAmazon Elastic MapReduce上で走らせるElastic Load Balancingを用いて複数サーバーに処理を分散するHPCを帯域保障されるネットワークでつないで並列処理を行う(EC2)
シーケンシャルな処理にこだわるのは過去の話に
6. クラウドストレージの使い分け
Amazon S3: 大容量の静的なオブジェクト
Amazon SimpleDB: シンプルなデータのインデックスとクエリー
Amazon EC2 local disc drive : 揮発性のあるデータ
Amazon EBS: 永続的データ (RDBSにも使える)
Amazon RDS: 自動管理されたMySQL (Oracleも近日)
クラウドストレージは用途に応じて用意されている
6. クラウドストレージを使い分けるクラウドストレージの適材適所
Amazon S3 + CF Ephemeral
Store (EC2)
Amazon EBS Amazon
SimpleDB
Amazon
RDS
理想的な使い方
大量のデータ。一度書き込んで、沢山読みだす
一時的なデータの書き込み
あらゆる種類の永続的データ。EC2インスタンスと寿命異なる
軽量の属性付データ
リレーショナルDBのデータ
良い使用例
音声、ビデオ、画像、バックアップ、アーカイブ
設定データ、一時処理データ、Tempデータ
クラスタリング、ブートデータ、ログ、商用DBのデータ
クエリー用、マッピング用、タグ付け、メタデータ
複雑なトランザクションシステム、オーダー処理
お勧めしない使い方
クエリー、検索 顧客データ、データベースログ、バックアップ
リレーショナルクエリ(join)
悪い使用例
データベース、ファイルシステム
センシティブなデータ
コンテンツ配信
OLTP 単純なデータ保管
ここまでの道のりクラウドアーキテクチャのベストプラクティス
1. 故障のための設計(Design for failure)2. 疎結合なコンポーネント3. 弾力性の実装4. 全レイヤにおけるセキュリティ担保5. 並列処理の使い倒し6. 異なるストレージの使い分け
Q & A
Copyright © 2011 Amazon Web Services
ご参加ありがとうございました
Copyright © 2011 Amazon Web Services
Webinar終了後のお茶の間トークも
楽しんでいただけましたか?
Copyright © 2011 Amazon Web Services
下記のスライドシェア資料をご参照ください
①AWSアカウント開設
http://t.co/3eBGHaG
②EC2でWebサーバー立ち上げ
http://t.co/HiinYgI
③S3にwebコンテンツ保存
http://www.slideshare.net/kentamagawa/s3web
④EC2でWindowsサーバ立ち上げ
http://www.slideshare.net/kentamagawa/ec2windows
⑤CloudFormationでRedmine立ち上げ
http://www.slideshare.net/kentamagawa/aws-cloudformation-redmine
AWSのはじめ方
AWSプレミアムサポートアーキテクチャ設計に関するガイダンス、ベストプラクティスも日本語でご案内できますaws.amazon.com/jp/premiumsupport/
Copyright © 2011 Amazon Web Services
ブロンズ シルバー ゴールド プラチナ
初回応答時間 12時間 4時間 1時間 15分
サポート連絡先 1人 2人 3人 無制限
24/365対応 なし なし あり あり
TEL可能 不可 不可 可能 可能
専任スタッフ なし なし なし あり
特別サポート なし なし なし あり
料金 $49AWS利用総額の
5%
AWS利用総額の$0~$10K: 10%
$10K~$80K: 7%
$80K~: 5%
(最低$400)
AWS利用総額の10%
(最低$15K)