自動スケーリングとは

完了

このユニットでは、Azure のスケーリングの概念について説明します。

エラスティック スケーリング

クラウドの主な利点に、エラスティックなスケーリングがあります。 需要の増加に基づいてアプリケーション インスタンスを追加することでスケールアウトします。 必要な量の容量を使用できます。負荷の増加に応じてスケールアウトし、追加の容量が不要になったらスケールインできます。

弾力性の必要性の典型的な例として、組織の Web サイトで非常に大きい負荷が発生する場合があります。 サイトをスケーリングできずに需要を満たせない場合、要求はプロセッサ時間を待機してキューに置かれるため、要求の処理に時間がかかります。 お客様にとっては、サイトが遅く応答していないように見えます。 極端なケースでは、サイトがダウンしているように見えることさえあります。

手動スケーリングと自動スケーリング

"手動" または "自動" の 2 つのモードのいずれかを使用して、アプリケーションのスケーリング設定を構成できます。 手動モードでは期待どおりに行われます。つまり、インスタンスの絶対数を設定します。 一方、自動 (自動スケーリング) では、スケーリングの方法と量を制御するルールを設定できます。

自動スケールを使用すると、適切な量のリソースを実行して、アプリケーションに対する負荷を処理することができます。 自動スケーリングにより、リソースの追加または削除、あるいはシステムのパフォーマンスのチェックに関してシステム オペレーターが絶えず決定する必要が減り、管理オーバーヘッドが削減されます。 最小値を指定すると、負荷のない状況でも、アプリケーションが常に実行されます。 最大値を指定すると、時間単位の合計コストが制限されます。 作成するルールを使用して、これら 2 つの値の間で自動的にスケールします。

コンピューティング コストの自動スケーリングの節約を示す図。

"アウト" と "アップ"

アプリケーションを拡張する方法は、主に 2 つあります。

  • 垂直スケーリングは、スケールアップおよびスケールダウンとも呼ばれ、リソースの容量を変更します。 たとえば、アプリケーションをより大きなコンピューティング サイズに移動できます。 垂直スケーリングでは、多くの場合、再デプロイ中にシステムを一時的に使用不可にする必要があるため、垂直スケーリングを自動化することはあまり一般的ではありません。

  • 水平スケーリングは、スケールアウトおよびスケールインとも呼ばれ、リソースのインスタンスを追加または削除します。 新しいリソースのプロビジョニング中も、アプリケーションの実行は中断されることなく継続されます。 プロビジョニング プロセスが完了すると、これらの追加リソースにソリューションがデプロイされます。 需要が減少したら、余分なリソースをクリーンにシャットダウンし、割り当てを解除できます。

自動スケーリングで行われるのは、スケール "アウト" (水平方向) のみで、アプリケーション インスタンスの数が増加 ("アウト") または減少 ("イン") します。

スケールアップとスケールアウトの違いを示す図。

Azure Spring Apps での自動スケーリング

Azure Spring Apps で自動スケーリングを使って、Spring アプリケーションの実行時にそのリソース メトリックを監視します。 増加するワークロードを処理するために追加のリソースが必要な状況を検出し、システムが過負荷になる前に、それらのリソースを確実に利用できるようにします。 自動スケーリングは Azure Spring Apps の組み込み機能であり、需要の変化に応じてマイクロサービス アプリケーションが最適に動作できるようにします。

実例

Raley's 食料品店は、Azure でホストされている Java を利用した eコマース サイトのコードとインフラストラクチャを最新化する必要があります。 また、ネットワーク割り当てを最適化して自動化する必要もあります。 すべてが堅牢で、常時オンであり、さらには最も重要なこととして、管理が簡単である必要があります。

Raley's は Azure Spring Apps を選択します。 Azure Spring Apps は、Spring Boot のマネージド サービスであり、Kubernetes の機能にリアルタイムの監視と自動スケーリングが組み合わされています。 また、Raley's は真のサービスとしてのプラットフォーム (PaaS) アーキテクチャを採用して、クラウドの利点を十分に活用できるようになります。

このサービスによって、Spring Boot マイクロサービス アプリケーションのインフラストラクチャが裏で管理されるため、開発者はコードに集中することができます。 Java ライブラリまたはコードがデプロイされると、アプリと Spring サービス ランタイムが Spring Apps によって自動的に接続されます。

デプロイされた後、Azure Spring Apps は、Application Insights や Log Analytics などの Azure Monitor ツールと完全に統合されます。 これらのツールを使用することで、パフォーマンスとエラーの簡単で完全に構成可能な監視を実現できます。 また、これらの同じ監視サービスによって自動スケーリングが促進され、リソースのサイズが現在の負荷に合わせて適切に設定されるように保証するのに役立ちます。

自動スケーリングのアップスケーリングを示す図。