コントロールプレーンとデータプレーン - AWS 障害分離境界

コントロールプレーンとデータプレーン

AWS では、概念として、ほとんどのサービスをコントロールプレーンとデータプレーンに分けています。これらの用語は、ネットワークの世界、特にルーターから来ています。ルーターの主な機能であるデータプレーンは、ルールに基づいてパケットを移動します。ただし、ルーティングポリシーを作成および配布する必要があり、その作成と配信を担うのがコントロールプレーンです。

コントロールプレーンは、リソースを作成、読み取り/表示、更新、削除、およびリスト (CRUDL) するための管理 API を提供します。例えば、新しい Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの起動、Amazon Simple Storage Service (Amazon S3) バケットの作成、Amazon Simple Queue Service (Amazon SQS) キューの表示は、すべてコントロールプレーンのアクションです。EC2 インスタンスを起動する際、コントロールプレーンは、容量のある物理ホストの検索、ネットワークインターフェイスの割り当て、Amazon Elastic Block Store (Amazon EBS) ボリュームの準備、IAM 認証情報の生成、セキュリティグループルールの追加など、複数のタスクを実行する必要があります。コントロールプレーンは、複雑なオーケストレーションおよびアグリゲーションシステムになりがちです。

データプレーンは、サービスの主要な機能を提供するものです。例えば、実行中の EC2 インスタンス自体、EBS ボリュームへの読み取りと書き込み、S3 バケットのオブジェクトの取得と配置、Route 53 による DNS クエリへの応答とヘルスチェックの実行は、どれもが該当する各サービスのデータプレーンが提供する機能です。

データプレーンは、ワークフロー、ビジネスロジック、データベースの複雑なシステムを通常実装するコントロールプレーンと比較して、可動部分が少なく、意図的に複雑さが軽減されています。これにより、コントロールプレーンと比べて、データプレーンで障害イベントが発生する可能性は統計的に低くなります。データプレーンとコントロールプレーンは、どちらもサービス全体の運用と成功に貢献しますが、AWS ではこれらを別個のコンポーネントとみなします。この分離により、パフォーマンスと可用性の両方の利点が得られます。