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