信頼性パターン
可用性
可用性は稼働時間の比率として計測され、システムが機能し動作している時間の割合を定義します。 可用性は、システム エラー、インフラストラクチャの問題、悪意ある攻撃、およびシステムの負荷の影響を受けます。 クラウド アプリケーションは通常、ユーザーにサービス レベル アグリーメント (SLA) を提供します。つまり、可用性を最大化するためにアプリケーションを設計して実装する必要があります。
パターン | まとめ |
---|---|
デプロイ スタンプ | データ ストアなど、アプリケーション コンポーネントの複数の独立したコピーをデプロイします。 |
ジオード | バックエンド サービスを一連の地理的ノードにデプロイします。各ノードが、任意のリージョンで任意のクライアント要求を処理できます。 |
正常性エンドポイント監視 | 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。 |
キュー ベースの負荷平準化 | タスクと呼び出すサービスの間のバッファーとして機能するキューを使用して、断続的な負荷を滑らかにします。 |
調整 | アプリケーションのインスタンス、個々のテナント、またはサービス全体によってリソースの使用量を制御します。 |
悪意のある分散型サービス拒否 (DDoS) 攻撃による可用性リスクを軽減するには、ネイティブ の Azure DDoS 保護 サービスまたはサードパーティの機能を実装します。
高可用性
Azure インフラストラクチャは、地域、リージョン、可用性ゾーンで構成されます。 これらの部門は障害の半径を制限するため、顧客のアプリケーションとデータに対する潜在的な影響を制限します。 Azure 可用性ゾーンの構築は、データセンターの障害から保護し、高可用性を向上させるソフトウェアとネットワーク ソリューションを提供するために開発されました。 高可用性アーキテクチャでは、高い回復性、低待機時間、コストのバランスが取られます。
パターン | まとめ |
---|---|
デプロイ スタンプ | データ ストアなど、アプリケーション コンポーネントの複数の独立したコピーをデプロイします。 |
ジオード | 一連の地理的ノードにバックエンド サービスをデプロイします。 各ノードは、任意のリージョン内の任意のクライアント要求にサービスを提供できます。 |
正常性エンドポイント監視 | 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。 |
Bulkhead | アプリケーションの要素をプールに分離します。 1 つの要素が失敗した場合、他の要素は引き続き機能します。 |
Circuit Breaker | リモート サービスまたはリソースとの接続時の修正に要する時間が一定しないエラーを処理します。 |
回復性
回復性とは、障害 (不注意に起因するものと悪意によるものの両方) を正常に処理して復旧するシステムの機能です。
クラウド ホスティングでは、多くの場合、アプリケーションはマルチテナントであり、共有プラットフォーム サービスを使用し、リソースと帯域幅を競い合い、インターネット経由で通信し、コモディティ ハードウェアで実行されます。 この状況は、一時的な障害と永続的な障害の両方が発生する可能性が高まることを意味します。 接続状態が維持されるインターネットの特性と攻撃の巧妙化と増加により、セキュリティが妨害される可能性が高くなっています。
障害を検出し、迅速かつ効率的に復旧するには、回復性を維持する必要があります。
パターン | まとめ |
---|---|
Bulkhead | アプリケーションの要素をプールに分離します。 1 つの要素が失敗した場合、他の要素は引き続き機能します。 |
Circuit Breaker | リモート サービスまたはリソースとの接続時の修正に要する時間が一定しないエラーを処理します。 |
補正トランザクション | 最終的に整合性がある操作を定義する一連のステップで実行された作業を元に戻します。 |
正常性エンドポイント監視 | 公開されたエンドポイントを通じて外部ツールが定期的にアクセスできる機能チェックをアプリケーションに実装します。 |
リーダー選定 | 1 つのインスタンスをリーダーとして選択して、分散アプリケーション内の共同作業タスク インスタンスのコレクションによって実行されるアクションを調整します。 リーダーは、他のインスタンスを管理する責任を負います。 |
キュー ベースの負荷平準化 | タスクとそのタスクが呼び出すサービスとの間でバッファとして機能するキューを使用します。 このキューにより、断続的な負荷がスムーズになります。 |
Retry | 予測される一時的な障害をアプリケーションが処理できるようにします。アプリケーションがサービスまたはネットワーク リソースに接続しようとする際に、失敗した操作を透過的に再試行します。 |
Scheduler エージェント スーパーバイザー | 分散された一連のサービスやその他のリモート リソースにわたる一連のアクションを調整します。 |