6.2. Quick Reference
Every decision framework from the guide, compressed for final review. If a row surprises you, revisit its section.
Service selection by constraint keyword (1.2, 4.1):
| Scenario keyword | Answer |
|---|---|
| "kubectl / manifest files / full control" | AKS (3.2.3) |
| "containers, event-driven scale, scale to zero, no cluster ops" | Container Apps + KEDA (3.2.1–2) |
| "small trigger-driven code, bindings" | Functions (4.2) |
| "guaranteed processing / work queue / ordered / DLQ" | Service Bus (4.1.1) |
| "react to / notify / fan-out facts" | Event Grid (4.1.2) |
| "secrets, rotation, audit" | Key Vault (5.1.1) |
| "shared settings, feature flags, refresh without redeploy" | App Configuration (5.1.2) |
| "follow one request across services" | OpenTelemetry (5.2.1) |
Cosmos DB quick picks (2.1):
| Situation | Pick |
|---|---|
| Have id + partition key | Point read, ~1 RU — never a query |
| Users see own writes, minimize RU | Session consistency (default) |
| Write RU too high | Exclude unqueried paths; always exclude /embedding/* |
| Vectors at scale | diskANN; flat only for small + exact |
| React to changes | Change feed processor (lease container, delegate) — no deletes; soft-delete flag |
pgvector quick picks (2.2):
| Situation | Pick |
|---|---|
| Production RAG index | HNSW (vector_cosine_ops matching <=>) |
| Fast rebuilds, memory-tight | IVFFlat — build after loading data |
| Missing relevant results | Raise ef_search / probes (recall ↑, latency ↑) |
| Index didn't speed queries | Operator/opclass mismatch |
| Connection storms from scaled workers | PgBouncer, port 6432 — not max_connections |
Functions hosting (4.2.2): cost + tolerates cold start → Consumption · no cold start / VNet + prewarmed → Premium · scale-to-zero + faster scale + VNet → Flex Consumption · existing plan → Dedicated.
Container Apps scopes (3.2.1): image/env/scale = revision-scope → new revision · secrets/ingress = app-scope → no revision, restart to pick up secrets.
Troubleshooting signatures (3.2.4): ImagePullBackOff → registry auth/tag · CrashLoopBackOff → kubectl logs --previous · running-but-silent → probes or selector labels · OOMKilled → memory limits vs model loading · first-request-slow → cold start.
Delivery guarantees: change feed, Service Bus, Event Grid are all at-least-once → every handler idempotent. Event Grid retries ≤24h then drops unless storage dead-letter is configured. Service Bus DLQ drains only when you read it.