信頼性パターン

可用性

可用性は稼働時間の比率として計測され、システムが機能し動作している時間の割合を定義します。 可用性は、システム エラー、インフラストラクチャの問題、悪意ある攻撃、およびシステムの負荷の影響を受けます。 クラウド アプリケーションは通常はサービス レベル アグリーメント (SLA) をユーザーに提供します。つまり、アプリケーションの可用性が最大限になるように設計および実装する必要があります。

Pattern まとめ
デプロイ スタンプ データ ストアなど、アプリケーション コンポーネントの複数の独立したコピーをデプロイします。
Geode バックエンド サービスを一連の地理的ノードにデプロイします。各ノードが、任意のリージョンで任意のクライアント要求を処理できます。
正常性エンドポイント監視 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。
キュー ベースの負荷平準化 タスクとそのタスクが呼び出すサービスとの間でバッファーとして機能するキューを使用して、断続的な大きい負荷を平準化します。
調整 アプリケーションのインスタンス、個々のテナント、またはサービス全体によってリソースの使用量を制御します。

悪意のある分散型サービス拒否 (DDoS) 攻撃のリスクを軽減するために、ネイティブ Azure DDoS Protection Standard サービスまたはサードパーティの機能を実装します。

高可用性

Azure インフラストラクチャは、地域、リージョン、Availability Zones で構成されており、障害の影響範囲を抑えることで、お客様のアプリケーションとデータへの潜在的な影響を抑えます。 Azure Availability Zones コンストラクトは、データセンターの障害から保護し、高可用性 (HA) の向上を実現するソフトウェアおよびネットワーク ソリューションをお客様に提供するために開発されました。 HA アーキテクチャでは、高回復性、低遅延、コストのバランスが取れています。

Pattern まとめ
デプロイ スタンプ データ ストアなど、アプリケーション コンポーネントの複数の独立したコピーをデプロイします。
Geode バックエンド サービスを一連の地理的ノードにデプロイします。各ノードが、任意のリージョンで任意のクライアント要求を処理できます。
正常性エンドポイント監視 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。
Bulkhead アプリケーションの要素をプールに分離し、1 つの要素が失敗しても、他の要素が引き続き機能できるようにします。
Circuit Breaker リモート サービスまたはリソースとの接続時の修正に要する時間が一定しないエラーを処理します。

回復性

回復性とは、障害 (不注意に起因するものと悪意によるものの両方) を正常に処理して復旧するシステムの機能です。

クラウド ホスティングには、マルチテナントのアプリケーションが多い、共有プラットフォームを使用する、リソースと帯域幅を競合する、インターネットで通信する、コモディティ ハードウェア上で実行する、という特性があります。この特性は、一時的な障害と永続的な障害の両方が発生しやすくなることを意味します。 接続状態が維持されるインターネットの特性と攻撃の巧妙化と増加により、セキュリティが妨害される可能性が高くなっています。

迅速かつ効率的に障害を検出して復旧することが、回復性を維持する上で重要となっています。

Pattern まとめ
Bulkhead アプリケーションの要素をプールに分離し、1 つの要素が失敗しても、他の要素が引き続き機能できるようにします。
Circuit Breaker リモート サービスまたはリソースとの接続時の修正に要する時間が一定しないエラーを処理します。
補正トランザクション 最終的に整合性がある操作を定義する一連のステップで実行された作業を元に戻します。
正常性エンドポイント監視 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。
リーダー選定 1 つのインスタンスを、他のインスタンスの管理を担当するリーダーとして選定することで、分散アプリケーション内で連携するタスク インスタンスのコレクションによって実行されるアクションを調整します。
キュー ベースの負荷平準化 タスクとそのタスクが呼び出すサービスとの間でバッファーとして機能するキューを使用して、断続的な大きい負荷を平準化します。
Retry 予測される一時的な障害をアプリケーションが処理できるようにします。アプリケーションがサービスまたはネットワーク リソースに接続しようとする際に、失敗した操作を透過的に再試行します。
Scheduler エージェント スーパーバイザー 分散された一連のサービスやその他のリモート リソースにわたる一連のアクションを調整します。