1---2name: cloud-solution-architect3description: Design well-architected Azure cloud systems — 10 design principles, 6 architecture styles, 44 design patterns, technology choices, WAF pillars4---56# Cloud Solution Architect78> Design well-architected, production-grade cloud systems following Azure Architecture Center best practices910---1112## Ten Design Principles for Azure Applications1314| # | Principle | Key Tactics |15|---|-----------|-------------|16| 1 | **Design for self-healing** | Retry with backoff, circuit breaker, bulkhead isolation, health endpoint monitoring, graceful degradation |17| 2 | **Make all things redundant** | Eliminate single points of failure, use availability zones, deploy multi-region, replicate data |18| 3 | **Minimize coordination** | Decouple services, use async messaging, embrace eventual consistency, use domain events |19| 4 | **Design to scale out** | Horizontal scaling, autoscaling rules, stateless services, avoid session stickiness, partition workloads |20| 5 | **Partition around limits** | Data partitioning (shard/hash/range), respect compute & network limits, use CDNs for static content |21| 6 | **Design for operations** | Structured logging, distributed tracing, metrics & dashboards, runbook automation, infrastructure as code |22| 7 | **Use managed services** | Prefer PaaS over IaaS, reduce operational burden, leverage built-in HA/DR/scaling |23| 8 | **Use an identity service** | Microsoft Entra ID, managed identity, RBAC, avoid storing credentials, zero-trust principles |24| 9 | **Design for evolution** | Loose coupling, versioned APIs, backward compatibility, async messaging for integration, feature flags |25| 10 | **Build for business needs** | Define SLAs/SLOs, establish RTO/RPO targets, domain-driven design, cost modeling, composite SLAs |2627---2829## Architecture Styles3031| Style | Description | When to Use | Key Services |32|-------|-------------|-------------|--------------|33| **N-tier** | Horizontal layers (presentation, business, data) | Traditional enterprise apps, lift-and-shift | App Service, SQL Database, VNets |34| **Web-Queue-Worker** | Web frontend → message queue → backend worker | Moderate-complexity apps with long-running tasks | App Service, Service Bus, Functions |35| **Microservices** | Small autonomous services, bounded contexts, independent deploy | Complex domains, independent team scaling | AKS, Container Apps, API Management |36| **Event-driven** | Pub/sub model, event producers/consumers | Real-time processing, IoT, reactive systems | Event Hubs, Event Grid, Functions |37| **Big data** | Batch + stream processing pipeline | Analytics, ML pipelines, large-scale data | Synapse, Data Factory, Databricks |38| **Big compute** | HPC, parallel processing | Simulations, modeling, rendering, genomics | Batch, CycleCloud, HPC VMs |3940### Selection Criteria4142- **Domain complexity** → Microservices (high), N-tier (low-medium)43- **Team autonomy** → Microservices (independent teams), N-tier (single team)44- **Data volume** → Big data (TB+), others (GB)45- **Latency requirements** → Event-driven (real-time), Web-Queue-Worker (tolerant)4647---4849## Cloud Design Patterns (44 Patterns)5051WAF pillar mapping: **R**=Reliability, **S**=Security, **CO**=Cost Optimization, **OE**=Operational Excellence, **PE**=Performance Efficiency.5253### Messaging & Communication5455| Pattern | Summary | Pillars |56|---------|---------|---------|57| **Asynchronous Request-Reply** | Decouple request/response with polling or callbacks | R, PE |58| **Claim Check** | Split large messages; store payload separately, pass reference | R, PE |59| **Choreography** | Services coordinate via events without central orchestrator | R, OE |60| **Competing Consumers** | Multiple consumers process messages from shared queue concurrently | R, PE |61| **Pipes and Filters** | Decompose complex processing into reusable filter stages | R, OE |62| **Priority Queue** | Prioritize requests so higher-priority work is processed first | R, PE |63| **Publisher/Subscriber** | Decouple senders from receivers via topics/subscriptions | R, PE |64| **Queue-Based Load Leveling** | Buffer requests with a queue to smooth intermittent loads | R, PE |65| **Sequential Convoy** | Process related messages in order while allowing parallel groups | R, PE |6667### Reliability & Resilience6869| Pattern | Summary | Pillars |70|---------|---------|---------|71| **Bulkhead** | Isolate resources per workload to prevent cascading failure | R |72| **Circuit Breaker** | Stop calling a failing service; fail fast to protect resources | R |73| **Compensating Transaction** | Undo previously committed steps when a later step fails | R |74| **Health Endpoint Monitoring** | Expose health checks for load balancers and orchestrators | R, OE |75| **Leader Election** | Coordinate distributed instances by electing a leader | R |76| **Retry** | Handle transient faults by retrying with exponential backoff | R |77| **Saga** | Manage data consistency across microservices with compensating transactions | R |78| **Scheduler Agent Supervisor** | Coordinate distributed actions with retry and failure handling | R |7980### Data Management8182| Pattern | Summary | Pillars |83|---------|---------|---------|84| **Cache-Aside** | Load data on demand into cache from data store | PE |85| **CQRS** | Separate read and write models for independent scaling | PE, R |86| **Event Sourcing** | Store state as append-only sequence of domain events | R, OE |87| **Index Table** | Create indexes over frequently queried fields in data stores | PE |88| **Materialized View** | Pre-compute views over data for efficient queries | PE |89| **Sharding** | Distribute data across partitions for scale and performance | PE, R |90| **Static Content Hosting** | Serve static content from cloud storage/CDN directly | PE, CO |91| **Valet Key** | Grant clients limited direct access to storage resources | S, PE |9293### Design & Structure9495| Pattern | Summary | Pillars |96|---------|---------|---------|97| **Ambassador** | Offload cross-cutting concerns to a helper sidecar proxy | OE |98| **Anti-Corruption Layer** | Translate between new and legacy system models | OE, R |99| **Backends for Frontends** | Create separate backends per frontend type (mobile, web, etc.) | OE, PE |100| **Compute Resource Consolidation** | Combine multiple workloads into fewer compute instances | CO |101| **External Configuration Store** | Externalize configuration from deployment packages | OE |102| **Sidecar** | Deploy helper components alongside the main service | OE |103| **Strangler Fig** | Incrementally migrate legacy systems by replacing pieces | OE, R |104105### Security & Access106107| Pattern | Summary | Pillars |108|---------|---------|---------|109| **Federated Identity** | Delegate authentication to an external identity provider | S |110| **Gatekeeper** | Protect services using a dedicated broker that validates requests | S |111| **Quarantine** | Isolate and validate external assets before allowing use | S |112| **Rate Limiting** | Control consumption rate of resources by consumers | R, S |113| **Throttling** | Control resource consumption to sustain SLAs under load | R, PE |114115### Deployment & Scaling116117| Pattern | Summary | Pillars |118|---------|---------|---------|119| **Deployment Stamps** | Deploy multiple independent copies of application components | R, PE |120| **Gateway Aggregation** | Aggregate multiple backend calls into a single client request | PE |121| **Gateway Offloading** | Offload shared functionality (SSL, auth) to a gateway | OE, S |122| **Gateway Routing** | Route requests to multiple backends using a single endpoint | OE |123| **Geode** | Deploy backends to multiple regions for active-active serving | R, PE |124125---126127## Technology Choices128129### Decision Framework130131For each technology area, evaluate: **requirements → constraints → tradeoffs → select**.132133| Area | Key Options | Selection Criteria |134|------|-------------|-------------------|135| **Compute** | App Service, Functions, Container Apps, AKS, VMs, Batch | Hosting model, scaling, cost, team skills |136| **Storage** | Blob Storage, Data Lake, Files, Disks, Managed Lustre | Access patterns, throughput, cost tier |137| **Data stores** | SQL Database, Cosmos DB, PostgreSQL, Redis, Table Storage | Consistency model, query patterns, scale |138| **Messaging** | Service Bus, Event Hubs, Event Grid, Queue Storage | Ordering, throughput, pub/sub vs queue |139| **Networking** | Front Door, Application Gateway, Load Balancer, Traffic Manager | Global vs regional, L4 vs L7, WAF |140| **AI services** | Azure OpenAI, AI Search, AI Foundry, Document Intelligence | Model needs, data grounding, orchestration |141| **Containers** | Container Apps, AKS, Container Instances | Operational control vs simplicity |142143---144145## Well-Architected Framework (WAF) Pillars146147| Pillar | Focus | Key Questions |148|--------|-------|---------------|149| **Reliability** | Resiliency, availability, disaster recovery | What is the RTO/RPO? How does it handle failures? Is there redundancy? |150| **Security** | Threat protection, identity, data protection | Is identity managed? Is data encrypted? Are there network controls? |151| **Cost Optimization** | Cost management, efficiency, right-sizing | Is compute right-sized? Are there reserved instances? Is there waste? |152| **Operational Excellence** | Monitoring, deployment, automation | Is deployment automated? Is there observability? Are there runbooks? |153| **Performance Efficiency** | Scaling, load testing, performance targets | Can it scale horizontally? Are there performance baselines? Is caching used? |154155### WAF Tradeoff Matrix156157| Optimizing for... | May impact... |158|-------------------|---------------|159| Reliability (redundancy) | Cost (more resources) |160| Security (isolation) | Performance (added latency) |161| Cost (consolidation) | Reliability (shared failure domains) |162| Performance (caching) | Cost (cache infrastructure), Reliability (stale data) |163164---165166## Performance Antipatterns167168| Antipattern | Problem | Fix |169|-------------|---------|-----|170| **Busy Database** | Offloading too much processing to the database | Move logic to application tier, use caching |171| **Busy Front End** | Resource-intensive work on frontend request threads | Offload to background workers/queues |172| **Chatty I/O** | Many small I/O requests instead of fewer large ones | Batch requests, use bulk APIs, buffer writes |173| **Extraneous Fetching** | Retrieving more data than needed | Project only required fields, paginate, filter server-side |174| **Improper Instantiation** | Recreating expensive objects per request | Use singletons, connection pooling, HttpClientFactory |175| **Monolithic Persistence** | Single data store for all data types | Polyglot persistence — right store for each workload |176| **No Caching** | Repeatedly fetching unchanged data | Cache-aside pattern, CDN, output caching, Redis |177| **Noisy Neighbor** | One tenant consuming all shared resources | Bulkhead isolation, per-tenant quotas, throttling |178| **Retry Storm** | Aggressive retries overwhelming a recovering service | Exponential backoff + jitter, circuit breaker, retry budgets |179| **Synchronous I/O** | Blocking threads on I/O operations | Async/await, non-blocking I/O, reactive streams |180181---182183## Mission-Critical Design (99.99%+ SLO)184185| Design Area | Key Considerations |186|-------------|-------------------|187| **Application platform** | Multi-region active-active, availability zones, Container Apps or AKS with zone redundancy |188| **Application design** | Stateless services, idempotent operations, graceful degradation, bulkhead isolation |189| **Networking** | Azure Front Door (global LB), DDoS Protection, private endpoints, redundant connectivity |190| **Data platform** | Multi-region Cosmos DB, zone-redundant SQL, async replication, conflict resolution |191| **Deployment & testing** | Blue-green deployments, canary releases, chaos engineering, automated rollback |192| **Health modeling** | Composite health scores, dependency health tracking, automated remediation, SLI dashboards |193| **Security** | Zero-trust, managed identity everywhere, key rotation, WAF policies, threat modeling |194| **Operational procedures** | Automated runbooks, incident response playbooks, game days, postmortems |195196---197198## Architecture Review Workflow199200### Step 1: Identify Requirements201202```text203Functional: What must the system do?204Non-functional:205 - Availability target (e.g., 99.9%, 99.99%)206 - Latency requirements (p50, p95, p99)207 - Throughput (requests/sec, messages/sec)208 - Data residency and compliance209 - Recovery targets (RTO, RPO)210 - Cost constraints211```212213### Step 2: Select Architecture Style214215Match requirements to architecture style using the selection criteria table above.216217### Step 3: Choose Technology Stack218219Use the technology choices decision framework. Prefer managed services (PaaS) over IaaS.220221### Step 4: Apply Design Patterns222223Select relevant patterns from the 44 cloud design patterns based on identified concerns.224225### Step 5: Address Cross-Cutting Concerns226227- **Identity & access** — Microsoft Entra ID, managed identity, RBAC228- **Monitoring** — Application Insights, Azure Monitor, Log Analytics229- **Security** — Network segmentation, encryption at rest/in transit, Key Vault230- **CI/CD** — GitHub Actions, Azure DevOps Pipelines, infrastructure as code231232### Step 6: Validate Against WAF Pillars233234Review each pillar systematically. Document tradeoffs explicitly.235236### Step 7: Document Decisions237238Use Architecture Decision Records (ADRs):239240```markdown241# ADR-NNN: [Decision Title]242243## Status: [Proposed | Accepted | Deprecated]244245## Context246[What is the issue we're addressing?]247248## Decision249[What did we decide and why?]250251## Consequences252[What are the positive and negative impacts?]253```254255---256257## Related Skills258259This skill complements:260- **azure-architecture-patterns** — Detailed Azure-specific patterns261- **bicep-avm-mastery** — Infrastructure as code for Azure262- **security-review** — STRIDE, threat modeling263- **observability-monitoring** — Production visibility264265---266267## References268269- [Azure Architecture Center](https://learn.microsoft.com/en-us/azure/architecture/)270- [Well-Architected Framework](https://learn.microsoft.com/en-us/azure/well-architected/)271- [Cloud Design Patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/)272- [Mission-Critical Workloads](https://learn.microsoft.com/en-us/azure/architecture/framework/mission-critical/)