5.2K Views
April 20, 24
スライド概要
2024年4月20日 Global Azure 2024 で登壇した資料です。
Azure App Service で2024年3月にGAした「Automatic Scaling」を紹介させていただいた際の資料です。
Microsoft MVP for Microsoft Azure/ Azure, .NETのWebアプリケーションエンジニア / 技術情報発信・勉強会実況アカ /
Azure App Service の 新しい「自動スケーリング」を触ってみた 2024年4月20日「Global Azure 2024」 御成門プログラマー(Tomotaka Suzuki) X(Twitter): @onarimonprogram
自己紹介 名前:御成門プログラマー(Tomotaka Suzuki) 受賞: Microsoft MVP(Microsoft Azure) 2023年6月~ 技術: Microsoft Azure(コスト,Azure PaaS周り多 め), .NET, Angular X(Twitter) : @onarimonprogram 技術ブログ : onarimon.jp グルメブログ: food.onarimon.jp
Azure App Service Web Appsの 「Automatic Scaling」がGA Azure App Service の 「Automatic Scaling 」が2024年3月25日GA どんな機能? HTTPリクエスト要求に合わせてアプリケーションのインスタンス数を自動的に増減 Webアプリごとのスケーリングと最小インスタンス数を制御可能 利用できる環境、SKUについて すべてのアプリタイプ(Windows、Linux、Windows Container)をサポート 「Premium V2」と「Premium V3」の価格設定層で利用可能 Automatic Scalingは秒単位で課金、既存のApp Service Planの課金メーターを使用 General Availability: Automatic Scaling for App Service Web Apps | Azure の更新情報 | Microsoft Azure
Azure App Service のスケーリング方法比較 従来の自動スケール (Autoscale, Rules Based) オートマチックスケーリング (Automatic scaling) 手動変更 CPU使用率、データ量、メモリ使用 率などなどのメトリック量に応じたス ケールアウト/スケールイン トラフィック量によるWebアプリごとの自 動的スケーリング App Service Plan ごと App Service Plan ごと Webアプリごと App Service Plan ごと App Service Plan(Webアプリごとに も設定可能) Webアプリごと × × ○ × × ○ ○ ○ × 秒単位 秒単位 秒単位 手動 スケーリング方法 スケールアウト/インの単位 スケールアウト/インの最大値設定 常時対応インスタンス 事前ウォームアップインスタンス Azure Functions On App Service Plan 課金単位 How to enable automatic scaling - Azure App Service | Microsoft Learn
Auto ScaleとAutomatic Scaling AutoScale WebApp1 Automatic Scaling WebApp1 あらかじめ作成した WebApp2 メトリックベースの WebApp2 ルール設定に従い スケール WebApp1 WebApp2 WebApp1 トラフィック量に応じ て負荷のあったア プリのみ全自動で スケーリング WebApp2 WebApp1
Automatic Scaling のメリット スケーリングのルールを自分で考える必要がない → 管理コストの削減 以外と時間がかかるスケーリングルール策定(メトリック何にする?閾値を毎回微調整) →そんな時間をかけて決めたスケーリングルールが以外と本番で思ったとおりに動かないなんてことも 下手なこと考えるなら自動でスケーリングはお任せしちゃおう トラフィックの需要が高いときの自動スケール → 必要なときに必要な分だけのリソース 需要が増えれば自動スケールアウト、需要が落ちたら自動スケールイン 秒単位の課金で必要な時に使った分だけ課金 Webアプリごとに個別にスケーリングが可能 Webアプリごとに最大/最小インスタンス数が設定できる → リソースの最適化 必要のないリソースは無駄にスケールアウトしない。 逆に需要のあるWebアプリのインスタンス最小数だけをあげておくことも可能。
Automatic Scalingの設定 スケールアウト方法(Manual, Automatic, Rules Based)とプランでの最大インスタンス数はApp Service Plan ごとに選択。 Webアプリごとにウォーム状態にしておくインスタンス数、Webアプリごとの最大インスタンス数設定が可能 項目名 単位 説明 Maximum burst (最大バースト) App Service Planで 共通 App Service Planが負荷下でスケールアウトできるイ ンスタンスの最大数。 Always ready instances (常に準備されたインスタンス) Web Apps ごと このWebアプリ の常に準備され、ウォームな状態にあ るインスタンスの数。 Enforce scale out limit (スケールアウト制限の強制) Web Apps ごと このWebアプリ がスケールアウトできるインスタンス の数を設定するかどうか(ON/OFF) Maximum scale limit (最大スケール制限) Web Apps ごと このWebアプリ がスケールアウトできる最大のインス タンス数。
Webアプリごとのインスタンス数を確認 メトリック「AutomaticScalingInstanceCount」でWeb Appsごとのインスタンス数を確認 可能
実際にAutomatic Scalingの動きを見てみよう Azure Load Testing で負荷をかけてみる。 Azure Load Testing HTTPトラフィッ ク負荷 WebApp1 WebApp1 WebApp2 WebApp2 WebApp1
おさらい スケーリングのルールを自分で考える必要がない → 管理コストの削減 以外と時間がかかるスケーリングルール策定(メトリック何にする?閾値を毎回微調整) →そんな時間をかけて決めたスケーリングルールが以外と本番で思ったとおりに動かないなんてことも 下手なこと考えるなら自動でスケーリングはお任せしちゃおう トラフィックの需要が高いときの自動スケール → 必要なときに必要な分だけのリソース 需要が増えれば自動スケールアウト、需要が落ちたら自動スケールイン 秒単位の課金で必要な時に使った分だけ課金 Webアプリごとに個別にスケーリングが可能 Webアプリごとに最大/最小インスタンス数が設定できる → リソースの最適化 必要のないリソースは無駄にスケールアウトしない。 逆に需要のあるWebアプリのインスタンス最小数だけをあげておくことも可能。