Cloud Design Patterns

Cloud Design Patterns -Used at Different Software Layers

Client Layer

  • Client-side Load Balancing: Distributes requests from the client directly to the available service instances.

  • State Pattern: Allows an object to alter its behavior when its internal state changes.

  • Composite UI Pattern: Composes responses from multiple microservices to render the complete UI.

Load Balancer Layer

  • Geographical Distribution: Routes traffic based on the geographical location of the client.

  • Health Checks: Periodically checks the health of the servers and routes traffic only to healthy ones.

  • Affinity Based Routing: Routes the user’s request to the same server for maintaining session persistence.

  • Least Connections: Routes traffic to the server with the fewest active connections.

API Gateway Layer

  • Backend for Frontend (BFF): Tailors API responses to the needs of individual client types.

  • Circuit Breaker: Detects failures and prevents applications from trying to perform actions that are doomed to fail.

  • Retry Pattern: Helps to handle transient failures when it tries to connect to a remote service or network resource.

  • Request Collapsing: Collapses multiple requests for the same operation into a single request.

Web Server Layer

  • Page Cache Pattern: Stores the output of expensive operations and reuse it to avoid duplicated work.

  • Compression Pattern: Reduces the size of the response to improve load times.

  • Lazy Loading: Defers initialization of an object until the point at which it is needed.

  • Content Negotiation Pattern: The server generates different versions of a resource and serves the one matching the client’s criteria.

Application Server Layer

  • Saga Pattern: Manages long-running transactions and deals with failures and compensating transactions.

  • CQRS (Command Query Responsibility Segregation): Separates read and write operations to improve performance and scalability.

  • Proxy Pattern: Provides a surrogate or placeholder for another object to control access to it.

  • Chain of Responsibility: Passes the request along a chain of handlers.

Caching Layer

  • Sidecar Caching: Deploy a dedicated cache alongside each microservice to provide isolated and scalable caching functionality.

  • Cache Chaining: Arrange multiple cache layers hierarchically to handle different granularity or lifetime, querying each layer sequentially on a cache miss.

  • Time-to-Live (TTL) Caching: Assigns a predefined lifespan to each cache entry, removing or refreshing the entry once its lifespan expires.

CDN Layer

  • Prefetching: Anticipates user actions and loads resources ahead of time.

  • Parallel Requesting: Makes multiple requests in parallel to improve load times.

  • Edge Computing: Processes data closer to the location where it is needed.

  • Domain Sharding: Splits resources across multiple domains to increase parallel downloads.

  • Adaptive Image Delivery: Delivers images tailored to the device and user context.

Database Layer

  • Sharding Pattern: Distributes data across multiple databases to improve scalability.

  • Replication Pattern: Keeps copies of data in multiple locations for availability and reliability.

  • Read-Replica Pattern: Uses read replicas to offload read operations from the primary database instance.

  • Query Object Pattern: An object that represents a database query.