Azure Container Apps サンドボックスの信頼性

Azure Container Appsサンドボックスは、コードを実行するための分離された環境を提供します。 各サンドボックスは軽量仮想マシン (microVM) で実行されます。これは 1 秒未満で開始され、中断されたときにメモリ内の状態を保持できます。 このサービスは、プラットフォームがユーザーに代わって構成および管理する機能を通じて、サンドボックス ワークロードの信頼性をサポートします。

Azureを使用する場合、信頼性は共有責任です。 Microsoftには、回復性と回復性をサポートするためのさまざまな機能が用意されています。 使用するすべてのサービスでこれらの機能がどのように機能するかを理解し、ビジネス目標とアップタイムの目標を達成するために必要な機能を選択する必要があります。

この記事では、Container Apps サンドボックスを一時的な障害、可用性ゾーンの障害、リージョン全体の障害、およびサービス メンテナンスに対して回復性を持たせる方法について説明します。 また、バックアップと復元のオプションと、サービス レベル アグリーメント (SLA) に関する重要な情報についても説明します。

信頼性のための運用環境のデプロイに関する推奨事項

本番環境のワークロードに対しては、次のことをお勧めします。

  • サンドボックス メモリの外部に永続データを格納し、復旧目標に合ったストレージ冗長オプションを選択します。 サンドボックスが停止したときに保持する必要があるデータには、サンドボックス ボリュームを使用します。 リージョン全体の障害に対する回復性を確保するには、データを別のリージョンにレプリケートする外部データ ストアを使用します。

    Azure Blob Storageを使用すると、geo 冗長ストレージ (GRS) はペアのリージョンにデータをレプリケートします。 ペアになっていないリージョンの場合は、個別のストレージ アカウントをデプロイし、サポートされているレプリケーション方法 (ブロック BLOB のオブジェクト レプリケーションなど) を構成します。 詳細については、「Azure Blob Storageのカスタム マルチリージョン ソリューション」を参照してください。

  • 単一リージョンのデプロイでアップタイム ターゲットが満たされない場合は、複数のリージョンに個別のサンドボックス グループをデプロイします。 詳細については、「 リージョン全体の障害に対する回復性」を参照してください。

信頼性アーキテクチャの概要

このセクションでは、信頼性の観点から最も関連性の高いサービスのしくみの重要な側面について説明します。 このセクションでは、デプロイして使用するリソースと機能の一部を含む論理アーキテクチャについて説明します。 また、物理アーキテクチャについても説明します。このアーキテクチャでは、サービスの内部での動作について詳しく説明します。

論理アーキテクチャ

Azure Container Appsには、アプリ、ジョブ、動的セッション、サンドボックスの個別のコンピューティング オプションが用意されています。 サンドボックス グループには、Container Apps 環境は必要ありません。 他の Container Apps コンポーネントの信頼性の詳細については、「Azure Container Appsの信頼性」を参照してください。

Container Apps サンドボックスの主なリソースは次のとおりです。

  • サンドボックス グループ:サンドボックス グループは、サンドボックスの最上位のリージョン管理境界であり、Microsoft.App/sandboxGroupsリソースの種類を使用します。 すべてのサンドボックス、ディスク イメージ、スナップショット、ボリューム、機密性の高い構成値 (シークレット) は、サンドボックス グループにスコープが設定されます。

  • サンドボックス: 各 サンドボックス は、ディスク イメージまたはスナップショットから実行され、独自の CPU、メモリ、ローカル ディスク、およびネットワーク境界を持つ、軽量で分離された microVM です。

    ディスク イメージは、サンドボックス ルート ファイルシステムとして使用するために変換された Open Container Initiative (OCI) コンテナー イメージです。

    スナップショットは、ソース サンドボックスとは別に保持されるサンドボックスの完全な状態のポイントインタイム キャプチャです。

    サンドボックスの状態は 、実行中 または 停止状態のいずれかです。 サンドボックスは、自動的または要求時に停止すると、そのコンピューティング リソースを解放します。 メモリ モード では、サンドボックスの完全メモリ イメージとローカル ディスクが保持されます。 ディスク モード ではローカル ディスクのみが保持されるため、サンドボックスを再開すると microVM とそのプロセスが再起動します。

  • ボリューム: ローカル ディスクは個々のサンドボックスに属しています。 サンドボックス ボリューム は、個々のサンドボックスとは独立して存在する永続的なストレージを提供します。 Azure Blob Storageボリュームを複数のサンドボックスに同時にマウントできますが、Azure Disk Storageによってサポートされるデータ ディスク ボリュームは、一度に 1 つのサンドボックスにのみマウントできます。 バッキング ストレージ サービスは、ボリューム データの持続性と回復オプションを決定します。

サンドボックスのアーキテクチャとリソースの詳細については、「Azure Container Appsサンドボックスの概要」を参照してください。

物理アーキテクチャ

サンドボックスは、Microsoft動作する複数の独立したコンピューティング クラスターで実行されます。 サンドボックス グループ、サンドボックス、およびデプロイするその他のリソースを構成する責任があります。 Microsoftは、クラスターのデプロイ、構成、容量管理、正常性の監視、およびメンテナンスを担当します。 クラスターの選択、デプロイ、構成、管理は行いません。 このサービスは、正常なクラスターで新しいサンドボックスをスケジュールし、停止したサンドボックスを再起動し、異常なクラスターを中心に配置をルーティングします。

Microsoftでは、サービス構成、サンドボックス メタデータ、ディスク イメージやスナップショットなどの成果物の冗長な状態ストアが保持されます。

一時的な障害に対する回復性

一時的な障害は、コンポーネントにおける短い断続的な障害です。 これらはクラウドのような分散環境で頻繁に発生し、運用の通常の範囲であり、 一時的な障害は、短時間の経過後に自分自身を修正します。 アプリケーションで一時的な障害を処理できることは重要です。通常は、影響を受ける要求を再試行します。

クラウドでホストされるすべてのアプリケーションは、クラウドでホストされている API、データベース、およびその他のコンポーネントと通信する際に、Azure の一時的な障害処理のガイダンスに従う必要があります。 詳細については、一時的なエラーへの対処に関するレコメンデーションを参照してください。

Container Apps サンドボックスを使用する場合は、ソリューションの次の部分で一時的な障害を考慮してください。

  • サンドボックス管理操作: 自動化でサンドボックス グループ、サンドボックス、または関連リソースを管理する場合は、一時的な障害のために失敗した要求を再試行し、指数バックオフを使用します。 再試行回数を制限し、繰り返しても安全な操作のみを再試行します。

  • サンドボックスで実行されているコード: 外部 API、データベース、およびその他のサービスの呼び出しに対する一時的な障害処理を実装します。 再試行動作と繰り返し安全な操作はサービスによって異なるため、依存関係ごとに再試行ガイダンスに従ってください。

可用性ゾーンの障害に対する回復性

Container Apps サンドボックスでは、サンドボックス グループの特定の可用性ゾーンまたはゾーン冗長へのデプロイはサポートされていません。 可用性ゾーンの障害に対するワークロードの回復性を高めるために、複数のリージョンに個別のサンドボックス グループをデプロイします。 詳細については、「 リージョン全体の障害に対する回復性」を参照してください。

リージョン全体の障害に対する回復性

Container Apps サンドボックスは、単一リージョンのサービスです。 リージョンが使用できなくなった場合、サンドボックス グループと、そのリージョンに含まれるサンドボックスも使用できなくなります。 このサービスは、サンドボックス グループまたはサンドボックスをリージョン間でレプリケートせず、別のリージョンに自動的にフェールオーバーしません。 ただし、複数のリージョンに個別のサンドボックス グループをデプロイできます。 各リージョンで依存関係を使用できるようにし、ワークロードの分散とフェールオーバーを管理する責任があります。 詳細については、「 回復性のためのカスタム マルチリージョン ソリューション」を参照してください。

リージョン全体の障害が発生すると、実行中のサンドボックスのメモリにのみ保持されている状態が失われる可能性があります。 影響を受けるリージョンのサンドボックス グループ、サンドボックス、サービスで管理される成果物は、リージョンが復旧するまで使用できなくなります。

サンドボックス ボリュームは、個々のサンドボックスのライフサイクルを超えて保持されるストレージを提供します。 リージョン全体で障害が発生した場合、ボリュームの可用性と復旧は、バッキング ストレージ サービスとその構成によって異なります。 Container Apps サンドボックスでは、ボリューム データのリージョン間レプリケーションやフェールオーバーは提供されません。 代わりに、バッキング ストレージ サービスは、構成時にこれらの機能を提供します。 たとえば、Azure Blob Storageボリュームの詳細については、「Azure Blob Storageの信頼性」を参照してください。

回復性のためのカスタム マルチリージョン ソリューション

Azure Container Appsサンドボックスでは、複数リージョンのデプロイを調整したり、サンドボックス グループ、サンドボックス、またはその関連リソースをリージョン間でレプリケートしたりすることはありません。 カスタム マルチリージョン ソリューションを作成するには、次の責任があります。

  • リージョンデプロイと依存関係: 使用する予定の各リージョンに個別のサンドボックス グループをデプロイします。 構成、ディスク イメージ、シークレット、およびその他の依存関係を各リージョンで使用できるようにします。

  • 障害検出とワークロードの回復: リージョンが使用できないことを検出し、新しいサンドボックスの作成とワークロード処理を正常なリージョンに転送し、中断された作業を再開する方法を決定するように、アプリケーションまたはオーケストレーションレイヤーを構成します。

  • トラフィック ルーティング:クライアントがアプリケーションで公開するリージョン固有のエンドポイント経由で接続する場合は、Azure Front DoorやAzure Traffic Managerなどのグローバル負荷分散サービスを使用して、トラフィックを正常なエンドポイントにルーティングします。

  • データのレプリケーションと回復: フェールオーバー後に必要なすべての状態を、リージョン間のレプリケーションと復旧をサポートする外部データ ストアに格納します。 バッキング ストレージ サービスがボリューム データのリージョン間レプリケーションを提供する場合、そのサービスによってレプリケーションとフェールオーバーの動作が決定されます。 Azure Container Appsサンドボックスは、リージョン間でボリューム データをレプリケートまたはフェールオーバーしません。

バックアップと復元

唯一の永続データ ストアとしてサンドボックス メモリまたはローカル ディスクを使用しないでください。 サンドボックスを中断すると、ローカル ディスクとメモリ モードのメモリ状態が維持されます。 ソース サンドボックスとは別に保持されるスナップショットを作成することもできます。 一時停止状態とスナップショットは、リージョン サンドボックス グループの範囲内に限定されており、クロスリージョン バックアップではありません。

個々のサンドボックスのライフサイクルを超えて保持する必要があるデータには、サンドボックス ボリュームを使用します。 バッキング ストレージ サービスとその構成によって、ボリューム データのバックアップと復元の機能が決まります。 管理する外部データ ストアについては、持続性と復旧の目標を満たすようにバックアップとリージョン間の復旧を構成する必要があります。

誤って削除またはリージョン全体の障害が発生した後にサンドボックスのデプロイを再作成するには、バージョン管理されたコードとしてのインフラストラクチャ テンプレート (Bicepや Terraform など) にサンドボックス グループ構成を格納します。 回復要件を満たすレジストリにソース ディスク イメージを保持します。

サービス メンテナンスに対する回復性

Microsoft は定期的にサービス更新プログラムを適用し、その他のメンテナンスを実行します。 Azure プラットフォームは、これらのアクティビティを自動的に処理し、メンテナンスがシームレスで透過的であることを保証します。 メンテナンス操作中に、短時間の中断が発生する場合があります。 通常、これらの中断は数秒続く。 一 時的な障害 を処理するようにクライアント アプリケーションが構成されていることを確認して、短時間の中断に対する回復性を確保します。

メンテナンスが実行中のサンドボックスに影響を与えると、プラットフォームはその状態を保持し、正常なコンピューティング容量に移動して、自動的に再開します。 メモリ モードを使用するサンドボックスの場合、プラットフォームはメモリとローカル ディスクの状態を保持します。 ディスク モードを使用するサンドボックスの場合、プラットフォームはローカル ディスクの状態のみを保持します。

サービス水準合意書

Azure Container Apps サンドボックスでは、可用性サービス レベル アグリーメント (SLA) は提供されません。 ソリューションで使用されるサンドボックス ボリュームと外部データ ストアをバックアップするストレージ サービスには、個別の SLA が含まれる場合があります。 詳細については、「 オンライン サービスのサービス レベル アグリーメント」を参照してください。