静的安定性 - AWS 障害分離境界

静的安定性

AWS のサービスの最も重要なレジリエンス特性の 1 つは、AWS が静的安定性と呼ぶものです。この用語が意味するのは、依存先に障害が発生したり利用できなくなったりしても、追加の変更を加える必要がなく、システムは通常どおり動作し続ける、つまり静的な状態で動作するということです。これを実現する 1 つの方法は、サービス間の循環依存関係をなくして、サービスの正常なリカバリを阻害しないようにすることです。これを行うもう 1 つの方法は、既存の状態を維持することです。コントロールプレーンは統計的にデータプレーンよりも障害が発生する可能性が高いという事実を考慮します。データプレーンは通常、コントロールプレーンから着信するデータに依存しますが、データプレーンは既存の状態を維持し、コントロールプレーンに障害があっても動作し続けます。データプレーンによるリソースへのアクセスは、いったんプロビジョニングされると、コントロールプレーンに依存しないため、コントロールプレーンの障害の影響を受けません。つまり、リソースを作成、変更、または削除する機能が損なわれた場合でも、既存のリソースは引き続き使用できます。これにより、AWS データプレーンはコントロールプレーンの障害に対して静的に安定します。さまざまなパターンを実装して、さまざまなタイプの依存障害に対して静的に安定させることができます。

静的安定性の例は Amazon EC2 に見ることができます。EC2 インスタンスを起動すると、データセンター内の物理サーバーと同じように利用できるようになります。コントロールプレーン API に依存することなく、実行を継続したり、再起動後に実行を再開したりできます。同じ特性が、VPC、Amazon S3 バケットおよびオブジェクト、Amazon EBS ボリュームなどの他の AWS リソースにも当てはまります。

静的安定性は、AWS のサービスの設計方法に深く根付いた概念ですが、お客様が使用できるパターンでもあります。実際、AWS のさまざまな種類のサービスを回復力のある方法で使用するためのベストプラクティスに関するガイダンスの大部分は、本番環境に静的安定性を実装することです。最も信頼性の高い回復および緩和メカニズムは、最も少ない変更で回復を達成するメカニズムです。障害が発生したアベイラビリティーゾーンから復旧する際、EC2 コントロールプレーンに依存して新しい EC2 インスタンスを起動する代わりに、その余分な容量を事前にプロビジョニングしておくと、静的安定性を実現できます。したがって、リカバリパスでコントロールプレーン (リソースへの変更を実装する API) への依存関係をなくすことで、より回復力のあるワークロードを作成できます。静的安定性、コントロールプレーン、データプレーンの詳細については、Amazon Builders' Library の記事「アベイラビリティーゾーンを使用した静的安定性」を参照してください。