ヒント
このコンテンツは、Azure 用のクラウド ネイティブ .NET アプリケーションの設計に関する電子ブックからの抜粋であり、.NET Docs またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できます。
回復性は、システムが障害に対応し、引き続き機能する機能です。 失敗を回避するのではなく、失敗を受け入れ、それに対応するためのクラウドネイティブ サービスを構築します。 できるだけ早く完全に機能する状態に戻したいと考えています。
1 つのプロセスですべてが一緒に実行される従来のモノリシック アプリケーションとは異なり、クラウドネイティブ システムでは、図 6-1 に示すように分散アーキテクチャが採用されています。
図 6-1 分散クラウドネイティブ環境
前の図では、各マイクロサービスとクラウドベースの バッキング サービス は、サーバー インフラストラクチャ間でネットワーク ベースの呼び出しを介して通信する個別のプロセスで実行されます。
この環境で動作するサービスは、さまざまな課題に敏感である必要があります。
予期しないネットワーク待ち時間 - サービス要求が受信側に移動して戻る時間。
一時的な障害 - 有効期間の短いネットワーク接続エラー。
実行時間の長い同期操作によるブロック。
クラッシュし、再起動または移動されているホスト プロセス。
短時間応答できないオーバーロードされたマイクロサービス。
ローリング アップグレードや、ノード間でのサービスの移動など、動作中のオーケストレーター操作。
ハードウェア障害。
クラウド プラットフォームは、これらのインフラストラクチャの問題の多くを検出して軽減できます。 サービスを再起動し、スケールアウトし、サービスを別のノードに再配布することもできます。 ただし、この組み込みの保護を最大限に活用するには、サービスに対応し、この動的な環境で成功するようにサービスを設計する必要があります。
次のセクションでは、ダウンタイムと中断を最小限に抑えるために、サービスとマネージド クラウド リソースが活用できる防御手法について説明します。
.NET