クラウドネイティブの回復性

ヒント

このコンテンツは eBook の「Azure 向けクラウド ネイティブ .NET アプリケーションの設計」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。

Cloud Native .NET apps for Azure eBook cover thumbnail.

回復性は、システムが障害に対処して機能を継続する能力です。 障害を回避することではなく、障害を受け入れ、それに対応できるクラウドネイティブ サービスを構築することです。 可能な限り短時間で完全に機能する状態に戻す必要があります。

すべてが 1 つのプロセスで一緒に実行される従来のモノリシック アプリケーションとは異なり、クラウドネイティブ システムには、図 6-1 に示すように分散アーキテクチャが採用されています。

Distributed cloud-native environment

図 6-1. 分散型クラウドネイティブ環境

上の図では、各マイクロサービスとクラウドベースのバッキング サービスは、サーバー インフラストラクチャの別々のプロセスで実行され、通信はネットワークベースの呼び出しを介して行われます。

この環境で運用されているサービスは、さまざまな課題に対応している必要があります。

  • 予期しないネットワーク待機時間 - サービス要求が受信側との間を移動するまでの時間。

  • 一時的な障害 - 存続時間が短いネットワーク接続エラー。

  • 実行時間の長い同期操作によるブロック。

  • クラッシュし、再起動または移動されているホスト プロセス。

  • 短時間で応答できない過負荷のマイクロサービス。

  • ローリング アップグレードや、ノード間でのサービスの移動など、動作中のオーケストレーター操作。

  • ハードウェア エラー。

クラウド プラットフォームにより、これらのインフラストラクチャの問題の多くを検出し、軽減することができます。 再起動、スケールアウト、さらには別のノードへのサービスの再配布を行うこともできます。 ただし、このような組み込みの保護を最大限に活用するには、それに対応し、この動的環境で効果を発揮するようにサービスを設計する必要があります。

以降のセクションでは、ダウンタイムと中断を最小限に抑えるために、サービスおよびマネージド クラウド リソースに活用できる防御手法について説明します。