サーバーは必要な分だけ!サーバースケーリングの基本とAzureでの実践

公開日

/更新日


サーバールーム

クラウドでは、サーバーの「スケーリング」機能が提供されています。この機能を利用することで、アクセスが集中する時間帯でサーバーを増強したり、利用の少ない休日に縮小しコストを抑えたりすることができます。

本記事では、サーバースケーリングの基本的な概念と、Azureでの操作方法を解説します。

スケーリングの種類

スケーリングには、「水平スケーリング」と「垂直スケーリング」があります。
まずはこれらの用語と使い分けについて説明します。

「水平スケーリング」とは?

インスタンス数 (サーバーの台数) を増減させるのが、水平スケーリングです。

  • スケールアウト (Scale Out) :インスタンス数を増やす
  • スケールイン (Scale In) :インスタンス数を減らす
サーバーのラックが増加

「垂直スケーリング」とは?

CPUやメモリなどサーバーの性能を変更するのが、垂直スケーリングです。

  • スケールアップ (Scale Up) :サーバーの性能を上げる
  • スケールダウン (Scale Down) :サーバーの性能を下げる
サーバーのスペックが増加

この2種類のスケーリングは正しく使い分ける必要があります。正しく使い分けないと、十分な効果が得られない可能性があります。

水平スケーリングを採用するケース

WebアプリケーションやAPIのように、複数台で処理を分担しやすい場合に向いています。

  • アクセス数が多い時間帯はインスタンス数を増やし、応答速度を改善する
  • インスタンス数を複数用意しておくことで、可用性 (常に利用できる状態を維持すること) を高める

垂直スケーリングを採用するケース

バッチ処理やサーバー内でセッション管理しているような、処理を分担できない場合に向いています。

  • 負荷の高い処理に備えて、サーバーの性能を上げる
  • アクセス数が少ない時間帯は、サーバーの性能を下げてコストを抑える

Azureにおけるスケーリングの操作方法

ここからは、AzureのApp Serviceを例にスケーリング方法を解説します。
水平・垂直どちらも、Azure Portalでの簡単な画面操作のみで行うことができます。

水平スケーリングの操作方法

App Serviceプランのサイドメニューで、「スケール アウト (App Service のプラン) 」を選択し、インスタンス数を変更して保存します。操作はこれだけです。

スケールアウトの画面で、インスタンス数を変更し保存する

垂直スケーリングの操作方法

App Serviceプランのサイドメニューで、「スケール アップ (App Service のプラン) 」を選択し、プラン (サーバーの性能) を変更して保存します。こちらも、操作はこれだけです。

スケールアップの画面でプランを選択し保存する

Azureにおける自動スケーリングの設定方法

Azure Portalで簡単にスケーリングすることができますが、頻繁に行う場合は手間となってしまいます。
Azureでは、指定した時間帯や利用状況に応じて自動でスケーリングするように設定することができます。

例)

  • 毎週木・金曜の9:00~12:00はインスタンス数を2に増やす
  • CPU使用率が70%を超えた場合はインスタンス数を1増やし、30%を下回った場合は1減らす

今回は、「毎週木・金曜の9:00~12:00はインスタンス数を2に増やす」を例に解説します。

水平方向の自動スケーリングの設定方法

スケールアウト方法を選択する

スケールアウト方法として、「ルールベース」を選択します。

スケールアウトの画面でルールベースを選択し構成を押下

「自動」を選択した場合は、トラフィック (アクセス量) に応じて自動で水平スケーリングが行われます。
インスタンスの最小数・最大数を設定してその範囲でスケーリングされます。
細かくルールを設定したい場合は、「ルールベース」を選択します。

STEP
1

スケーリングの条件を新規追加する

「カスタム自動スケーリング」を選択して、スケーリングの条件を新規追加します。

カスタム自動スケーリングを選択
スケーリング条件を追加するを押下
STEP
2

スケーリングの条件を入力して保存する

スケールアウトしたい時間帯と、インスタンス数を指定します。
CPU使用率などのメトリックに応じてスケーリングしたい場合は、「メトリックに基づいてスケーリングする」を指定します。
スケーリングの条件は複数指定可能です。条件を入力したら、保存して完了です。

繰り返し間隔や開始時刻・終了時刻などを入力し保存する
STEP
3

垂直方向の自動スケーリングの設定方法

Azureでは、垂直方向の自動スケーリング機能は標準で提供されていません。ただし、「Azure Automation」を使用することで実現できます。

このAzure Automationは、指定した時間 (例えば、毎週木・金曜の10:00) に特定のプログラムを自動で実行させることができます。
これを利用して、特定の時間にApp Serviceのプラン変更を設定することで、垂直方向の自動スケーリングを実現できます。

注意事項

スケーリング後の費用

スケールアウトやスケールアップを実施した場合、サーバーが増強されるため費用は高くなります。

  • スケールアウト:インスタンス数に応じて費用が増加します。
  • スケールアップ:選択するプランに応じて費用が増加します。
サービスプランvCPU(s)RAM費用(1時間あたり)
B111.75 GB$0.089
B223.50 GB$0.177
B347 GB$0.354
P0v414 GB$0.152
P1v428 GB$0.304
P2v4416 GB$0.608
P3v4832 GB$1.216
出典:https://azure.microsoft.com/ja-jp/pricing/details/app-service/windows/

過剰な構成にならないように、まずは性能が低いプランから利用を開始し、利用状況に合わせてインスタンス数やプランを調整していくとよいでしょう。
また、自動スケーリングを利用している場合でも、想定外の負荷がかかって意図しないコストが発生する可能性があるため、CPU使用率や応答時間、インスタンス数などを監視することが重要です。

垂直方向のスケーリングではサーバーが再起動される

垂直スケーリングでは、スケーリングの変更時にサーバーが再起動されます。
再起動されると実行中の処理は中断されるため、重要な処理中に再起動が発生するとシステム障害につながるおそれがあります。
垂直スケーリングを行う際は、バッチ処理の実行時間やメンテナンス時間と重ならないように、実施タイミングに注意してください。

まとめ

「水平スケーリング」と「垂直スケーリング」の概要と、Azureにおける具体的なスケーリング方法を解説しました。
クラウドを利用することで、簡単にスケーリングを行うことができます。システムの利用状況に合わせて柔軟にスケーリングすることで、システム利用がより快適になりクラウド利用コストの抑制にもつながります。

弊社は、Azureを利用したシステムの開発実績が豊富にあります。今回紹介したスケーリングについては、利用状況に合わせたスケーリング設計も支援しております。クラウドに関する悩み事やご相談がありましたら、お気軽に弊社にご連絡ください。


PAGE TOP