Azure Proactive Resiliency Library v2
Tools Glossary GitHub GitHub Issues Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

serverFarms

Summary

RecommendationImpactCategoryAutomation AvailablePG Verified
App Service を可用性ゾーンのサポートに移行するHighHigh AvailabilityYesPreview
Standard または Premium レベルを使用するHighHigh AvailabilityYesPreview
スケールアップまたはスケールダウンを避けるMediumScalabilityYesPreview
実稼働用とテスト用に個別の App Service プランを作成するHighGovernanceNoPreview
自動スケール/自動スケーリングを有効にして、サービス リクエストに適切なリソースを利用できるようにします。MediumScalabilityNoPreview

Details


App Service を可用性ゾーンのサポートに移行する

Impact:  High Category:  High Availability PG Verified:  Preview

Description:

可用性ゾーン全体に App Service プランを展開する Azure の機能は、データセンター障害時の運用を確保し、別のリージョンを必要とせずに冗長性を提供することで回復力と信頼性を強化し、ダウンタイムを最小限に抑え、中断のないサービスを維持します。

Potential Benefits:

Enhances app resiliency and reliability
Learn More:
Migrate App Service to availability zone support
High availability enterprise deployment using App Service Environment

ARG Query:

Click the Azure Resource Graph tab to view the query

// Azure Resource Graph Query
// The query filters the qualified App Service Plans that do not have Zone Redundancy enabled.
// Its important to check regions that support availability zones for Azure App Services running on multi-tenant and App Service Environments https://learn.microsoft.com/en-us/azure/reliability/reliability-app-service?tabs=graph%2Ccli#:~:text=The%20following%20regions%20support%20Azure%20App%20Services%20running%20on%20multi%2Dtenant%20environments%3A

resources
| where type =~ 'microsoft.web/serverfarms'
| extend zoneRedundant = tobool(properties.zoneRedundant)
| extend sku_tier = tostring(sku.tier)
| where (tolower(sku_tier) contains "isolated" or tolower(sku_tier) contains "premium") and zoneRedundant == false
| project recommendationId="88cb90c2-3b99-814b-9820-821a63f600dd", name, id, tags, param1=sku_tier, param2="Not Zone Redundant"



Standard または Premium レベルを使用する

Impact:  High Category:  High Availability PG Verified:  Preview

Description:

高度なスケーリング、高可用性、優れたパフォーマンス、複数のスロットを備えた堅牢なアプリを実現するには、Standard/Premium Azure App Service Plan を選択して、復元力と継続的な運用を確保します。

Potential Benefits:

Enhanced scaling and reliability
Learn More:
Resiliency checklist for specific Azure services

ARG Query:

Click the Azure Resource Graph tab to view the query

// Azure Resource Graph Query
// Provides a list of Azure App Service Plans that are not in the "Standard", "Premium", or "IsolatedV2" SKU tiers.

resources
| where type =~ 'microsoft.web/serverfarms'
| extend sku_tier = tostring(sku.tier)
| where tolower(sku_tier) !contains "standard" and
        tolower(sku_tier) !contains "premium" and
        tolower(sku_tier) !contains "isolatedv2"
| project recommendationId="b2113023-a553-2e41-9789-597e2fb54c31", name, id, tags, param1= strcat("SKU=",sku_tier)



スケールアップまたはスケールダウンを避ける

Impact:  Medium Category:  Scalability PG Verified:  Preview

Description:

サービスの中断を防ぐために、Azure App Service インスタンスの頻繁なスケールアップ/スケールダウンは避けてください。スケーリングの調整によりアプリケーションの再起動がトリガーされる可能性があるため、ワークロードに適切な層とサイズを選択し、トラフィックの変化に合わせてスケールアウトします。

Potential Benefits:

Minimizes restarts, enhances stability
Learn More:
Resiliency checklist for specific Azure services

ARG Query:

Click the Azure Resource Graph tab to view the query

// Azure Resource Graph Query
// Provides a list of Azure App Service Plans and the number of changes that was made to the pricing tier, if the count is higher that 3 it means you need to avoid scaling up and down that often

resourcechanges
| extend changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceId = tostring(properties.targetResourceId),
changeType = tostring(properties.changeType), correlationId = properties.changeAttributes.correlationId,
changedProperties = properties.changes, changeCount = properties.changeAttributes.changesCount
| where changeTime > ago(14d)
| join kind=inner (resources | project resources_Name = name, resources_Type = type, resources_Subscription= subscriptionId, resources_ResourceGroup= resourceGroup, id) on $left.targetResourceId == $right.id
| where resources_Type contains "microsoft.web/serverfarms"
| where changedProperties['sku.name'].propertyChangeType == 'Update' or changedProperties['sku.tier'].propertyChangeType == 'Update'
| summarize count() by targetResourceId, resources_Name  ,tostring(changedProperties['sku.name'].previousValue), tostring(changedProperties['sku.tier'].newValue)
| project recommendationId="07243659-4643-d44c-a1c6-07ac21635072", name=resources_Name, id=targetResourceId, tags="", param1=['changedProperties_sku.name_previousValue'], param2=['changedProperties_sku.tier_newValue'], param3=count_



実稼働用とテスト用に個別の App Service プランを作成する

Impact:  High Category:  Governance PG Verified:  Preview

Description:

テスト目的で運用環境のデプロイ内のスロットを使用しないように、運用環境とテスト環境に個別の App Service プランを作成することを強くお勧めします。

Potential Benefits:

Protects prod performance; avoids test impact
Learn More:
Resiliency checklist for specific Azure services

ARG Query:

Click the Azure Resource Graph tab to view the query

// cannot-be-validated-with-arg



自動スケール/自動スケーリングを有効にして、サービス リクエストに適切なリソースを利用できるようにします。

Impact:  Medium Category:  Scalability PG Verified:  Preview

Description:

Azure App Service の自動スケール/自動スケーリングを有効にすると、受信リクエストに対して十分なリソースが確保されます。自動スケーリングはルールベースですが、新しい機能である自動スケーリングは HTTP トラフィックに基づいてリソースを自動的に調整します。

Potential Benefits:

Optimizes resources for traffic
Learn More:
Automatic scaling in Azure App Service
Auto Scale Web Apps

ARG Query:

Click the Azure Resource Graph tab to view the query

// under-development