Well-Architected Framework¶
Exam Focus: Use WAF pillars to justify design decisions in case-study questions — not just to name the correct service. Relevant for AZ-305 only; not assessed in AZ-900 or AZ-104.
Five-Pillar Summary¶
| Pillar | Goal | Key Azure Services / Patterns | Exam Focus |
|---|---|---|---|
| Reliability | Survive failures; meet SLA targets | Availability Zones, Traffic Manager, Azure Site Recovery | AZ vs AS vs Multi-Region; RTO/RPO targets |
| Security | Protect data, identities, and workloads | Microsoft Entra ID, Defender for Cloud, Key Vault, DDoS | Zero Trust; defence-in-depth layers |
| Cost Optimization | Maximise value; eliminate waste | Reserved Instances, Spot VMs, Azure Advisor, Cost Budgets | RI vs Spot vs On-Demand trade-offs |
| Operational Excellence | Safe deployments; observable operations | Azure Monitor, Log Analytics, Deployment Slots, IaC | Blue/green deploys; alerting strategy |
| Performance Efficiency | Scale to meet demand; minimise latency | Azure CDN, Front Door, VMSS, Cosmos DB, Redis Cache | Horizontal vs vertical scale; caching layers |
Cross-reference: See High Availability & Disaster Recovery for Reliability patterns, Security for defence-in-depth, Networking — CDN for CDN/Front Door, Compute — Caching for Redis tier selection, Networking for DDoS, and Governance for cost control tooling.
flowchart TD
A[Requirement keyword?] -->|Scale / latency| B[Performance Efficiency\nCDN · Front Door · VMSS · Redis]
A -->|Uptime / SLA| C[Reliability\nAvailability Zones · Traffic Manager · ASR]
A -->|Cost / budget| D[Cost Optimization\nReserved Instances · Spot VMs · Advisor]
A -->|Breach / threat| E[Security\nDefender · Sentinel · Key Vault · RBAC]
A -->|Safe deploy / ops| F[Operational Excellence\nAzure Monitor · Deployment Slots · IaC]
Decision Flow — Pillar Trade-off Navigator¶
flowchart TD
C1[Pillar conflict?] -->|Reliability vs Cost| RC{SLA target >= 99.99%?}
RC -->|Yes| RC_Y[Reliability wins\nMulti-region active-active\nFront Door + geo-replicated DB]
RC -->|No| RC_N[Cost Optimization wins\nSingle-region + Availability Zones\nReserved Instances]
C1 -->|Security vs Performance| SP{Data classified or regulated?}
SP -->|Yes| SP_Y[Security wins\nEncryption-at-rest + in-transit\nPrivate Endpoints · CMK]
SP -->|No| SP_N[Performance Efficiency wins\nCDN · Redis Cache · Front Door\nAdd controls incrementally]
C1 -->|OpEx vs Cost| OC{Prod or deploy freq > daily?}
OC -->|Yes| OC_Y[Operational Excellence wins\nDeployment Slots · IaC pipeline\nAzure Monitor alerts]
OC -->|No| OC_N[Cost Optimization wins\nManual deploy acceptable\nDev/test environment]
Reliability — SLA Target Mapping¶
| SLA Target | Recommended Deployment Pattern | Notes |
|---|---|---|
| 99.9 % | Single region, Availability Set | Protects against rack/host failure; no zone fault |
| 99.95 % | Single region, Availability Zones | Protects against datacenter-level failure |
| 99.99 %+ | Multi-region (active-active/passive) | Requires Traffic Manager or Front Door for routing |
Exam tip: Availability Zones ≠ Availability Sets. AZs span separate datacenters; AS only separate fault/update domains within one datacenter.
Composite SLA Calculation¶
Composite SLA = SLA₁ × SLA₂ × … × SLAₙ (serial dependencies multiply downward).
Worked example: App Service 99.95 % × SQL Database 99.99 % = 99.94 % (monthly downtime budget drops from ~4.4 min to ~26 min).
Adding redundant independent paths raises the composite SLA: Composite = 1 − (1 − SLA₁) × (1 − SLA₂) for parallel components.
Multi-Region Failover Patterns¶
| Pattern | RTO | RPO | Azure Implementation | Key Feature |
|---|---|---|---|---|
| Active-Active | Near zero | Near zero | Front Door + globally distributed backends | Traffic split across regions; no failover lag |
| Active-Passive (warm) | Minutes | Seconds–minutes | Traffic Manager + pre-provisioned standby region | Standby receives replication but serves no live traffic |
| Active-Passive (cold) | Hours | Minutes–hours | Azure Site Recovery + on-demand provisioning | Lowest cost; longest recovery time |
Exam tip: Choose active-active when the requirement states RTO ≈ 0 or "no downtime tolerated". Choose active-passive (warm) when cost must be controlled but recovery must complete within minutes. Use composite SLA multiplication to verify the architecture meets the stated SLA target.
Cost Optimization — Compute Pricing Model Selection¶
| Option | Best For | Commitment | Interruption Risk |
|---|---|---|---|
| On-Demand (Pay-as-go) | Unpredictable workloads, short-term dev/test | None | None |
| Reserved Instances | Steady-state, 24/7 production workloads | 1 or 3 years | None |
| Spot VMs | Fault-tolerant batch jobs, HPC, dev/test | None | Yes (eviction) |
| Azure Hybrid Benefit | Existing Windows Server / SQL Server licences | Bring own licence | None |
Tools: Azure Advisor surfaces rightsizing and idle resource recommendations. Azure Budgets + Cost Alerts prevent spend overruns. See Governance for Policy and Budget configuration patterns.
Exam tip: In case-study questions, every design decision maps to at least one WAF pillar. When asked why a solution is recommended, frame your answer using the pillar: "This satisfies the Reliability pillar because it adds zone redundancy, raising the composite SLA above 99.95 %."
Last updated for AZ-305 exam preparation — review official Microsoft Learn documentation for latest service updates.
Cost Management & Tagging¶
| Service | Type | Best For | Key Feature |
|---|---|---|---|
| Tags | Metadata | Cost allocation, filtering | Key-value pairs; up to 50 per resource |
| Azure Policy - Tag Enforcement | Governance | Require tags on resources | Deny untagged resources; inherit parent tags |
| Cost Management Budgets | Cost control | Spending alerts and limits | Alert at % of budget; action groups supported |
| Cost Alerts | Notification | Anomaly detection, budget thresholds | Credit, budget, department quota alerts |
| Cost Analysis | Analysis | Ad-hoc spend review | Filter by tag, resource group, subscription |
Exam tip: Tags do NOT inherit from parent scopes (RG to resource) by default. Use Azure Policy with the
Inherit a tag from the resource groupinitiative to enforce tag inheritance automatically.
Tag Inheritance Architecture¶
graph TD
A[Management Group] --> B[Subscription]
B --> C[Resource Group]
C --> D[Resource]
A -. "No auto-inherit" .-> D
C -. "Policy: Inherit tag from RG" .-> D
Cost Management Decision Flow¶
flowchart TD
A[Control Azure costs?] --> B{Track by team/project?}
B -- Yes --> C[Apply tags - Environment, CostCenter, Owner]
C --> D{Enforce tagging?}
D -- Yes --> E[Azure Policy - Require tag or Inherit from RG]
A --> F{Alert on overspend?}
F -- Yes --> G[Create Budget with alert thresholds]
G --> H[Attach Action Group for email/webhook notification]