- API Routing Hostname
Explains the hostname routing pattern, which isolates API services by giving each one its own hostname, with typical use cases and trade-offs.
- API Routing HTTP
Explains the HTTP header routing pattern, where a request header selects the target service, action, version, or feature, along with its pros and cons.
- API Routing Path
Explains the path routing pattern, which groups APIs under one hostname and separates services by URI, with NGINX, API Gateway, and CloudFront implementations on AWS.
- Circuit Breaker
Describes the Circuit Breaker pattern, which stops a caller from repeatedly calling a failing or slow service, its three states, and how to build it on AWS.
- Event Sourcing
Describes the Event Sourcing pattern, which stores every state-changing event in an immutable event store and rebuilds state by replay, with challenges and AWS implementations.
- Hexagonal Architecture
Describes the Hexagonal Architecture (Ports and Adapters) pattern for loosely coupled, independently testable applications, including how to apply it on AWS Lambda.
- Retry With Backoff
Describes the Retry with Backoff pattern, which automatically retries operations that failed from transient errors using exponential backoff and jitter, with AWS implementations.
- Saga Choreography
Describes the Saga Choreography pattern, which keeps data consistent across services through event subscriptions instead of a central coordinator, with an AWS order-flow example.
- Saga Orchestration
Describes the Saga Orchestration pattern, which uses a central orchestrator such as AWS Step Functions to coordinate distributed transactions and compensating actions.
- Strangler Fig
Describes the Strangler Fig pattern for incrementally migrating a monolith to microservices behind a proxy layer, with AWS implementations, benefits, and challenges.
- Transactional Outbox
Describes the Transactional Outbox pattern, which solves the dual-write problem by saving events in the same transaction as the data, using an outbox table or change data capture.
- Ambassador Pattern
Explains how an ambassador helper service acts as an out-of-process proxy that sends network requests on behalf of a client, adding resiliency, routing, and security without changing the application.
- Anti Corruption Layer Pattern
Describes how a façade or adapter layer translates between subsystems with different semantics so a new application's design is not constrained by legacy or external systems.
- Asynchronous Request Reply Pattern
Explains how to decouple long-running backend processing from the frontend using HTTP 202 and a polling status endpoint, with an Azure Functions implementation outline.
- Backends For Frontends Pattern
Describes creating a separate backend service per client interface so each frontend gets a tailored experience instead of forcing one shared backend to serve conflicting needs.
- Bulkhead Pattern
Explains how isolating application components into separate resource pools keeps a failure or overload in one pool from cascading, with a Kubernetes resource-limit example.
- Cache Aside Pattern
Explains how to load data into a cache on demand from a data store, and how to invalidate entries on update to keep the cache consistent, with a .NET example.
- Choreography Pattern
Describes decentralizing workflow logic across services that react to each other's events through a message broker, instead of relying on a central orchestrator.
- Circuit Breaker Pattern
Explains how a circuit-breaker proxy with Closed, Open, and Half-Open states stops an application from repeatedly calling a failing remote service and prevents cascading failures.
- Claim Check Pattern
Explains how to move large payloads out of a messaging system by storing them externally and sending only a claim-check token, with Azure Blob Storage and Service Bus examples.
- Cloud Design Patterns Index
A catalog of Azure cloud design patterns with one-line summaries and the Well-Architected pillars each one supports, plus the distributed-computing fallacies they address.
- Compensating Transaction Pattern
Explains how to undo the steps of an eventually consistent, multi-step operation by running compensating actions instead of a traditional ACID rollback, with a travel-booking example.
- Competing Consumers Pattern
Explains how multiple consumers can process messages from a single queue concurrently to improve throughput, scalability, and availability, including poison-message and idempotency concerns.
- Compute Resource Consolidation Pattern
Describes consolidating multiple tasks into a single computational unit to raise resource utilization and cut cost, and the scalability, lifetime, security, and contention trade-offs involved.
- CQRS Pattern
Covers Command Query Responsibility Segregation, which splits read and write operations into separate models to improve performance, scalability, and security.
- Deployment Stamps Pattern
Describes deploying multiple independent copies of a scale unit (stamps) to host different tenants, gaining near-linear scale, limited blast radius, and regional data placement.
- Edge Workload Configuration Pattern
Describes how to manage and distribute configuration to edge workloads that must keep running offline, comparing an external configuration controller with an internal configuration provider.
- Event Sourcing Pattern
Explains storing every change to an entity as an immutable sequence of events in an append-only store, with materialized views, replay, snapshots, and trade-offs.
- External Configuration Store Pattern
Explains moving configuration out of the deployment package into a centralized store to avoid redeploys and share settings, with Azure App Configuration and Key Vault options.
- Federated Identity Pattern
Explains delegating authentication to an external identity provider using claims-based tokens for single sign-on, less admin overhead, and stronger security, with Microsoft Entra ID examples.
- Gatekeeper Pattern
Explains protecting services with a dedicated, low-privilege broker that validates and sanitizes requests before handing them to a trusted host, shrinking the attack surface.
- Gateway Aggregation Pattern
Explains using a gateway to combine multiple client requests into one, cutting chattiness and latency between clients and backend services.
- Gateway Offloading Pattern
Explains offloading shared cross-cutting functions such as SSL termination, authentication, and throttling to a gateway proxy so individual services stay simpler.
- Gateway Routing Pattern
Explains routing requests to multiple services or service versions through a single layer-7 gateway endpoint, enabling backend abstraction and zero-downtime deployments.
- Geode Pattern
Explains deploying self-contained backend nodes across geographic regions in an active-active setup so any node can serve any request, cutting latency and surviving regional outages.
- Health Endpoint Monitoring Pattern
Explains exposing application health-check endpoints that external monitoring tools poll to verify dependencies, response codes, and latency, plus security and caching considerations.
- Index Table Pattern
Explains emulating secondary indexes in NoSQL stores with separate index tables, comparing denormalized, normalized, and partially normalized layouts and their consistency costs.
- Leader Election Pattern
Explains coordinating distributed instances by electing one leader via a distributed mutex or consensus algorithm, including heartbeat, lease, and failure considerations.
- Materialized View Pattern
Explains generating prepopulated, read-only views over source data to speed up complex queries, with event-driven or scheduled refresh and eventual-consistency trade-offs.
- Messaging Bridge Pattern
Explains building a bridge component that relays messages between incompatible messaging infrastructures, such as MSMQ and Azure Service Bus, without changing existing systems.
- Overview
A table of contents for the system design notes, covering fundamentals, software architecture, technical solutions, resilience patterns, and attachments.
- Software Architecture
A survey of software architecture patterns (Clean, Hexagonal, Microservices, EDA, DDD, CQRS, LMAX, MVC family) and design principles (SOLID, DRY, AOP, Command Bus), with references and examples.