SlideShare a Scribd company logo
AWSを用いた耐障害性の高い
アプリケーションの設計
     2011年5月17日
     玉川 憲 (@KenTamagawa ), エバンジェリスト
     荒木 靖宏 (@ar1), ソリューション アーキテクト
AWSアーキテクチャセンターのご紹介

aws.amazon.com/jp/architecture/

  Webinarのご案内

  ホワイトペーパー
  「耐障害性の高い
  アプリケーションの構築」
  日本語版、本日公開!!


  ベストプラクティスの共有



                 Copyright © 2011 Amazon Web Services
Overview

 耐障害性に関係するAWSの機能

 AWSアーキテクチャのガイダンス

 ヒントとTIPS

 Q&A




            Copyright © 2011 Amazon Web Services
耐障害性に関係する
  AWSの機能



  Copyright © 2011 Amazon Web Services
AWSにおける耐障害性を高める構成要素

本質的に耐故障性、耐障害性の高いAWSのサービス:
    •   Amazon Simple Storage Service (S3)
    •   Amazon Simple Queue Service (SQS)
    •   Amazon SimpleDB
    •   Amazon Relational Database Service (RDS)

EC2では耐故障性、耐障害性を高めるツールや機能を提供
  Availability Zone、Elastic IP Address、EBS等
  予算 vs 耐障害性のトレードオフの間で柔軟に選択




                   Copyright © 2011 Amazon Web Services
Amazon S3の場合

   バケット
            S3                データ置くと、
                              東京リージョン
             東京リージョン          内で、物理的に3
     あらゆる                      か所以上にコ
     データを                       ピーされる
     保存
            データセン
            ター

                       自動複製

                               高い耐久性で
                              データ失わない:
                              99.999999999%
AWSにおける耐障害性を高める構成要素

本質的に耐故障性、耐障害性の高いAWSのサービス:
    •   Amazon Simple Storage Service (S3)
    •   Amazon Simple Queue Service (SQS)
    •   Amazon SimpleDB
    •   Amazon Relational Database Service (RDS)

EC2では耐故障性、耐障害性を高めるツールや機能を提供
  Availability Zone、Elastic IP Address、EBS等
  予算 vs 耐障害性のトレードオフの間で柔軟に選択




                   Copyright © 2011 Amazon Web Services
Amazon EC2 アーキテクチャ

       Amazon                              Region
       Machine                         Availability Zone
     Image (AMI)                                                         Ephemeral
                                                                          Storage
                                        EC2 Instance

                                                               Elastic
     CloudWatch                                                 Block
                                                               Storage


                                       Security Group


         Auto                                                    Amazon S3
        Scaling                           Elastic IP
                                                             EBS             EBS
                                          Address          Snapshot        Snapshot




                                       Load Balancing
Copyright © 2011 Amazon Web Services
EC2の機能
 AMI (Amazon Machine Image)
  サーバーのコピーをとりテンプレート化することで、再利用可能
  障害から迅速に回復するための第一歩

 ストレージの形式
  インスタンスストレージ
     寿命はインスタンスと同じ
     年間故障率(AFR)は通常のハードディスクと同程度(5%前後)

  EBSボリューム
     寿命はインスタンスとは独立
     データを冗長化 →AFR は 0.1% から 0.5%
     EBSスナップショットでバックアップできる
     EC2インスタンスが故障した際には、
       新しいEC2インスタンスに、EBSと取り付ければ良い




                  Copyright © 2011 Amazon Web Services
EC2の機能

 Elastic IP Address
  リージョン内で任意のEC2インスタンスにマッピングできる
  故障したインスタンスから取り外して、代替インスタンスへ付け替え可能

 Auto Scaling
  2種類の使い方:
    • CloudWatchの測定結果に基づくインスタンス数の追加と終了
    • インスタンス数を固定した使い方:故障/状態の悪くなったインスタン
      スを交換
 Reserved Instances
  キャパシティの保証




                      Copyright © 2011 Amazon Web Services
EC2の機能

 CloudWatch Alarms




                Copyright © 2011 Amazon Web Services
EC2の機能
 Elastic Load Balancing
  入ってくるトラフィックを、複数インスタンス、複数ゾーンに
   分散して転送
  正常動作しているインスタンスにのみ転送




                   Copyright © 2011 Amazon Web Services
Amazon EC2: Regions と Availability Zones

   米国東 (Northern Virginia)                                    東京リージョン


    Availability         Availability
     Zone A               Zone B
                                                     Availability     Availability
                                                      Zone A           Zone B
    Availability         Availability
     Zone C               Zone D




Amazon EC2 Regions:
US East (Northern Virginia) / US West (Northern California) /
EU (Ireland) / Asia Pacific (Singapore) / Asia Pacific (Tokyo)




                               Copyright © 2011 Amazon Web Services
Availability Zoneの特徴とポイント

 特徴
  物理的に異なるロケーション
  AZ間は低レイテンシのネットワークで接続
  独立した電源、空調、ネットワーク、セキュリティ


 アーキテクチャ設計のポイント
  ELBは複数AZのインスタンスを使用できる
  アプリケーションスタック毎に、複数AZで分離しておく




            Copyright © 2011 Amazon Web Services
典型的な複数AZの利用法
                      Availability Zone A                           Availability Zone B
                     データベースサーバ/                                     データベースサーバ/
                     RDS DBインスタンス                                   RDS DBインスタンス

                       App サーバー                                      App サーバー

                       Web サーバー                                      Web サーバー



                                       リクエストとヘルスチェック


                                            Elastic Load Balancer




                                             入ってくるリクエスト
Copyright © 2011 Amazon Web Services
リージョンの特徴と利用ポイント
特徴
  リージョンは、機能的に分離されている(しかしそれぞれ同じ設計)
  各リージョンが、2つ以上のAZで構成
  リージョン間は、パブリックなインターネットで接続
使用リージョンの選択
    利用できるサービス、機能があること
    利用者に近いリージョンを選ぶ
    法律や慣行に合致すること
    DR戦略にあわせて


アーキテクチャ設計のポイント
  利用ポイント耐障害性の高いアプリケーションを作成するには、
   リージョン内の複数のAvailability Zoneを用いる
AWS アーキテクチャ
   ガイダンス



   Copyright © 2011 Amazon Web Services
Design For Failure – 基本原則

 単一障害点(single points of failure)の排除

 全てが故障すると仮定して、保守的に設計する

 Goal: 物理ハードウェアが故障して、消失したり交換されて
 もアプリケーションは機能する

 障害からの復旧を計画する

 ビジネスニーズと高可用性実現コストのトレードオフ



               Copyright © 2011 Amazon Web Services
Design For Failure – AWSの場合


 Elastic IPを固定したアクセス手段として使う
 複数のアベイラビリティゾーン(AZ)を使う
 データを複数AZに複製する
   例:Amazon RDSのMulti-AZモードの使用
 常時監視する(Amazon CloudWatch)
 永続するファイルシステムはEBSを使う
 EBSスナップショットをとって、S3にバックアップ




               Copyright © 2011 Amazon Web Services
Amazon EC2上での耐障害性アーキテクチャ

                                       YourWebsite.com



              EC2 Instance A                             EC2 Instance B


                                         Replication
                  MASTER                                   MASTER
                                                            SLAVE




                 EBS Data              EBS Log              EBS Data
                  Volume               Volume                Volume

Copyright © 2011 Amazon Web Services
アベイラビリティゾーンの利活用

                                       YourWebsite.com



              EC2 Instance A                             EC2 Instance B


                                        Replication
                  MASTER                                   MASTER
                                                            SLAVE




                                            Logs
                 EBS Data                                   EBS Data
                  Volume                 Amazon              Volume
                                         Simple DB
Copyright © 2011 Amazon Web Services
Copyright ©
                                                             2011 Amazon

 疎結合なシステムの構築
                                                             Web Services




   独立したコンポーネントの使用

   ブラックボックスとして全て設計

   負荷分散とスケールを意識したクラスタ

   適切な縮退をも意識

Amazon SQS をバッファ使う
    密結合            Controller           Controller       Controller
                          A                B                C


                   Q                Q                Q
  キューをつかった             Controller       Controller       Controller
    疎結合                   A                B                C
Elasticityの実現

 コンポーネントの正常稼働やロケーションの固定を前提としない

 再起動や再配置で回復できる設計の採用

 自力でブートする
   名前や役割を自己解決する

 動的な設定を有効にする

 ブート時の設定内容保持にSimpleDBを使う

 オートスケールの使用

 ELBをそれぞれの段階で使用




                Copyright © 2011 Amazon Web Services
ヒントとTips




 Copyright © 2011 Amazon Web Services
抽象化を行う


サーバー
  レシピからサーバーを構築する
   (PuppetやChefを利用)

システム
  全体のシステムをテンプレートから構築す
   る (CloudFormation)




             Copyright © 2011 Amazon Web Services
自己管理するEC2インスタンスの構築

TagあるいはUserDataを読み込んでインスタンス起動
Startupコードに、コンフィグデータをチェックさせる
上記の動的な情報を基にして、インスタンスの役割をセットする
パッケージをインストール/アップデートする
サービスを開始する
アプリケーションのコードをインストール/アップデートする
必要なEBSボリュームをCreate/attachする
Elastic IPアドレスを付加する
追加のTagをセット
最後にヘルスチェックを実施して、オンラインにする




           Copyright © 2011 Amazon Web Services
故障は役に立つ???

あらゆるソフトウェアシステムが、長期間使うと品質が
低下する
  メモリリーク、ファイルのフラグメント、ハードウェアの品質
   低下
従来のIT環境では、ハードウェアを定期的に保守するが
   →更新は大変、金銭的にも厳しい
Amazon EC2を用いれば、任意のタイミングで入れ替
え可能
むしろ、定期的なリフレッシュと考えられる




          Copyright © 2011 Amazon Web Services
Copyright © 2011
                                                                                   Amazon Web

Chaos Monkeyを用いる                                                                   Services




 Netflixブログを参照




 Simple monkey:
  AWSのアカウント内のインスタンスを落とす(kill)

 Complex monkey:
  特定のタグを持ったインスタンスを落とす
  他の障害を追加 (例: セキュリティグループでの接続性)

 Human monkey:
  AWS Management Consoleからインスタンスを落とす




       http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html
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
Q&A




Copyright © 2011 Amazon Web Services
ご参加ありがとう
 ございました



 Copyright © 2011 Amazon Web Services

More Related Content

AWSを用いた耐障害性の高いアプリケーションの設計