Cloud Design Pattern¶
Overview¶
- https://docs.microsoft.com/en-us/azure/architecture/patterns/
- Most of the patterns are relevant to any distributed system, whether hosted on Azure or on other cloud platforms
-
Categories:
Category Target Design & Implem Best of bread cloud native architecture Perf & Scalability Plan for peak Availability Maximize the uptime Resiliency handle and recover from failures Data Management Maintain consistency between data sources Messaging Messaging between component Mgt & Monitoring Cloud native operating model Security Security guidelines & practices
Patterns by categories¶
- Design & Implem:
- Ambassador
- Anti Corruption Layer
- Backends for Frontends
- CQRS
- Compute Resource Consolidation
- External Configuration Store
- Gateway Aggregation
- Gateway offloading
- Gateway routing
- Leader election
- Pipes & Filters
- Sidecar
- Static Content Hosting
- Strangler Fig
- Perf & Scalability:
- Cache-Aside
- Choreography
- CQRS
- Event Sourcing
- Deployment Stamps
- Geodes
- Index Table
- Materialized view
- Priority Queue
- Queue-based load leveling
- Sharding
- Static content hosting
- Throttling
- Availability:
- Deployment Stamps
- Geodes
- Health Endpoint Monitoring
- Queue-based load leveling
- Throttling
- Resiliency:
- Bulkhead
- Circuit breaker
- Compensating transaction
- Health Endpoint Monitoring
- Leader election
- Queue-based load leveling
- Retry
- Scheduler Agent supervisor
- Data Management:
- Cache-Aside
- CQRS
- Event sourcing
- Index table
- Materialized view
- Sharding
- Static content hosting
- Valet key
- Messaging:
- Asynchronous request / reply
- Claim check
- Choreography
- Competing consumers
- Pipes & filters
- Priority queue
- Publisher subscriber
- Queue-based load leveling
- Scheduler Agent Supervisor
- Sequential convoy
- Mgt & Monitoring:
- Ambassador
- Anti corruption layer
- External configuration store
- Gateway aggregation
- Gateway offloading
- Gateway routing
- Health endpoint monitoring
- Sidecar
- Strangler fig
- Security:
- Federated identity
- Gatekeeper
- Valet key
Patterns¶
- Ambassador:
- Create helper services that send network requests on behalf of a consumer service or application.
- https://docs.microsoft.com/en-us/azure/architecture/patterns/ambassador
- Anti corruption layer:
- Implement a façade or adapter layer between a modern application and a legacy system
- https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer
- Asynchronous request reply:
- Decouple backend processing from a frontend host, where backend processing needs to be asynchronous, but the frontend still needs a clear response
- https://docs.microsoft.com/en-us/azure/architecture/patterns/async-request-reply
- Backends for Frontends:
- Create separate backend services to be consumed by specific frontend applications or interfaces
- https://docs.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends
- Bulkhead:
- Isolate elements of an application into pools so that if one fails, the others will continue to function
- https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead
- Cache-Aside:
- Load data on demand into a cache from a data store
- https://docs.microsoft.com/en-us/azure/architecture/patterns/cache-aside
- Choreography:
- Have each component of the system participate in the decision-making process about the workflow of a business transaction, instead of relying on a central point of control
- https://docs.microsoft.com/en-us/azure/architecture/patterns/choreography
- Circuit Breaker:
- Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource
- https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker
- Claim-Check:
- Split a large message into a claim check and a payload to avoid overwhelming a message bus
- https://docs.microsoft.com/en-us/azure/architecture/patterns/claim-check
- CQRS:
- Segregate operations that read data from operations that update data by using separate interfaces
- https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs
- Compensating Transaction:
- Undo the work performed by a series of steps, which together define an eventually consistent operation
- https://docs.microsoft.com/en-us/azure/architecture/patterns/compensating-transaction
- Competing Consumers:
- Enable multiple concurrent consumers to process messages received on the same messaging channel
- https://docs.microsoft.com/en-us/azure/architecture/patterns/competing-consumers
- Compute Resource Consolidation:
- Consolidate multiple tasks or operations into a single computational unit
- https://docs.microsoft.com/en-us/azure/architecture/patterns/compute-resource-consolidation
- Deployment stamps:
- Deploy multiple independent copies of application components, including data stores
- https://docs.microsoft.com/en-us/azure/architecture/patterns/deployment-stamp
- Event Sourcing:
- Use an append-only store to record the full series of events that describe actions taken on data in a domain
- https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing
- External Configuration Store:
- Move configuration information out of the application deployment package to a centralized location
- https://docs.microsoft.com/en-us/azure/architecture/patterns/external-configuration-store
- Federated Identity:
- Delegate authentication to an external identity provider
- https://docs.microsoft.com/en-us/azure/architecture/patterns/federated-identity
- Gatekeeper:
- Protect applications and services by using a dedicated host instance that acts as a broker between clients and the application or service, validates and sanitizes requests, and passes requests and data between them
- https://docs.microsoft.com/en-us/azure/architecture/patterns/gatekeeper
- Gateway Aggregation:
- Use a gateway to aggregate multiple individual requests into a single request
- https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation
- Gateway Offloading:
- Offload shared or specialized service functionality to a gateway proxy
- https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading
- Gateway Routing:
- Route requests to multiple services using a single endpoint
- https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-routing
- Geodes:
- Deploy backend services into a set of geographical nodes, each of which can service any client request in any region
- https://docs.microsoft.com/en-us/azure/architecture/patterns/geodes
- Health Endpoint Monitoring:
- Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals
- https://docs.microsoft.com/en-us/azure/architecture/patterns/health-endpoint-monitoring
- Index Table:
- Create indexes over the fields in data stores that are frequently referenced by queries
- https://docs.microsoft.com/en-us/azure/architecture/patterns/index-table
- Leader Election:
- Coordinate the actions performed by a collection of collaborating task instances in a distributed application by electing one instance as the leader that assumes responsibility for managing the other instances
- https://docs.microsoft.com/en-us/azure/architecture/patterns/leader-election
- Materialized View:
- Generate prepopulated views over the data in one or more data stores when the data isn't ideally formatted for required query operations
- https://docs.microsoft.com/en-us/azure/architecture/patterns/materialized-view
- Pipes and Filters:
- Break down a task that performs complex processing into a series of separate elements that can be reused
- https://docs.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters
- Priority Queue:
- Prioritize requests sent to services so that requests with a higher priority are received and processed more quickly than those with a lower priority
- https://docs.microsoft.com/en-us/azure/architecture/patterns/priority-queue
- Publisher-Subscriber:
- Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers
- https://docs.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber
- Queue-Based Load Leveling:
- Use a queue that acts as a buffer between a task and a service that it invokes in order to smooth intermittent heavy loads
- https://docs.microsoft.com/en-us/azure/architecture/patterns/queue-based-load-leveling
- Retry:
- Enable an application to handle anticipated, temporary failures when it tries to connect to a service or network resource by transparently retrying an operation that's previously failed
- https://docs.microsoft.com/en-us/azure/architecture/patterns/retry
- Saga:
- Manage data consistency across microservices in distributed transaction scenarios
- https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/saga/saga
- Scheduler Agent Supervisor:
- Coordinate a set of actions across a distributed set of services and other remote resources
- https://docs.microsoft.com/en-us/azure/architecture/patterns/scheduler-agent-supervisor
- Sequential Convoy:
- Process a set of related messages in a defined order, without blocking processing of other groups of messages
- https://docs.microsoft.com/en-us/azure/architecture/patterns/sequential-convoy
- Sharding:
- Divide a data store into a set of horizontal partitions or shards
- https://docs.microsoft.com/en-us/azure/architecture/patterns/sharding
- Sidecar:
- Deploy components of an application into a separate process or container to provide isolation and encapsulation
- https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecar
- Static Content Hosting:
- Deploy static content to a cloud-based storage service that can deliver them directly to the client
- https://docs.microsoft.com/en-us/azure/architecture/patterns/static-content-hosting
- Strangler Fig:
- Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services
- https://docs.microsoft.com/en-us/azure/architecture/patterns/strangler-fig
- Throttling:
- Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service
- https://docs.microsoft.com/en-us/azure/architecture/patterns/throttling
- Valet Key:
- Use a token or key that provides clients with restricted direct access to a specific resource or service
- https://docs.microsoft.com/en-us/azure/architecture/patterns/valet-key