Cloud Design Patterns Overview

A synthesis of the key patterns for designing reliable, scalable, and maintainable cloud-native and microservices applications, organized by the problem they address.

What Are Cloud Design Patterns?

Cloud design patterns are proven solutions to recurring architectural problems in distributed, cloud-native systems. Unlike traditional GoF design patterns (which operate at the class/object level), cloud patterns operate at the service and system level — addressing concerns like reliability, messaging, data management, and operational concerns.

Patterns by Category

Reliability & Fault Tolerance

PatternCore Idea
Circuit Breaker PatternTrip open when a dependency fails repeatedly; prevent cascading failures
Bulkhead PatternIsolate resource pools so failures in one don’t exhaust resources for others
Resiliency PatternsFamily: Retry, Timeout, Fallback, Hedging — layered defense in depth
BackpressureConsumers signal capacity; producers throttle to prevent overload
IdempotencyOperations safe to retry; at-least-once delivery with no duplicate side effects

Messaging & Data Consistency

PatternCore Idea
Saga PatternDistributed transactions via local transactions + compensating transactions
Outbox PatternAtomic state change + event publication in one DB transaction
Inbox PatternDeduplicate incoming messages; exactly-once handler execution
Distributed Transactions2PC and alternatives for cross-service atomicity
Eventual ConsistencyAccept temporary staleness for higher availability

Service Communication & Topology

PatternCore Idea
API Gateway PatternSingle entry point for external clients; centralizes cross-cutting concerns
Backend for Frontend PatternPer-client-type gateway tailored to specific data needs
Service MeshInfrastructure layer for east-west service communication
Sidecar PatternPeripheral concerns in a co-deployed container
Ambassador PatternOutbound call management via a proxy sidecar

Migration & Integration

PatternCore Idea
Strangler Fig PatternIncrementally replace legacy systems behind a façade
Anti-Corruption Layer PatternTranslate between incompatible domain models at integration boundaries

Observability

PatternCore Idea
ObservabilityLogs + Metrics + Traces as the three pillars
Distributed TracingTrack requests end-to-end across services

Pattern Relationships

Many patterns work together as a system:

External Clients
      │
  [API Gateway] / [BFF]
      │
  [Service Mesh] ──── east-west calls ────► [Services]
      │                     │
  [Sidecar/Ambassador]  [Circuit Breaker]
                             │
                    [Saga Orchestrator]
                        │         │
              [Service A]       [Service B]
              [Outbox]          [Inbox]
                  │
          [Message Broker]

Choosing Patterns

ProblemPrimary Pattern(s)
Cross-service transaction consistencySaga Pattern + Outbox Pattern
Cascading failuresCircuit Breaker Pattern + Bulkhead Pattern
Legacy migrationStrangler Fig Pattern + Anti-Corruption Layer Pattern
External client APIAPI Gateway Pattern or Backend for Frontend Pattern
Service-to-service networkingService Mesh
Duplicate message processingInbox Pattern + Idempotency