Blog · Cloud Design Patterns · 10 posts

Cloud Design Patterns

Ten patterns that keep AWS workloads up under load, each with the AWS services and settings that build it, the cases where it is the wrong tool, and the evidence a Well-Architected Review looks for in live accounts.

A long suspension bridge at blue hour, identical towers receding over still water, amber lamps glowing on the nearest tower and a small pier.

Most outages do not start with something exotic. They start with a retry loop that multiplies a hiccup, a slow dependency that holds every thread hostage, a spike that goes straight to the database, or a dashboard that stays green while customers could not check out. The fixes are old and well documented. They are also missing from a surprising number of production workloads.

This series covers ten of them. I picked each one with the same test: would a Well-Architected Review of a real AWS workload find it missing often enough to matter, and can the post name the AWS services, settings, and limits that build it? A pattern that only makes sense on a whiteboard did not make the cut.

Every post follows the same shape. It opens on the way the failure usually happens, explains the mechanism, shows one diagram, and then gets specific: a table of the AWS services and settings involved, each value checked against AWS documentation and linked to it. Then two sections that matter as much as the mechanism. "When Not to Use It" is honest about cost and complexity, because every one of these patterns has cases where a simpler thing wins. "How We Check for It" names the Well-Architected pillar, question, and best practice, and the evidence we look for in live accounts during a review.

The patterns lean on each other, so the reading order matters. Retries come first because almost every other pattern assumes callers that back off. Queues, load shedding, and caching handle load. Fan-out and read models handle data. Static stability and cells contain failure. Observability comes last because without it you cannot tell whether any of the other nine work.

1 Retries, backoff,idempotency2 Circuit breaker4 Load shedding,backpressure3 Queue loadleveling6 Fan-out withdead-letter queues7 CQRS read models5 Cache-aside,coalescing8 Static stability9 Cells10 Observability,RED, USE, SLOs
The ten patterns and how they lean on each other

Read them in order the first time. After that, each post stands on its own.

The 10 patterns,
in reading order.

  1. Part 1: Retries Without Retry Storms: Backoff, Jitter, and Idempotency Keys

    A retry is extra load at the worst moment. Backoff, full jitter, a retry budget, and idempotency keys make it safe.

    8 min read

  2. Part 2: Circuit Breakers: Failing Fast So a Slow Dependency Can't Take You Down

    A slow dependency is more dangerous than a dead one. A circuit breaker with its own small bulkhead turns the first into the second on purpose.

    7 min read

  3. Part 3: Queue-Based Load Leveling: Let the Queue Take the Spike

    A queue lets you size workers for the average load instead of the peak, if you cap the consumers and alarm on the age of the oldest message.

    8 min read

  4. Part 4: Load Shedding and Backpressure: Saying No Early Keeps the Lights On

    An overloaded service that tries to serve everyone serves no one. Reject excess work early, drop expired requests, and tell callers to slow down.

    7 min read

  5. Part 5: Cache-Aside With Request Coalescing: Surviving the Cold Cache

    A cache your database cannot survive without is no longer an optimization. Coalesce misses, jitter expiry, and serve stale data while you refresh.

    8 min read

  6. Part 6: Event Fan-Out With Dead-Letter Queues: Publish Once, Fail Alone

    Fan-out lets each consumer fail alone, but only with its own queue, its own retry policy, and a dead-letter queue that pages someone.

    8 min read

  7. Part 7: CQRS With Read Models: Stop Making One Database Do Two Jobs

    When reads and writes want different shapes, scales, or engines, keep one model for commands and build read models from its changes.

    7 min read

  8. Part 8: Static Stability: Designing for the Day the Control Plane Is Down

    A statically stable workload survives an Availability Zone loss without launching, scaling, or reconfiguring anything. Here is the arithmetic.

    8 min read

  9. Part 9: Cell-Based Architecture: Shrinking the Blast Radius

    Redundancy protects you from hardware, not from your own bad deploy. Split the workload into independent cells so each failure reaches only one.

    7 min read

  10. Part 10: Observability That Answers Questions: RED, USE, Traces, and SLOs

    Green dashboards do not mean happy customers. Measure rate, errors, and duration, connect them with traces, and page on SLO burn, not on CPU.

    8 min read

These patterns are what
a review checks for.

The AWS Well-Architected Framework Review measures your workload against these patterns in your live accounts, and the Remediation closes the High-Risk Issues it finds.

The next conversation

Let's define the result.

Tell Charles which challenge is in front of you. He will scope the work and make the result he will measure clear before you sign.

Book a 15-minute call with Charles

Remote engagements nationwide.
Serving clients since 2020.