Cloud Architecture Patterns — Advanced
Designing for partial failure, not just total failure
Most architecture discussions default to reasoning about total outages (a service is either up or down), but real production failures are much more often partial: a service that's up but responding slowly, a dependency that fails for 2% of requests, a downstream service degraded but not fully down. Advanced pattern design accounts for this explicitly:
Multi-region active-active, done correctly
Multi-region active-active (both regions serving real production traffic simultaneously, not one as disaster-recovery standby) is one of the hardest patterns to get right, because it forces explicit decisions that simpler patterns can leave implicit:
Saga pattern at genuine production scale: idempotency and ordering
At scale, two problems compound the basic Saga pattern from Intermediate: message delivery isn't guaranteed exactly-once (most real message brokers guarantee at-least-once, meaning a step can receive the same event twice), and ordering isn't always guaranteed across partitions/shards. Production-grade Saga implementations need every step to be idempotent (processing the same event twice produces the same result as processing it once, not a duplicate side effect), and often need an explicit sequence number or vector-clock-style mechanism if step ordering genuinely matters and can't be guaranteed by the message infrastructure alone.
Evolving CQRS: multiple read models for multiple consumers
At advanced scale, "the read side" often isn't one model — different consumers of the same underlying write-side data need genuinely different shapes (a search-optimized view via Elasticsearch, a real-time dashboard view via a different store, an analytics-optimized view via a data warehouse), all built from the same stream of write-side events. This is where event sourcing's replay capability (see Intermediate) becomes genuinely valuable rather than theoretical: adding a new read model later means subscribing a new consumer to the existing event stream and building its view, not re-architecting the write side to support a new access pattern that wasn't anticipated originally.
Architecture Decision Records (ADRs) — documenting the "why," not just the "what"
At the point where a system has accumulated several of these patterns, the architecture itself becomes hard to reason about without documented history — why CQRS was chosen for this specific service and not that one, why Saga uses orchestration here and choreography there. ADRs are short, version-controlled documents capturing a specific decision, the alternatives considered, and the reasoning — not exhaustive documentation of the whole system, just the decisions and their context, written at the time they're made rather than reconstructed later from memory once the original reasoning is forgotten.

