Skip to content

Commit 5526405

Browse files
authored
refs
1 parent 78337dc commit 5526405

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed

README.md

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,34 @@ Last updated: 2025-07-30
4343
- [Cloud Computing Era 1990s-2010](#cloud-computing-era-1990s-2010)
4444
- [Cloud-Native & Beyond 2013-Present](#cloud-native--beyond-2013-present)
4545
- [Energy & Sustainability Milestones 1992-present](#energy--sustainability-milestones-1992-present)
46+
- [Recommended Approaches and Best Practices](#recommended-approaches-and-best-practices)
47+
- [Monitor and Request Quota Increases](#monitor-and-request-quota-increases)
48+
- [Multi-Region Planning](#multi-region-planning)
49+
- [Leverage Newer/Alternative Regions](#leverage-neweralternative-regions)
50+
- [Right-Size and Optimize Consumption](#right-size-and-optimize-consumption)
51+
- [Work with Azure Support](#work-with-azure-support)
52+
- [Adopt Carbon- and Cost-Aware Scheduling](#adopt-carbon--and-cost-aware-scheduling)
4653

4754
</details>
4855

4956
## History → Cloud → Azure
5057

58+
> `Why There’s Not Enough Quota/Capacity for Some Cloud Services in Some Regions?`
59+
60+
> 1. **Physical Hardware Limits**:
61+
> - Each cloud region is made up of physical data centers (“Availability Zones”) with finite amounts of servers, storage, and network hardware.
62+
> - Newer hardware (like GPUs or specialized AI accelerators) or high-demand VM types may be deployed in limited quantities, especially in smaller or newer regions.
63+
> 2. **High Regional Demand**:
64+
> - Popular regions (e.g., “East US”, “West Europe”) can experience surges in demand, especially for trendy services (e.g., AI, GPUs, large VM sizes).
65+
> - Capacity is often allocated on a first-come, first-served basis; sudden spikes (product launches, AI workloads, seasonal trends) can exhaust available resources.
66+
> 3. **Quota as a Control Mechanism**:
67+
> - Cloud providers set default quotas (“service limits”) per subscription to prevent accidental overspending and to protect the underlying infrastructure from noisy-neighbor effects.
68+
> - Quotas help manage risk, avoid abuse, and ensure fair access for all tenants.
69+
> 4. **Supply Chain and Energy Constraints**:
70+
> - Hardware supply can be delayed due to global supply chain issues, and energy constraints (grid limits, sustainability targets) can cap regional expansion.
71+
> - Highly sustainable regions may have stricter power/capacity planning to meet carbon goals.
72+
> 5. **Regulatory and Compliance Restrictions**: Some services are only available in specific regions due to regulatory, data residency, or export control reasons.
73+
5174
<img width="1143" height="921" alt="cloud-evolution-timeline-Computing Timeline drawio" src="https://github.com/user-attachments/assets/4096eb52-7a0e-4a98-8b01-0b8e7884cdd8" />
5275

5376
[Diagram](./docs/cloud-evolution-timeline.drawio)
@@ -1096,6 +1119,165 @@ From [K8s cluster components](https://kubernetes.io/docs/concepts/architecture/)
10961119

10971120
</details>
10981121

1122+
## Recommended Approaches and Best Practices
1123+
1124+
> In Azure, service/capacity limitations in certain regions are common, especially for high-demand resources (like GPUs, large VM sizes, or new services).
1125+
1126+
> By monitoring quotas, planning for multi-region deployment, optimizing usage, and collaborating with Microsoft, you can minimize disruption from regional Azure capacity constraints, while meeting energy and sustainability goals.
1127+
1128+
### Monitor and Request Quota Increases
1129+
1130+
- Regularly monitor quotas: Use the Azure Portal `Usage + quotas` (per Subscription/Region/Provider) and service blades (e.g., vCPU—virtual CPU families).
1131+
- Proactively request increases: Submit quota increases ahead of scale events; some are self‑serve, others require support.
1132+
- Automate monitoring: Script checks and alerts for thresholds.
1133+
- What to monitor (examples):
1134+
- Compute vCPU families (Dv5, Fsv2, ND/NC GPU families), Public/Static IPs, disk SKUs, vNet Gateways (per region).
1135+
- AKS (Azure Kubernetes Service) underlying VM quotas (node pools map to VM families/regions).
1136+
- CLI/PowerShell quick checks (Windows PowerShell):
1137+
```powershell
1138+
# vCPU usage/limits for a region
1139+
az vm list-usage -l eastus -o table
1140+
1141+
# Unattached Public IPs (proxy for capacity housekeeping)
1142+
az network public-ip list -g MyRg --query "[?ipConfiguration==null]" -o table
1143+
1144+
# Regions list
1145+
az account list-locations --query "[].{name:name, displayName:displayName}" -o table
1146+
```
1147+
- Quota change request:
1148+
- Portal: Subscription > Usage + quotas > Microsoft.Compute (or service) > Region > Request increase.
1149+
- Support ticket (CLI)
1150+
```powershell
1151+
az extension add --name support
1152+
az support ticket create `
1153+
--problem-classification "Service and subscription limits (quotas)" `
1154+
--service-id "Microsoft.Compute" `
1155+
--title "Increase Dv5 vCPU quota in East US" `
1156+
--severity minimal `
1157+
--description "Need +500 vCPU for AKS scale event in 3 weeks"
1158+
```
1159+
1160+
- Alerting pattern: Schedule a task (Windows Task Scheduler/Azure Automation) that pages if usage/limit > 80%.
1161+
1162+
### Multi-Region Planning
1163+
1164+
- Architect for portability: Parameterize region/zone in ARM (Azure Resource Manager), Bicep, or Terraform; avoid hard‑coding.
1165+
- Infrastructure as Code (IaC): One template, multiple parameter files for primary/secondary; validate with what‑if.
1166+
- Data replication:
1167+
- Storage: LRS → ZRS → GRS/RAGRS/GZRS (pick per RPO/RTO).
1168+
- Azure SQL: Auto‑Failover Groups.
1169+
- Cosmos DB: Multi‑region writes; pick consistency (eventual → strong).
1170+
- Key Vault: Zone‑redundant vaults, soft‑delete, purge protection.
1171+
- Routing and failover:
1172+
- Azure Front Door (global L7) or Traffic Manager (DNS) for active/active or active/passive; health probes drive failover.
1173+
- DNS (Domain Name System) TTL tuning for faster cutover.
1174+
- Region‑parameterized Bicep:
1175+
```bicep
1176+
// Deploy a VM Scale Set; pass -p region=eastus|westus2 on deploy
1177+
@allowed([
1178+
'eastus'
1179+
'westus2'
1180+
'westeurope'
1181+
])
1182+
param region string = resourceGroup().location
1183+
1184+
resource vmss 'Microsoft.Compute/virtualMachineScaleSets@2023-09-01' = {
1185+
name: 'fleet'
1186+
location: region
1187+
sku: {
1188+
name: 'Standard_D4s_v5'
1189+
capacity: 3
1190+
tier: 'Standard'
1191+
}
1192+
properties: {
1193+
upgradePolicy: { mode: 'Rolling' }
1194+
// ...other properties...
1195+
}
1196+
}
1197+
```
1198+
- What‑if to verify drift/impact:
1199+
```powershell
1200+
az deployment group what-if -g MyRg -f main.bicep -p region=westus2
1201+
```
1202+
1203+
### Leverage Newer/Alternative Regions
1204+
1205+
- Check capacity in alternatives: Newer/less‑used regions can have more GPU/large VM stock.
1206+
- Evaluate constraints: Latency, data residency, compliance, AZ (Availability Zone) count, price/SLA.
1207+
- Practical steps:
1208+
- Maintain a ranked “preferred regions” list per workload (latency‑critical vs batch).
1209+
- Measure latency to users/backends:
1210+
```powershell
1211+
az network watcher test-connectivity `
1212+
--source-resource <vmIdOrName> `
1213+
--dest-address myapp.contoso.com --dest-port 443
1214+
```
1215+
- Keep equivalency maps of VM SKUs by region (families differ regionally).
1216+
1217+
- Cost/feature checks: Compare regional pricing and SLAs; validate managed service feature parity before moving.
1218+
1219+
### Right-Size and Optimize Consumption
1220+
1221+
- Use autoscaling and Spot VMs (Virtual Machine Scale Sets—VMSS):
1222+
```powershell
1223+
az vmss create -g MyRg -n batch-spot `
1224+
--image UbuntuLTS --orchestration-mode Uniform `
1225+
--priority Spot --max-price -1 --instance-count 0
1226+
```
1227+
- Deallocate unused resources:
1228+
```powershell
1229+
# Stop/deallocate
1230+
az vm deallocate -g MyRg -n DevVm01
1231+
1232+
# Find and clean up unattached disks
1233+
az disk list --query "[?managedBy==null].{name:name, rg:resourceGroup}" -o table
1234+
```
1235+
- Schedule non‑critical work: Run batch at off‑peak times/regions (AKS CronJobs, Functions timers, Logic Apps).
1236+
- Instance/disk optimization: Size VMs to actual CPU/mem/IO; use Ephemeral OS disks for stateless nodes; choose Premium SSD v2/Ultra only where needed.
1237+
- Purchasing options: Reservations/Savings Plans for steady workloads; track with Cost Management + Advisor.
1238+
1239+
1240+
### Work with Azure Support
1241+
1242+
- Engage Microsoft early: For large GPU (AI/ML) clusters or bursts, loop in your account team; consider capacity reservations.
1243+
- Capacity reservations (pin capacity):
1244+
```powershell
1245+
az capacity reservation group create -g MyRg -n capGroup -l eastus
1246+
az capacity reservation create -g MyRg --reservation-group capGroup `
1247+
-n capDv5 --sku "Standard_D8s_v5" --capacity 50 --zone 1
1248+
```
1249+
1250+
- Monitor advisories: Azure Service Health alerts for regional constraints/maintenance.
1251+
- Open a support ticket (CLI):
1252+
```powershell
1253+
az support ticket create `
1254+
--problem-classification "Service and subscription limits (quotas)" `
1255+
--service-id "Microsoft.Compute" `
1256+
--title "GPU quota & capacity planning - East US & West Europe" `
1257+
--severity moderate `
1258+
--description "Requesting NDv5 vGPU quota + capacity reservation for Q4 training."
1259+
```
1260+
### Adopt Carbon- and Cost-Aware Scheduling
1261+
1262+
- Use carbon/cost‑aware strategies: Prefer regions/times with lower carbon intensity or price for deferrable jobs.
1263+
- Automate with orchestrators: AKS scheduler plugins, external metrics; Functions/Logic Apps for timers.
1264+
- Signals and data: Combine grid carbon indicators (gCO₂/kWh) with price/capacity; track kgCO₂e and $/hr in dashboards.
1265+
- AKS autoscale and placement:
1266+
```powershell
1267+
az aks nodepool update -g MyRg -n np1 --cluster-name MyAks `
1268+
--enable-cluster-autoscaler --min-count 1 --max-count 20
1269+
```
1270+
- Label/taint `green` pools; HPA (Horizontal Pod Autoscaler) with external carbon metrics to pause/resume background work.
1271+
- Batch/ETL (Extract–Transform–Load) patterns:
1272+
- Time windows aligned to low‑carbon forecasts
1273+
- Bounded retries with DLQs (Dead‑Letter Queues) for safety
1274+
- Governance:
1275+
- Budgets/alerts for cost and emissions
1276+
- Documented RTO/RPO when shifting regions/windows
1277+
1278+
> [!NOTE]
1279+
> Quotas, capacity, cost, and carbon are coupled constraints. Make deployments portable (IaC), keep a ranked list of viable regions/SKUs, and wire alerts so you can react before users feel it.
1280+
10991281
<!-- START BADGE -->
11001282
<div align="center">
11011283
<img src="https://img.shields.io/badge/Total%20views-1341-limegreen" alt="Total views">

0 commit comments

Comments
 (0)