0Pricing
Azure Fundamentals · レッスン

自動スケーリングとカスタム ドメイン

CPU と HTTP キューのメトリックに基づくスケールアウト ルールを構成し、カスタム ドメインを Web アプリにマッピングして、無料の App Service Managed Certificate をバインドします。

「自動スケーリングとカスタム ドメイン」はCoddyKit上の無料Azure Fundamentalsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAzure Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Azure Fundamentalsコースには全4レッスンが含まれています。

オートスケーリングが重要な理由

オートスケーリングは、リアルタイムの需要に基づいてアプリケーションを実行する App Service インスタンス数を自動的に調整します。オートスケーリングがない場合、ピーク時の負荷に合わせてリソースを用意する必要があり、負荷の低い時間帯にも使用していない容量へ料金を支払うことになります。オートスケーリングを使用すると、負荷が上昇したときに Azure がインスタンスを追加し、低下したときに削除するため、パフォーマンスとコストの両方を最適化できます。オートスケーリングには Standard レベル以上が必要です。

スケールアウトとスケールアップ

Azure には 2 つのスケーリング方法があります。スケールアウト(水平スケーリング)は、負荷を分散するためにアプリの同一インスタンスを追加します。オートスケーリングが主に行うのはこれです。スケールアップ(垂直スケーリング)は、App Service プランの SKU を変更して、CPU と RAM がより多い大きな VM サイズへ移行します。複数のインスタンスが個々の障害に耐えられるため、回復性の観点ではスケールアウトが推奨されます。一方、スケールアップにはハードウェア上の制限があります。

# Scale out to 5 instances manually
az appservice plan update \
  --name MyAppServicePlan \
  --resource-group MyRG \
  --number-of-workers 5

# Scale up: change the SKU tier
az appservice plan update \
  --name MyAppServicePlan \
  --resource-group MyRG \
  --sku P2V3

オートスケール ルールとプロファイル

Azure のオートスケールは、App Service プランに関連付けたオートスケール設定で構成します。オートスケール設定には 1 つ以上のプロファイル(通常、固定日、繰り返し)が含まれ、各プロファイルにはルールが含まれます。メトリックがしきい値(例: CPU > 70%)を超えるとスケールアウト ルールが実行され、より低いしきい値(例: CPU < 30%)を下回るとスケールイン ルールが実行されます。制御不能な増加や過剰なコストを避けるため、必ずスケールアウトとスケールインの両方のルールを定義してください。

# Create an autoscale setting with CPU-based rules
az monitor autoscale create \
  --name MyAutoscale \
  --resource-group MyRG \
  --resource MyAppServicePlan \
  --resource-type Microsoft.Web/serverfarms \
  --min-count 2 \
  --max-count 10 \
  --count 2

# Add scale-out rule: CPU > 70% for 5 minutes
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale out 2 \
  --condition 'CpuPercentage > 70 avg 5m'

スケジュールベースのオートスケーリング

スケジュールベースのオートスケーリング(繰り返しプロファイル)を使用すると、予測可能なトラフィック パターンに備えて事前にスケールできます。たとえば、平日の 08:00 に 10 インスタンスへスケールアウトし、18:00 に 2 インスタンスへ戻します。スケジュールベースとメトリックベースのプロファイルを組み合わせることで、既知のピークには事前に容量を確保し、予期しない急増には柔軟に対応できます。

# Add a recurrence profile for weekday peak hours
az monitor autoscale profile create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --name 'WeekdayPeak' \
  --min-count 5 \
  --max-count 15 \
  --count 5 \
  --recurrence week mon tue wed thu fri \
  --start 08:00 \
  --end 18:00 \
  --timezone 'UTC'

クールダウン期間

クールダウン期間とは、スケーリング アクションの後に、それ以上のスケーリングを行わない待機時間です。一時的なメトリックの急増によってスケールアウトやスケールインが短時間に繰り返される、フラッピングを防ぎます。既定のクールダウンは、スケールアウトが 5 分、スケールインも 5 分です。削除前にインスタンスがアクティブな接続を解放する時間を確保するため、スケールインにはより長いクールダウン(例: 10~15 分)を設定してください。

# Scale-in rule with 10-minute cooldown
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale in 1 \
  --condition 'CpuPercentage < 30 avg 10m' \
  --cooldown 10

カスタム ドメインの構成

App Service アプリには、既定で azurewebsites.net ホスト名が割り当てられます。独自のドメイン(例: www.contoso.com)を使用するには、App Service の設定でカスタム ドメインを追加し、ドメイン レジストラーで対応する DNS レコードを作成します。DNS ゾーンにCNAMEまたはTXT レコード(検証レコードと呼ばれます)を作成して所有権を証明し、その後、実際のルーティング用 CNAME または A レコードを作成する必要があります。

# DNS records at your registrar:
# CNAME  www           MyUniqueWebApp.azurewebsites.net
# TXT    asuid.www     <verification_id from Azure portal>

# After DNS propagation, add the custom domain in Azure
az webapp config hostname add \
  --webapp-name MyUniqueWebApp \
  --resource-group MyRG \
  --hostname www.contoso.com

カスタム ドメイン用 TLS 証明書

カスタム ドメインをマッピングしたら、HTTPS を有効にするためにTLS 証明書が必要です。App Service には 3 つの選択肢があります。App Service Managed Certificate(無料で自動更新されますが、標準ドメインに限定)、App Service Certificate(Azure で購入し、Key Vault に保存)、またはサードパーティ証明書のアップロード(Let's Encrypt や認証局から取得した独自の証明書)です。HTTPS 専用モードを使用すると、すべての HTTP トラフィックが自動的に HTTPS へリダイレクトされます。

# Create a free App Service Managed Certificate
az webapp config ssl create \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --hostname www.contoso.com

# Bind the certificate to enforce HTTPS
az webapp config ssl bind \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --certificate-thumbprint <THUMBPRINT> \
  --ssl-type SNI

# Enforce HTTPS only
az webapp update \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --https-only true

オートスケーリング用 HTTP キュー メトリック

CPU は一般的なオートスケール メトリックですが、Web アプリケーションではHTTP キューの長さの方が適切な指標になることがよくあります。キューが長い場合、インスタンスが完全に使用中で、新しい要求が待機しています。HttpQueueLengthに基づくスケーリングでは、CPU がユーザーから見える遅延を必ずしも示さずに変動する場合でも、CPU に基づく場合より早く過負荷を検出できます。堅牢なオートスケール動作を実現するには、両方のメトリックを組み合わせて使用してください。

# Scale out when HTTP queue length exceeds 100
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale out 2 \
  --condition 'HttpQueueLength > 100 avg 1m' \
  --cooldown 5

# Scale in when queue drops below 10
az monitor autoscale rule create \
  --autoscale-name MyAutoscale \
  --resource-group MyRG \
  --scale in 1 \
  --condition 'HttpQueueLength < 10 avg 10m' \
  --cooldown 10

オートスケール通知

スケーリング イベントの発生時にメールまたは webhook アラートを受け取るよう、オートスケール通知を構成します。これにより、チームはトラフィック パターンを把握し、オートスケールが期待どおりに動作していることを確認できます。通知はオートスケール設定の通知セクションで構成し、複数のメール アドレスや webhook エンドポイントを対象にできます(Slack、PagerDuty、カスタム ツールとの統合に利用できます)。

# Add email notification to autoscale setting
az monitor autoscale update \
  --name MyAutoscale \
  --resource-group MyRG \
  --add-condition '{"email": {"sendToSubscriptionAdministrator": true, "customEmails": ["ops@contoso.com"]}, "webhooks": []}'

アペックス ドメインと Traffic Manager

アペックス ドメイン(例:www を付けない contoso.com)を App Service にマッピングするには、App Service の IP アドレスを指すA レコードと、TXT 検証レコードが必要です。App Service の IP アドレスは変更される可能性があるため、Microsoft は中継として Azure Traffic Manager または Azure Front Door を使用することを推奨しています。アペックス ドメインの CNAME 相当(ALIAS/ANAME レコード)を Traffic Manager プロファイルに向け、Traffic Manager から App Service にルーティングします。

# Get the App Service inbound IP (for A record)
az webapp show \
  --name MyUniqueWebApp \
  --resource-group MyRG \
  --query 'inboundIpAddress' -o tsv

# DNS at registrar (apex domain with A record approach)
# A      contoso.com     <inboundIpAddress>
# TXT    asuid           <verification_id>

オートスケールの動作をテストする

オートスケールを構成したら、人工的な負荷を生成して正常に動作することをテストします。Apache JMeter、k6、Azure Load Testing などのツールを使用して、同時実行ユーザーをシミュレートします。Azure Monitor で App Service プランのインスタンス数メトリックを監視し、負荷の上昇時にインスタンス数が増加し、負荷が下がると減少することを確認します。スケールのしきい値を検証するため、インスタンスあたりの観測 RPS(1 秒あたりのリクエスト数)を記録します。

# Run a quick load test with curl (basic)
for i in {1..100}; do curl -o /dev/null -s https://www.contoso.com/health & done
wait

# Monitor current instance count
az monitor metrics list \
  --resource '/subscriptions/.../providers/Microsoft.Web/serverfarms/MyAppServicePlan' \
  --metric 'InstanceCount' \
  --interval PT1M

クイック チェック

このレッスンで学んだ Microsoft Azure Fundamentals(AZ-900)の概念について理解度を確認します。

レッスンのまとめ

このレッスンでは、App Service プランのオートスケール規則によって、CPU、HTTP キュー、またはスケジュールのトリガーに基づいてインスタンスが追加または削除されること、カスタム ドメインには DNS CNAME/A レコードと DNS ゾーン内の TXT 検証レコードが必要であること、そしてTLS 証明書(無料のマネージド証明書を含む)によってカスタム ドメインで HTTPS が有効になることを学びました。次は App Service の認証とネットワークについて説明します。

よくある質問

「自動スケーリングとカスタム ドメイン」レッスンは無料ですか?

はい。「自動スケーリングとカスタム ドメイン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Azure Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Azure Fundamentalsコースには全4レッスンが含まれています。

「自動スケーリングとカスタム ドメイン」で何を学びますか?

CPU と HTTP キューのメトリックに基づくスケールアウト ルールを構成し、カスタム ドメインを Web アプリにマッピングして、無料の App Service Managed Certificate をバインドします。 ブラウザで直接実行するハンズオンコードでAzure Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Azure Fundamentalsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAzure Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「自動スケーリングとカスタム ドメイン」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAzure Fundamentalsレッスンでコードを書いて実行できますか?

はい。すべてのAzure Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. App Service プランと Web App の作成
  2. デプロイ スロットとスワップ
  3. 自動スケーリングとカスタム ドメイン
  4. App Service の認証とネットワーク
← Azure Fundamentalsに戻る