Cloud Design Patterns

Ambassador, Sidecar, and Adapter Pattern

Deploy parts of the application as a separate process/container - sidecar and other related patterns

Offload everyday tasks for connectivity such as monitoring, routing, logging, and security (usually as a sidecar).
Ambassador Pattern

Read more...


Strangler pattern

Gradually migrate a legacy system to new applications and services

Gradually migrate a legacy system to new applications and services. As functionality moves from the legacy system to the new system, the new system will eventually "strangle" the old one.

Read more...


Anti-Corruption Layer

Create a facade/adapter layer between different subsystems that do not share the same semantics

Create a facade/adapter layer between different subsystems that do not share the same semantics.

Read more...


Cache-Aside pattern

Cache mostly static data

Load frequently accessed data into a cache from a data store to improve the application's performance.

Read more...


Gateway Routing pattern

Simplify the consumption of multiple services

Simplify the consumption of multiple services by using a single endpoint, that routes requests to the appropriate backend services.

Read more...


Gateway Offloading pattern

Move specialized and common functionalities to a gateway

Move specialized and common functionalities to a gateway.

Read more...


Gateway Aggregation pattern

Single service as aggregator of multiple individual requests

Use a single service to aggregate multiple individual requests into a single request.

Read more...


Backends for Frontends pattern

Create a separate backend service for each frontend application or interface

Create a separate backend service for each frontend application or interface.

Read more...


Materialized View Pattern

Speed up quering by having a 'materialized' copy of data

Materialized view is a database object that contains the results of a query. Data can be anything from local copy of remote data, complex joins of data, or data calculated with aggregate function.

Read more...


Event Sourcing

Capture all state changes as a sequence of events

The traditional way of developing a managing entity is to save its current state only. This has to do a lot with hardware limitations we used to have and the basic concept of relational databases that served us very well. However, tables do not represent events that occurred, only the current state of the system. Sometimes it is enough, but not always. What happens if we need more?

Read more...