Two axes
| HTTP(S) | Any TCP/UDP | |
|---|---|---|
| Global (multi-region, edge) | Front Door | Traffic Manager (DNS-based), cross-region Load Balancer |
| Regional | Application Gateway (or App Gateway for Containers for AKS) | Azure Load Balancer |
API Management is a different layer: it governs APIs (auth, quotas, versioning, transformation, developer portal) and usually sits behind or alongside one of the above.
Comparison
| Front Door | Application Gateway | Load Balancer | Traffic Manager | API Management | |
|---|---|---|---|---|---|
| Layer | L7, global edge | L7, regional | L4, regional (or global tier) | DNS | API gateway |
| WAF | Yes (Premium managed rules, bot protection) | Yes (WAF v2) | No | No | Policies, not a WAF |
| TLS offload | Yes | Yes (end-to-end supported) | No (pass-through) | No | Yes |
| Caching / CDN | Yes | No | No | No | Response caching policy |
| Private origins | Private Link origins (Premium) | Backends in VNet | Backends in VNet | Endpoints anywhere | VNet integration/injection |
| Failover speed | Fast (health probes at edge) | Within region | Within region | DNS TTL-bound | n/a |
Decision path
Public HTTP app, users in many regions, or multi-region failover? → Front Door
Public or internal HTTP app in one region, needs WAF / path routing? → Application Gateway
Non-HTTP (SQL, RDP gateway, custom TCP/UDP), or internal L4? → Load Balancer
Non-HTTP and multi-region via DNS? → Traffic Manager
Publishing APIs to partners/teams with keys, quotas, versions? → API Management (plus one of the above)
Common layered patterns
Users ─► Front Door (WAF, global failover) ─► Private Link ─► App Service / internal LB per region
Users ─► Front Door ─► Application Gateway (regional WAF, path routing) ─► AKS / VMs
Partners ─► Front Door / App Gateway ─► API Management (internal mode) ─► backend APIs
Internal apps ─► internal Application Gateway / internal LB ─► backends (no public exposure)
Avoid stacking layers that do the same thing (e.g. two WAFs with conflicting rules) unless there's a clear reason, such as a global WAF at the edge plus regional segmentation rules owned by another team.
Design questions
- Where does WAF inspection happen, and who owns its rules and exclusions?
- How are origins protected from direct access (Private Link, access restrictions on Front Door ID header, NSGs)?
- How does failover work, how long does it take, and has it been tested?
- Where do TLS certificates live, and how do they renew (Key Vault, managed certs)?
- What are the timeouts at each layer? A 30 s gateway timeout in front of a 120 s backend causes mystery 504s.
Traps
| Trap | Note |
|---|---|
| Traffic Manager for fast failover | Bound by DNS TTL and client caching |
| Front Door with public origins left open | Lock origins to Front Door traffic only |
| App Gateway subnet too small | v2 autoscale needs room; plan a dedicated, adequately sized subnet |
| Health probes hitting a page that needs auth | Use a dedicated health endpoint |
| Using APIM as the only security layer for public web apps | It isn't a WAF |
Tip
Draw the request path end to end with every hop's timeout, TLS termination and health probe on one page. Most entry-point incidents are hidden in that diagram.
Checklist
- Global vs regional and HTTP vs non-HTTP decided
- API management needs handled separately
- WAF placement and ownership clear
- Origins locked down to the entry point
- Timeouts, certificates and probes documented
- Failover tested