ヒント
このコンテンツは、Azure 用のクラウド ネイティブ .NET アプリケーションの設計に関する電子ブックからの抜粋であり、.NET Docs またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できます。
アプリケーションをスケールアップまたはスケールアウトするには、2 つの方法があります。前者は 1 つのリソースに容量を追加することを指し、後者は容量を増やすためにリソースを追加することを指します。
簡単なソリューション: スケールアップ
CPU、メモリ、ディスク I/O 速度、ネットワーク I/O 速度を向上させた既存のホスト サーバーのアップグレードは、 スケールアップと呼ばれます。 クラウドネイティブ アプリケーションをスケールアップするには、クラウド ベンダーからより多くの機能を備えるリソースを選択する必要があります。 たとえば、Kubernetes クラスターに大規模な VM を含む新しいノード プールを作成できます。 次に、コンテナー化されたサービスを新しいプールに移行します。
サーバーレス アプリは、専用の App Service プランから Premium Functions プラン または Premium インスタンス サイズを選択してスケールアップします。
クラウドネイティブ アプリのスケールアウト
クラウドネイティブ アプリケーションでは、多くの場合、需要が大きく変動し、ある時点でスケーリングが必要になります。 スケールアウトが優先されます。スケールアウトは、既存のクラスターにマシン (ノードと呼ばれる) またはアプリケーション インスタンスを追加することで、水平方向に行われます。 Kubernetes では、アプリの構成設定 ( ノード プールのスケーリングなど) を調整するか、自動スケールを使用して手動でスケーリングできます。
AKS クラスターは、次の 2 つの方法のいずれかで自動スケーリングできます。
まず、 水平ポッド オートスケーラー はリソースの需要を監視し、それを満たすように POD レプリカを自動的にスケーリングします。 トラフィックが増加すると、サービスをスケールアウトするために追加のレプリカが自動的にプロビジョニングされます。 同様に、需要が減少すると、サービスをスケールインするために削除されます。 スケーリングするメトリック (CPU 使用率など) を定義します。 実行するレプリカの最小数と最大数を指定することもできます。 AKS はそのメトリックを監視し、それに応じてスケーリングします。
次に、 AKS クラスター オートスケーラー 機能を使用すると、Kubernetes クラスター全体でコンピューティング ノードを需要に合わせて自動的にスケーリングできます。 これを使用すると、より多くのコンピューティング容量が必要な場合は常に、基になる Azure 仮想マシン スケール セットに新しい VM を自動的に追加できます。 また、不要になったときにノードも削除されます。
図 3-11 は、これら 2 つのスケーリング サービス間の関係を示しています。
図 3-11 App Service プランをスケールアウトする。
連携することで、変動する需要をサポートするために、コンテナー インスタンスとコンピューティング ノードの最適な数が確保されます。 ポッドの水平オートスケーラーは、必要なポッドの数を最適化します。 クラスター オートスケーラーは、必要なノードの数を最適化します。
Azure Functions のスケーリング
Azure Functions は、必要に応じて自動的にスケールアウトします。 サーバー リソースは、トリガーされたイベントの数に基づいて動的に割り当てられ、削除されます。 課金されるのは、関数の実行時に消費されるコンピューティング リソースのみです。 課金は、実行の数、実行時間、および使用されるメモリに基づいています。
既定の従量課金プランは、ほとんどのアプリに経済的でスケーラブルなソリューションを提供しますが、Premium オプションを使用すると、開発者はカスタム Azure Functions 要件に柔軟に対応できます。 Premium プランにアップグレードすると、インスタンス サイズ、事前にウォームされたインスタンス (コールド スタートの遅延を避けるために)、専用 VM を制御できます。
.NET