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

16,585 views

Published on

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

Published in: Technology, Travel
0 Comments
38 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
16,585
On SlideShare
0
From Embeds
0
Number of Embeds
3,463
Actions
Shares
0
Downloads
427
Comments
0
Likes
38
Embeds 0
No embeds

No notes for slide

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

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

×