クラウドのためのアーキテクチャ設計 - ベストプラクティス -

Post on 03-Nov-2014

44 Views

Category:

Technology

8 Downloads

Preview:

Click to see full reader

DESCRIPTION

2011年5月19日に行ったWebinarの資料です。 by Amazon Web Services

TRANSCRIPT

クラウドのためのアーキテクチャ設計- ベストプラクティス -

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)

top related