社内勉強会vol.3
AWSのインフラを
デザインパターン駆使して設計・構築できる!?
Takayuki Niinuma@Kagoshima
お願い
• 参加者は基本的にはミュートにしてください
• 画面共有のボタンは押さないでください
• 質問があればmentionを入れて通知ください
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
Title: technologist
Facebook: takayuki.niinuma
Twitter: @twinuma
GitHub: https://github.com/Twinuma
Blog: http://takachan.hatenablog.jp
“AWS”タグが付いた投稿は、現在19個
私のクローズドだったtipsダダ漏れ
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
\ここで、皆さんに質問/

AWSのサービスはどれだけ知っていますか?
Amazon EC2 Route 53 Amazon S3 Amazon RDS
\ここで、皆さんに質問/

AWSのサービスはどれだけ知って
いますか?
自己紹介
AWSのCloud Design Pattern紹介
アプリケーション機能要件に対しての構築パターン
\ここで、皆さんに質問/

AWSのサービスはどれだけ知って
いますか?
自己紹介
AWSのCloud Design Pattern紹介
アプリケーション機能要件に対しての構築パターン
クラウドアーキテクティング原則
クラウドの特性を考えると、これまでのシステムアーキテクティングと異なった
視点が必要となる。それをクラウドアーキテクティング原則として整理している。
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
クラウドアーキテクティング原則
クラウドの特性を考えると、これまでのシステムアーキテクティングと異なった
視点が必要となる。それをクラウドアーキテクティング原則として整理している。
• できるだけサービスを利用
• 机上実験よりも実証実験
• スモールスタートからスケールアウト
• 変化に対して全レイヤで対処
• 故障のための設計(Design For Failure)
• 最初だけではなく周期的なカイゼン
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
クラウドアーキテクティング原則
クラウドの特性を考えると、これまでのシステムアーキテクティングと異なった
視点が必要となる。それをクラウドアーキテクティング原則として整理している。
• できるだけサービスを利用
• 机上実験よりも実証実験
• スモールスタートからスケールアウト
• 変化に対して全レイヤで対処
• 故障のための設計(Design For Failure)
• 最初だけではなく周期的なカイゼン
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
できるだけサービスを利用
すでにクラウド上に存在しているサービスのメリット/デメリットを正確に理解し、使いこ
なすことが重要である。利用者としては、車輪の再開発は極力避けるべきである。
SDKs
Java Python PHP .NET Ruby nodeJS
iOS Android AWS Toolkit for
Visual Studio
AWS Toolkit
for Eclipse
Tools for Windows
PowerShell
CLI
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:S3でWebサイトのホスティング
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:S3でWebサイトのホスティング
• 99.999999999%の堅牢性と、99.99%の可用性を提供
• 3ヶ所以上の異なるロケーションにデータ保管
• データ転送量、ファイルサイズで課金(基本的にEC2より安価)
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:RDSでマネージドリレーショナルデータベース
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:RDSでマネージドリレーショナルデータベース
• 自動バックアップ、Restore To Point In Time
• レプリケーション(Multi-AZ、Read Replica)
• パッチ管理(自動マイナーバージョンアップ)
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
机上実験よりも実証実験
クラウドの良さは瞬時に安く調達できることなので、机上の実験に時間をかけず、その場です
ぐに試すべきである。そうすることで短時間で精度の高い結果が分かり、よりカイゼンできる。
数日
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
机上実験よりも実証実験
クラウドの良さは瞬時に安く調達できることなので、机上の実験に時間をかけず、その場です
ぐに試すべきである。そうすることで短時間で精度の高い結果が分かり、よりカイゼンできる。
数日 数秒
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:EC2でキャパシティプランニングの短縮
• 負荷テストでリソース不足がわかった場合、その後のチューニングが大変
• 事前のキャパシティプランニングに時間をかけてしまう
オンプレミス
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
例:EC2でキャパシティプランニングの短縮
• 負荷テストでリソース不足がわかった場合、その後のチューニングが大変
• 事前のキャパシティプランニングに時間をかけてしまう
オンプレミス
• 負荷テストでリソース不足が分かったらすぐに調整(スケールアップ/アウト)
• 調整時に仮想サーバを増やし過ぎたら減らせばいい(課金も止まる)
クラウド(AWS)
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
ただし・・・(注意点)
できるだけサービスを利用
• 何でもかんでもサービスを使えばいいというわけではない
• ちゃんとできないことも把握して適材適所で利用する
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
ただし・・・(注意点)
できるだけサービスを利用
• 何でもかんでもサービスを使えばいいというわけではない
• ちゃんとできないことも把握して適材適所で利用する
Amazon S3
• 独自ドメインがHTTPS通信が利用できない
• BASIC認証が利用できない
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
ただし・・・(注意点)
できるだけサービスを利用
• 何でもかんでもサービスを使えばいいというわけではない
• ちゃんとできないことも把握して適材適所で利用する
Amazon S3
• 独自ドメインがHTTPS通信が利用できない
• BASIC認証が利用できない
Amazon RDS
• OSにログインできない
• 権限の制約などによる利用できない機能がある
ローカルディスクへのデータの書き出しなど
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
ただし・・・(注意点)
机上実験よりも実証実験
• 必要な仮想サーバの性能と数量を決めるためのキャパシティプランニング
は、事前に時間を掛ける必要はないが・・・
• 負荷に対するアーキテクチャを間違えると負荷テストの結果、必要な仮想
サーバの性能と数量が膨大(=高額)になる可能性も・・・
• 終盤のアーキテクチャの変更は危険がいっぱい・・・(スケールアップも
限界はある・・・)
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
ただし・・・(注意点)
机上実験よりも実証実験
• 必要な仮想サーバの性能と数量を決めるためのキャパシティプランニング
は、事前に時間を掛ける必要はないが・・・
• 負荷に対するアーキテクチャを間違えると負荷テストの結果、必要な仮想
サーバの性能と数量が膨大(=高額)になる可能性も・・・
• 終盤のアーキテクチャの変更は危険がいっぱい・・・(スケールアップも
限界はある・・・)
アーキテクチャの設計は机上の実験も含め、
事前に時間をかけたい
引用 - 実践!AWSクラウドデザインパターン(http://www.slideshare.net/suzlab/cdp-28868858) -
AWSクラウドデザインパターン
AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な
問題とそれに対する解決策・設計方法を、わかりやすく分類して、ノウハウとして利
用できるように整理したものである。
AWSクラウドデザインパターン
http://aws.clouddesignpattern.org/
AWSクラウドデザインパターン
http://aws.clouddesignpattern.org/
AWSクラウドデザインパターン
現在48パターン+カテゴライズ待ち15パターン
例:Cloud DI Pattern
• 解決したい課題
• クラウドでの解決/パターンの説明
• 実装
• 構造
• 利点
• 注意点
• その他
• 関連ブログ
例:Cloud DI Pattern
<解決したい課題>
規模の大きなシステムでは、アクセス数などの増大とともに多数のサーバーを増設する
ことになる。
その場合、サーバー構築に必要なインストールや設定を一つひとつ手作業で行うのは非
常に手間となり、期限内で終わらせることも難しくなる。サーバー構築の自動化を行う
方法としてシステム管理ツールを利用する方法もあるが、そこにはコストの問題もある。
例:Cloud DI Pattern
<クラウドでの解決/パターンの説明>
仮想サーバーを起動した際、そのサーバーの目的に合わせてサーバーの内部構成を自動的に構
築したいケースがある。特にScale OutパターンやScheduled Autoscalingパターンを使って運
用を自動化したい場合に求められる。こうしたケースではBootstrapパターンが有効だが、外出
ししておきたい情報(例えばDB接続先IPアドレス、サーバー名、認識番号など)が多くある場
合、このCloud DIパターンを利用することでより柔軟にサーバー初期化を行うことができる。
例:Cloud DI Pattern
<実装>
EC2を起動する際、EC2インスタンスに対して、任意のタグをつける機能がある。こ
の機能を利用して、EC2起動時にタグ情報を読み込み、それに応じた設定を行う。
• EC2の固有情報をタグとしてセットする。(例えばEIPをタグとして設定する)
• EC2の起動時に、タグを取得するアプリケーションが起動するよう設定する。
• アプリケーション内で、タグ情報に従ってEC2の初期化を行う(設定したEIPが自動的に
EC2に割り当てられる)。
例:Cloud DI Pattern
<構造>
例:Cloud DI Pattern
<利点>
• Stampパターン・Bootstrapパターンを使った汎用的なベースイメージに対して
固有の設定を行える。
• タグ情報でパラメータ設定を行うため、マネジメントコンソールで容易に設定
したり確認したりできる。
• 自動的に設定を行えるため、運用時のミスを低減できる。
• EC2インスタンスの構築だけでなく、AMIやスナップショットの自動取得を行
う仕組みを作る場合にも利用できる。
例:Cloud DI Pattern
<注意点>
• タグは、付与できる文字数が決まっている場合がある。その場合は、S3のURLやネッ
トワークのファイルパスなど、渡したい情報へのポインタ情報をタグにセットする。
例:Cloud DI Pattern
<その他>
• 情報を引き渡すために、タグだけでなくユーザーデータと
呼ばれるメタデータを利用する事もできる。
AWSクラウドデザインパターン
http://aws.clouddesignpattern.org/
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
AWS リファレンスアーキテクチャ
http://aws.amazon.com/jp/architecture/
AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型
的な問題とそれに対する解決策・設計方法を、わかりやすく分類して、ノウハ
ウとして利用できるように整理したものである。
AWS リファレンスアーキテクチャ
AWS リファレンスアーキテクチャ
私が構築設計するときの代表的な4パターン
①Web Storage Pattern
• S3を使えば、ネットワーク負荷やデー
タ容量を気にする必要がなくなる
• S3は3カ所以上のデータセンターで
バックアップを行っているため、非常
に耐久性が高い
• 各コンテンツ毎のURLが発行されるた
め、ファイルをS3に置くだけでファイ
ル共有など広範囲な目的で活用するこ
とができる
②Multi-Datacenter Pattern
• データセンターレベルの大きな障害が発
生しても、サービス継続可能なシステム
を構築できる
• 東日本大震災以降注目されているディザ
スターリカバリー(DR)構成を安価に
迅速に構築できる
• AWSはAZごとに初期費用や月額利用料
がかかるわけではないので、単一のAZ
を使用しても複数のAZを使用しても費
用は変わらない
私が構築設計するときの代表的な4パターン
③Scale Out Pattern
• トラフィック量の増大に合わせて自動的に
EC2インスタンスを増やすことができるの
で、サービス継続につながる
• トラフィック量が多くないときにはEC2イ
ンスタンスを削減できる(スケールインと呼
ぶ)のでコスト削減につながる
• トラフィック量の増減に合わせて自動的に
EC2インスタンスを増減させられるので、
運用の手間が省ける
• ELBの配下に必要な数のEC2インスタンス
を並べることができるので、スケールアッ
プと比べると処理能力の限界は極めて高い
私が構築設計するときの代表的な4パターン
④Cache Distribution Pattern
• 地理的に離れたユーザーに対して、より
良いユーザエクスペリエンスを提供でき
る
• ファイルダウンロード処理を分散できる
ため、負荷分散効果もある
• 既存のサーバー(オンプレやホスティン
グなどのEC2以外のサーバー)をオリジ
ンサーバーにすることで、既存のサーバー
を生かしながらパターンを適用すること
が可能
• オリジンサーバーとしては、S3を直接オ
リジンに用いることもできる
私が構築設計するときの代表的な4パターン
AWS リファレンスアーキテクチャをベースにして、そこから要件・予算に応じ
て構成を加えたり減らしたりすればそれらしい構成にはなる!
ビジプロ向け情報"(( ⁰⊖⁰)/)"
【構成を加えるパターン】
AWS リファレンスアーキテクチャをベースにして、そこから要件・予算に応じ
て構成を加えたり減らしたりすればそれらしい構成にはなる!
ビジプロ向け情報"(( ⁰⊖⁰)/)"
【構成を加えるパターン】
AWS リファレンスアーキテクチャをベースにして、そこから要件・予算に応じ
て構成を加えたり減らしたりすればそれらしい構成にはなる!
ビジプロ向け情報"(( ⁰⊖⁰)/)"
【構成を減らすパターン】
AWS リファレンスアーキテクチャをベースにして、そこから要件・予算に応じ
て構成を加えたり減らしたりすればそれらしい構成にはなる!
ビジプロ向け情報"(( ⁰⊖⁰)/)"
【構成を減らすパターン】
AWS定番構成を構築&デプロイを
自動化するサービスあるよ。
AWS Elastic Beanstalk
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
2-Tier Architecture
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
引用 - プログラマに贈るクラウドとの上手な付き合い方(http://
www.slideshare.net/keisuke69/how-to-usecloudforprogrammer) -
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
CloudFormation Demo
• 単一 EC2 インスタンスとローカル MySQL データベース
• AutoScalingMultiAZSample.template
http://aws.amazon.com/jp/cloudformation/aws-cloudformation-templates/aws-
cloudformation-templates-ap-northeast-1/
CloudFormation Demo
http://aws.amazon.com/jp/cloudformation/aws-cloudformation-templates/aws-
cloudformation-templates-ap-northeast-1/
• 単一 EC2 インスタンスとローカル MySQL データベース
• AutoScalingMultiAZSample.template
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
例:単一 EC2 インスタンスとローカル MySQL データベース
CloudFormation Demo
http://aws.amazon.com/jp/cloudformation/aws-cloudformation-templates/aws-
cloudformation-templates-ap-northeast-1/
• 単一 EC2 インスタンスとローカル MySQL データベース
• AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
例:AutoScalingMultiAZSample.template
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
2.WebサービスStartUP向け AWSスケーラブルな構成例
http://www.slideshare.net/AmazonWebServicesJapan/aws-for-
3.スタートアップでのAWS(Amazon Web Services)活用事例
http://www.slideshare.net/schoowebcampus/awsamazon-web-
4.Lv1から始めるWebサービスのインフラ構築
http://www.slideshare.net/itoyusaku/lv1web
5.プログラマに贈るクラウドとの上手な付き合い方
http://www.slideshare.net/keisuke69/how-to-usecloudforprogrammer
1.スタートアップならおさえておきたいAWS入門サービス概要と基礎知識編
http://www.slideshare.net/HiroshiTakayama/aws-45311829
参考資料
私がオススメするスライド5選
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
まとめ
• AWSサービスは、目的に応じて組み合わせすることにより課題を
解決することができる。
• インフラサービスに柔軟に対応できるようプログラムのアーキテ
クチャを考慮
• 2-Tier Architectureを実現するには、モバイルプログラマーもAWS
SDKを使えるようになること
• テンプレートを使ってインフラを構築し、使い回し可能(ML標準
のテンプレート作成もあり。)
agenda
• 自己紹介
• AWSのCloud Design Pattern紹介
• アプリケーション機能要件に対しての構築パターン
• CloudFormationを使ったAWSの各サービスを自動構築
• 参考資料
• まとめ
• 質疑応答
ありがとうございました!!

Awsのインフラをデザインパターン駆使して設計構築