こんにちは、Global Solutions事業部です。クラウドコンピューティングにおけるスケーリングとはご存知ですか?

自動スケーリングの詳細に入る前に、まずはスケーリングの基本的な概念を理解することが重要です。クラウドコンピューティングにおけるスケーリングとは、クラウド環境で特定のコンピューティングリソースの容量やパフォーマンスを増減させる能力を指します。スケーリングには、主に2つの方法があります。

  • 垂直スケーリング
  • 水平スケーリング

垂直スケーリング

垂直スケーリング(スケールアップ/スケールダウンとも呼ばれます)とは、クラウド上の既存のコンピューティングリソースに対して、CPUやメモリ、ストレージなどのコンピューティング能力を増減させることを指します。

例えば、アクセスが集中する昼間にトラフィックが増加するウェブサイトの場合、垂直スケーリングを使用することで、ピーク時間帯でもシステムが中断されることなく利用可能であることを保証できます。具体的には、スケールアップは既存リソースのコンピューティング能力を増強することであり、スケールダウンはそのリソースのコンピューティング能力を減少させることを指します。

水平スケーリング

水平スケーリング(スケールアウト/スケールインとも呼ばれます)とは、クラウド上のコンピューティングリソースにインスタンスを追加することを指します。

上記の例と同様に、トラフィックが集中するピーク時間帯に複数のウェブサーバーインスタンスを追加することで、システムの可用性を向上させることができます。インスタンスの追加はスケールアウト、インスタンスの削減はスケールインと呼ばれます。

Azureにおける自動スケーリングと手動スケーリング

スケーリングの基本概念を理解したところで、自動スケーリングと手動スケーリングが何を指すのか、そしてMicrosoft Azureがこれらの概念をどのように実装しているかを見ていきましょう。

  • 手動スケーリング

Azure App Serviceでウェブアプリケーションがホストされている場合、トラフィックが増加すると、App Serviceを使って水平スケーリングを手動で実施することができます。
手動スケーリングでは、トラフィックに応じてリソースのパワーやインスタンス数が必要と感じたときに、Azure App Serviceのスケールアウトオプションを通じてインスタンス数を手動で増やすことが可能です。

また、Azure App Serviceにデプロイされた各ウェブアプリケーションは、App Serviceプランに属している必要があります。選択するApp Serviceプランのレベルによって、サポートされる機能が異なります。手動スケーリングを実施するには、App Serviceプランが少なくともB1以上のティアである必要があります。無料および共有ティアでは手動スケーリングはサポートされていません。

  • 自動スケーリング

Azureは、S1以上のティアで自動スケーリング機能を提供しています。Azure App Serviceでは、Auto Scaling(自動スケーリング)とAutomatic Scaling(自動的なスケーリング)の2つのタイプをサポートしています。S1(標準ティア)ではAuto Scalingが、PremiumティアではAutomatic Scalingが利用可能です。本記事ではAuto Scalingに焦点を当てていますが、Automatic Scalingの詳細は別途ご覧ください。
動スケーリングとは異なり、Azure App Serviceは特定のメトリクスに基づいて、インスタンス数を自動的に増減させ、アプリケーションの最適な機能を維持することが可能です。

上記のメトリクスは、自動スケーリングを設定する際に重要なポイントです。Httpキューの長さ、CPU使用率、メモリ使用率などは、スケールルールを設定する際に考慮すべきメトリクスの一例です。例えば、過去10分間の平均Httpキューの長さが特定の閾値を超えた場合、インスタンス数を増やす設定を行えます。同様に、平均Httpキューの長さが設定した閾値を下回った場合には、インスタンス数を減らす設定ができます。

また、トラフィックの増加が予想される特定の時間帯がある場合、予めその時間帯にインスタンス数を増やすスケールルールを設定し、その期間が終了したらインスタンス数を減らすことも可能です。なお、自動スケーリングは垂直スケーリングではなく、水平スケーリングのみをサポートしています。

Azureの自動スケーリング機能を使用するメリット

Azureの自動スケーリングは、組織がリソースを最適化し、アプリケーションのパフォーマンスを向上させ、コストを削減するのに役立つ多くの利点を提供します。以下は、Azureの自動スケーリングの主要なメリットです。

  • コスト最適化:自動スケーリングにより、需要に応じてリソース数を自動的に調整できます。ピーク時にはリソースを増やし、使用量が少ないときにはリソースを削減することで、インフラコストを最適化し、使用した分だけ支払うことができます。
  • アプリケーションパフォーマンスの向上:自動スケーリングにより、トラフィックや負荷が急増しても手動で介入する必要がなく、アプリケーションのパフォーマンスと応答性を維持できます。
  • 高可用性:自動スケーリングは、アプリケーションの可用性を向上させます。複数のインスタンスや仮想マシンにトラフィックを分散させることで、ハードウェア障害やその他の問題によるダウンタイムのリスクを軽減します。インスタンスが1つ失敗しても、負荷分散によって健全なインスタンスにトラフィックをリダイレクトできます。
  • 効率的なリソース活用:自動スケーリングにより、現在の需要に応じて動的にリソースを割り当てることができ、非効率なリソースの使用やアイドル状態を削減します。これにより、リソースとワークロードの比率がより効率的になります。

終わりに

Azureの自動スケーリング機能を活用することで、組織はリソースを最適化し、アプリケーションのパフォーマンスを向上させ、運用コストを削減しながら、一貫した可用性と効率的なリソース利用を確保できます。

アイレット株式会社のGlobal Solutions事業部では、お客様のビジネス変革を実現しながら、最新のデータソリューションの導入を加速できるように設計されたデータ分析ソリューションとデータサービスの幅広いポートフォリオを提供しています。ビジネスの成功こそ、私たちが追求するものです。お困りの際はぜひ一度お気軽にお問い合わせください。

cloudpack サービスページ

参考資料

[1] https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/management/azure-subscription-service-limits#app-service-limits
[2] https://azure.microsoft.com/ja-jp/pricing/details/app-service/windows/
[3] https://learn.microsoft.com/ja-jp/azure/app-service/manage-automatic-scaling?tabs=azure-portal
[4] https://learn.microsoft.com/ja-jp/azure/azure-monitor/autoscale/autoscale-overview#horizontal-vs-vertical-scaling