REL10-BP01 複数の場所にワークロードをデプロイする
ワークロードのデータとリソースを複数のアベイラビリティーゾーンに分散するか、必要に応じて複数の AWS リージョンにまたがって分散します。これらのロケーションは、必要に応じて多様化できます。
AWS のサービス設計の基本原則の 1 つは、基盤となる物理インフラストラクチャの単一障害点を回避することです。これによって、複数のアベイラビリティーゾーンを使用して単一ゾーンで起こる障害に耐えられるソフトウェアおよびシステムを構築することができます。これと同様に、システムは単一のコンピューティングノード、単一のストレージボリューム、単一のデータベースインスタンスの障害に対する弾力性を持つように設計されています。冗長コンポーネントに依存するシステムを構築するときには、それぞれのコンポーネントが独立して動作すること、また、AWS リージョンの場合は、それぞれのリージョンが自律して動作することが重要です。冗長化されたコンポーネントを使用した理論的な可用性の計算から得られるメリットは、これが当てはまる場合にのみ有効です。
アベイラビリティーゾーン (AZ)
AWS リージョンは、互いに独立するように設計された複数のアベイラビリティーゾーンで構成されます。各アベイラビリティーゾーンは、火災、洪水、竜巻などの自然災害による障害の影響を回避するため、ほかのゾーンから物理的に大きな距離を隔てています。各アベイラビリティーゾーンは、商用電源への専用接続、スタンドアロンのバックアップ電源、独立したメカニカルサービス、アベイラビリティーゾーン内外の独立したネットワーク接続など、独立した物理インフラストラクチャも備えています。この設計により、これらのシステムのいずれかに障害が発生した場合、影響を受ける AZ は 1 つだけで済みます。地理的には分離されていても、アベイラビリティーゾーンは、同じリージョンのエリアに配置されているため、高スループットで低レイテンシーなネットワーク接続が可能です。AWS リージョン全体 (すべてのアベイラビリティーゾーンにまたがり、複数の物理的に独立したデータセンターで構成される) をワークロードの単一の論理的なデプロイ先として扱うことができ、同期したデータレプリケーション (例えば、データベース間で) が可能です。このようにして、アクティブ/アクティブまたはアクティブ/スタンバイの設定でアベイラビリティーゾーンを使用することができます。
アベイラビリティーゾーンは独立しているため、ワークロードが複数のゾーンを使用するように設定された場合、ワークロードの可用性が向上します。一部の AWS サービス (Amazon EC2 インスタンスデータプレーンを含む) は、厳密なゾーンサービスとしてデプロイされるため、属するアベイラビリティーゾーンに左右されます。ただし、他の AZ 内の Amazon EC2 インスタンスは影響を受けず、機能し続けます。同様に、アベイラビリティーゾーンの障害によって Amazon Aurora データベースに障害が発生した場合、影響を受けない AZ のリードレプリカ Aurora インスタンスは自動的にプライマリに昇格できます。一方、Amazon DynamoDB などのリージョンにおける AWS のサービスは、サービスの可用性の設計目標を達成するために、内部ではアクティブ/アクティブ設定で複数のアベイラビリティーゾーンを使用するため、AZ 配置を設定する必要はありません。
AWS の制御プレーンには通常リージョン全体 (複数のアベイラビリティーゾーン) のリソース管理能力がありますが、一部のコントロールプレーン (Amazon EC2 や Amazon EBS など) は単一アベイラビリティーゾーンに対してデータをフィルタリングする能力を持っています。これを実行すると、指定されたアベイラビリティーゾーン内でのみリクエストが処理されるため、その他のアベイラビリティーゾーンで起こる障害からの影響を軽減できます。この AWS CLI の例は、us-east-2c アベイラビリティーゾーンからのみ Amazon EC2 インスタンス情報を取得する例を示しています。
AWS ec2 describe-instances --filters Name=availability-zone,Values=us-east-2c
AWS ローカルゾーン
AWS ローカルゾーンは、サブネットや EC2 インスタンスなど、ゾーン内の AWS リソースの配置場所として選択できるという点で、それぞれの AWS リージョン内でアベイラビリティーゾーンと同じように機能します。それらが特別なのは、関連する AWS リージョンにあるのではなく、現在 AWS リージョンが存在しない大規模な人口、産業、IT センターの近くにあることです。それでも、ローカルゾーンのローカルワークロードと AWS リージョンで実行されているワークロードの間で、高帯域幅で安全な接続を維持します。ワークロードをユーザーに近い場所にデプロイし、低レイテンシー要件を満たすには、AWS ローカルゾーンを使用する必要があります。
Amazon Global Edge Network
Amazon Global Edge Network は、世界中の都市のエッジロケーションで構成されています。Amazon CloudFront は、このネットワークを使用して、低レイテンシーでエンドユーザーにコンテンツを配信します。AWSGlobal Accelerator を使用すると、これらのエッジロケーションにワークロードエンドポイントを作成して、ユーザーに近い AWS グローバルネットワークにオンボーディングできます。Amazon API Gateway では、CloudFront ディストリビューションを使用してエッジ最適化 API エンドポイントが可能になり、最も近いエッジロケーションを介したクライアントアクセスが容易になります。
AWS リージョン
AWS リージョンは自律するように設計されているため、マルチリージョンアプローチを使用するには、各リージョンにサービスの専用コピーをデプロイします。
マルチリージョンアプローチは、1 回限りの大規模なイベントが発生したときに復旧目標を達成するためのディザスタリカバリ戦略として一般的です。これらの戦略の詳細については、「ディザスタリカバリ (DR) の計画」を参照してください。ここでは、時間の経過とともに平均稼働時間目標を実現しようとする可用性に焦点を当てています。高可用性目標については、マルチリージョンアーキテクチャは、一般に、アクティブ/アクティブとして設計され、(それぞれのリージョンの) 各サービスコピーはアクティブです (リクエストを処理します)。
推奨事項
ほとんどのワークロードの可用性目標は、単一の AWS リージョン内でマルチ AZ 戦略を使用して満たすことができます。マルチリージョンアーキテクチャは、ワークロードの可用性要件が極端に高いか、その他のビジネス目標のために、マルチリージョンアーキテクチャが必要とされる場合のみ検討してください。
AWS は、お客様がリージョンをまたいでサービスを運用できるようにしています。例えば、AWS は、Amazon Simple Storage Service (Amazon S3) レプリケーション、Amazon RDS リードレプリカ (Aurora リードレプリカを含む)、および Amazon DynamoDB グローバルテーブルを使用したデータの継続的な非同期データレプリケーションを提供します。連続レプリケーションでは、アクティブリージョンのそれぞれでデータのバージョンをほとんどすぐに使用できます。
AWS CloudFormation を使用して、インフラストラクチャを定義し、複数の AWS アカウントと複数の AWS リージョンにまたがって一貫してデプロイできます。また、AWS CloudFormation StackSets は、この機能を拡張し、複数のアカウントとリージョンにまたがって単一のオペレーションで AWS CloudFormation スタックの作成、更新、または削除が可能です。Amazon EC2 インスタンスのデプロイの場合、AMI (Amazon マシンイメージ) は、ハードウェア設定やインストールされたソフトウェアなどの情報を提供するために使用されます。Amazon EC2 Image Builder パイプラインを実装して、必要な AMI を作成し、これらをアクティブリージョンにコピーできます。これにより、ゴールデン AMI は、新しい各リージョンにワークロードをデプロイし、スケールアウトするために必要なすべてを備えることになります。
トラフィックをルーティングするために、Amazon Route 53 と AWS Global Accelerator の両方により、どのユーザーをどのアクティブリージョンエンドポイントに向かわせるかを決定するポリシーを定義できます。Global Accelerator では、トラフィックダイヤルを設定して、各アプリケーションエンドポイントに向かうトラフィックのパーセンテージを制御します。Route 53 は、このパーセンテージアプローチと、地理的近接性やレイテンシーベースのポリシーなど、利用可能な他の複数のポリシーをサポートしています。Global Accelerator は、AWS エッジサーバーの広範なネットワークを自動的に活用して、トラフィックを AWS ネットワークバックボーンにできるだけ早くオンボードするため、リクエストのレイテンシーが低くなります。
これらの機能はすべて、各リージョンの自律性を保つように動作します。このアプローチには、ごくわずかな例外があり、AWS Identity and Access Management (IAM) サービスのコントロールプレーンと共に、グローバルエッジデリバリーを提供するサービス (Amazon CloudFront や Amazon Route 53 など) が含まれます。大部分のサービスが、完全に単一リージョン内で運用されています。
オンプレミスのデータセンター
オンプレミスのデータセンターで実行されるワークロードに関しては、可能な場合はハイブリッドエクスペリエンスを設計します。AWS Direct Connect は、オンプレミスから AWS への専用ネットワーク接続を提供し、両方での実行が可能になります。
もう 1 つのオプションは、AWS Outposts を使用して、AWS インフラストラクチャとサービスをオンプレミスで実行することです。AWS Outposts は、AWS インフラストラクチャ、AWS のサービス、API、ツールをデータセンターに拡張する完全マネージド型サービスです。AWS クラウドで使用されているのと同じハードウェアインフラストラクチャが貴社データセンターにインストールされます。その後、AWS Outposts は最も近い AWS リージョンに接続されます。その結果、AWS Outposts を使用して、低レイテンシーまたはローカルデータ処理を要求されるワークロードをサポートできます。
このベストプラクティスを活用しない場合のリスクレベル: 高
実装のガイダンス
-
複数のアベイラビリティーゾーンと AWS リージョンを使用します。ワークロードのデータとリソースを複数のアベイラビリティーゾーンに分散するか、必要に応じて複数の AWS リージョンにまたがって分散します。これらのロケーションは、必要に応じて多様化できます。
-
リージョンサービスは初めからアベイラビリティーゾーンにデプロイされます。
-
これには、Amazon S3、Amazon DynamoDB、および AWS Lambda (VPC に接続されていない場合) が含まれます。
-
-
コンテナ、インスタンス、機能ベースのワークロードを複数のアベイラビリティーゾーンにデプロイします。キャッシュを含め、マルチゾーンデータストアを使用します。Amazon EC2 Auto Scaling、Amazon ECS タスク配置、AWS Lambda 関数の設定 (VPC で実行するとき)、および ElastiCache クラスターの機能を使用します。
-
Auto Scaling グループをデプロイするときには、アベイラビリティーゾーンの異なるサブネットを使用します。
-
タスク配置パラメータを使用して、DB サブネットグループを指定します。
-
VPC で実行する関数を設定するには、複数のアベイラビリティーゾーンでサブネットを使用します。
-
ElastiCache クラスターでは複数のアベイラビリティーゾーンを使用します。
-
-
-
ワークロードを複数のリージョンにデプロイする必要がある場合は、マルチリージョン戦略を選択します。信頼性に関するほとんどのニーズは、マルチアベイラビリティーゾーン戦略を使用して単一の AWS リージョン内で満たすことができます。必要に応じて、ビジネスニーズを満たすためにマルチリージョン戦略を使用します。
-
AWS re:Invent 2018: マルチリージョンアクティブ/アクティブアプリケーション用アーキテクチャパターン (ARC209-R2)
-
別の AWS リージョンにバックアップすると、必要なときにデータが利用可能になるという保証のレイヤーを追加できます。
-
ワークロードによっては、マルチリージョン戦略の使用を必要とする規制要件があります。
-
-
-
ワークロードの AWS Outposts を評価します。ワークロードでオンプレミスのデータセンターへの低レイテンシーが必要な場合、またはローカルのデータ処理要件がある場合があります。その場合、AWS Outposts を使用して、オンプレミスで AWS インフラストラクチャとサービスを実行します
-
AWS Local Zones がユーザーにサービスを提供するのに役立つかどうかを判断します。低レイテンシー要件がある場合は、AWS Local Zones がユーザーの近くにあるかどうかを確認してください。近くにある場合は、それらのユーザーの近くにワークロードをデプロイするのに使用します。
リソース
関連ドキュメント:
関連動画: