2014.5.10
JAWS-UG網元機動隊 山形編
Cloud Design Pattern
で学ぶAWS
クラウド時代のモノづくり
作らない(車輪は再発明しない)	

ありものを組み合わせる	

編み出した組み合わせは、惜しみなく
情報発信する
ポ
イ
ン
ト
!
AWSクラウドデザインパターンとは
AWSクラウドを使ったシステムアー
キテクチャ設計を行う際に発生する、
典型的な問題とそれに対する解決策・
設計方法を、分かりやすく分類し
て、ノウハウとして利用できるよう
に整理したものである。
要は AWSを使った設計ノウハウ集
WHO AM I
石田 知也(いしだ ともや)	

cloudpack エバンジェリスト&ソリューションアーキテクト	

全国のJAWS-UG・イベント回ってます!	

JAWS-UG代表(全国の各支部・地域の運営支援)	

AWS SAMURAI AWARD2014 受賞(JAWS-UG貢献)	

好きなAWSサービス:SQS(クラウドの基本は疎結合だ!)
@tomyankuns	

facebook.com/tomyankuns
旅
この1週間で7県
cloudpackの価値
AWS専門部隊
コンサルティング、アセスメント、導入設計
ホスピタリティ
24時間365日有人監視、保守対応
実績
350社を超えるアカウントを運用
セキュリティ
PCI DSS Level 1 Service Provider 認定
スピード
最短30分でのデリバリー実績
Virtual Private Cloud(10.0.0.0/20)
Availability Zone A
IGW
Availability Zone B
VPC Subnet
NATELBELBELB
VPC Subnet
EC2 EC2
EC2 EC2
EC2
VPC Subnet
VPC Subnet
NAT
DB
VPC Subnet
EC2 EC2
EC2 EC2
EC2
VPC Subnet
VPC Subnet
NAT
VPC Subnet
ELBELBELBNAT
トヨタ自動車様
エ
ン
タ
ー
プ
ラ
イ
ズ
バンダイナムコスタジオ様
ゲ
ー
ム
Coiney様金
融
!  
• 
 
 
 
??
本題
http://aws.clouddesignpattern.org/
CDP一覧
みなさんはWebサーバの管理者
Webサーバのアクセスが増えてきた
雑誌やTVで取り上げられる
ユースケース
あなたならどうする?!
網元を使う
正解!x100倍速は正義
!!
こういう時こそ
解決策1
サーバを複製してスケールアウトする
Stampパターン
実装	

!
 OSのブート領域が入っているEBSからAMIを作成すれ
ば、AMIからEC2インスタンスを起動できるので、同一設
定のEC2インスタンスを大量に用意できる。	

(手順)	

EC2インスタンスを起動し、必要なソフトウエアを
インストールする。	

必要な設定を行い、サーバーとして動作する状態に
する。	

動作確認後AMIを取得して登録する。	

そのAMIを使って、必要なときに必要な数だけサー
バーを作成する。
解決策2
サーバを複製してスケールアウト
する(応用編)
Scale Outパターン
実装	

!
ロードバランサ―サービス「ELB」、モニタリングツール
「CloudWatch」、そして自動でスケールアウトする「Auto
Scaling」の三つのサービスを組み合わせることで、負荷に応じて自
動でスケールアウトするシステムを容易に構築できる。	

(手順)	

ELBの配下に(Web/APサーバーとして)EC2を複数並べる。	

EC2を新たに起動するときに利用するAMIを作成しておく。	

EC2数を増減させるトリガーとなる条件(メトリクス)を定
義する。EC2の平均CPU使用率、ネットワーク流量、セッ
ション数、EBSのレイテンシーなどがよく使われる。	

そのメトリクスをCloudWatchを使って監視し、一定の条件を
満たすとアラームを出すように設定する。	

アラームを受けた際、Auto ScalingがEC2数を増減するように
設定する。	

上記設定を完了することで、例えば「平均CPU使用率が70%
以上の状態が5分以上続いた場合、あらかじめ用意したAMIを
使ってEC2インスタンスを2つ起動する」ということが可能に
なる。もちろん、状況に合わせてサーバー数を減らすことも
可能である。
解決策3
コンテンツのデプロイ
NFS Replicaパターン
実装	

!
各EC2インスタンスの仮想ディスクであるEBSに、NFS
サーバーのファイルをコピーしておく。各EC2インスタン
スではEBSのファイルを読み取ることで、NFSサーバーに
アクセスするよりも高いパフォーマンスで参照できる。	

EC2上にNFSサーバーを構築し、共有ファイルを配置
する。	

Auto Scalingで起動するEC2(Webサーバー)は、起
動時にまずNFSサーバーをマウントし、さらにNFS
サーバーの内容をEBSにコピーする。	

各EC2上のアプリケーションはEBSを参照先に設定し
ておく。
解決策4
EC2を用いないWeb配信
Direct Hostingパターン
実装	

!
インターネットストレージのS3上に、公開したい静
的なコンテンツ(HTML/CSS/JavaScript/画像/動画な
ど)をアップロードする。	

S3バケットに、コンテンツを公開するように設定す
る。バケットポリシーに、バケットのコンテンツを
公開するパーミッションを設定する。	

S3のWebサイトホスティング機能をオンにし、イン
デックスページやエラーページを設定することで、
S3単体でWebサイトをホストできる。
解決策5
コンテンツ配信の効率化
Write Proxyパターン
実装	

!
データを受け取るためのEC2インスタンスを起動す
る。EC2インスタンスは、最終的なデータ格納先と
なるS3と同一リージョンで起動する。	

EC2インスタンス上にFTPサーバーやWebサーバー、
AsperaやTsunamiUDPなどのUDP転送ソフト、もしく
は転送速度をアクセラレートするようなソフトをイ
ンストールする(このサーバーを「アップロードサー
バー」と呼ぶ)。	

クライアントからアップロードサーバーにデータを
転送する。小さいサイズのファイルが大量にある場
合は、一旦クライアントで一つのファイルにまとめ
る。	

アップロードサーバーへの転送完了後(もしくは逐
次処理で)、アップロードサーバーからS3に転送す
る。クライアントでアーカイブした場合は、アップ
ロードサーバーで解凍後にS3へ転送する。
解決策6
リンクの自動書き換え
URL Rewritingパターン
AWSでは静的コンテンツ配信にS3を利用できる。また、
S3上に配置したコンテンツをオリジナルとし、コンテン
ツ配信サービスのCloudFrontを利用すれば全世界に遅延
なくコンテンツを配信できる。	

(手順)	

EC2上の静的コンテンツ(JavaScript/CSS/画像など)
の一部をS3にアップロード(同期)する。	

必要に応じて、静的コンテンツがアップロード(同
期)されるS3をオリジナルとしたCloudFrontを作成
する(CloudFrontを利用する場合はオリジナルサー
バーをS3ではなく直接EC2にすることも可能)。	

HTMLタグ上の静的コンテンツのURLをS3もしくは
CloudFrontのものに書き換える。	

Apacheのフィルターモジュール(mod_ext_filter/
mod_sed)やプロキシーとして用意したNginxなどで
動的に書き換えることも可能。
パターンを駆使すれば
こんな構成も
http://aws.clouddesignpattern.org/
Kindle版あり
もくもく勉強会ネタに
まとめ
Cloud Design Patternは、AWSを用い
て設計する際のバイブルです!
先人達の知恵を借りて、正しくAWSを
利用しましょう!
新たなパターンを編み出したら、発表し
てみましょう!
http://www.cloudpack.jp/
suuport@cloudpack.jp
@cloudpack_jp

20140510_JAWS-UG網元機動隊 山形編