Cloud Design Patterns
In the dynamic landscape of cloud computing, design patterns have emerged as a powerful tool for building robust, scalable, and efficient applications. These patterns, distilled from the experiences of seasoned developers, provide a roadmap for addressing common challenges that arise in cloud-based architectures.
1. Ambassador
Create helper services that send network requests on behalf of a consumer service or application.
2. Anti-Corruption Layer
Implement a façade or adapter layer between a modern application and a legacy system.
3. 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.
4. Backends for Frontends
Create separate backend services to be consumed by specific frontend applications or interfaces.
5. Bulkhead
Isolate elements of an application into pools so that if one fails, the others will continue to function.
6. Cache-Aside
Load data on demand into a cache from a data store.
7. Choreography
Let each service decide when and how a business operation is processed, instead of depending on a central orchestrator.
8. Circuit Breaker
Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource.
9. Claim Check
Split a large message into a claim check and a payload to avoid overwhelming a message bus.
10. Compensating Transaction
Undo the work performed by a series of steps, which together define an eventually consistent operation.
11. Competing Consumers
Enable multiple concurrent consumers to process messages received on the same messaging channel.
12. Compute Resource Consolidation
Consolidate multiple tasks or operations into a single computational unit.
13. CQRS (Command Query Responsibility Segregation)
Segregate operations that read data from operations that update data by using separate interfaces.
14. Deployment Stamps
Deploy multiple independent copies of application components, including data stores.
15. Edge Workload Configuration
The great variety of systems and devices on the shop floor can make workload configuration a difficult problem.
16. Event Sourcing
Use an append-only store to record the full series of events that describe actions taken on data in a domain.
17. External Configuration Store
Move configuration information out of the application deployment package to a centralized location.
18. Federated Identity
Delegate authentication to an external identity provider.
19. 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.
20. Gateway Aggregation
Use a gateway to aggregate multiple individual requests into a single request.
21. Gateway Offloading
Offload shared or specialized service functionality to a gateway proxy.
22. Gateway Routing
Route requests to multiple services using a single endpoint.
23. Geodes
Deploy backend services into a set of geographical nodes, each of which can service any client request in any region.
24. Health Endpoint Monitoring
Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals.
25. Index Table
Create indexes over the fields in data stores that are frequently referenced by queries.
26. 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.
27. 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.
28. Pipes and Filters
Break down a task that performs complex processing into a series of separate elements that can be reused.
29. 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.
30. Publisher/Subscriber
Enable an application to announce events to multiple interested consumers asynchronously, without coupling the senders to the receivers.
31. 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.
32. Rate Limit Pattern
Limiting pattern to help you avoid or minimize throttling errors related to these throttling limits and to help you more accurately predict throughput.
33. 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.
34. Saga
Manage data consistency across microservices in distributed transaction scenarios. A saga is a sequence of transactions that updates each service and publishes a message or event to trigger the next transaction step.
35. Scheduler Agent Supervisor
Coordinate a set of actions across a distributed set of services and other remote resources.
36. Sequential Convoy
Process a set of related messages in a defined order, without blocking processing of other groups of messages.
37. Sharding
Divide a data store into a set of horizontal partitions or shards.
38. Sidecar
Deploy components of an application into a separate process or container to provide isolation and encapsulation.
39. Static Content Hosting
Deploy static content to a cloud-based storage service that can deliver them directly to the client.
40. Strangler Fig
Incrementally migrate a legacy system by gradually replacing specific pieces of functionality with new applications and services.
41. Throttling
Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service.
42. Valet Key
Use a token or key that provides clients with restricted direct access to a specific resource or service.
By understanding and applying these patterns, developers can harness the power of the cloud, crafting solutions that are scalable, resilient, and highly performant.
As the cloud ecosystem continues to evolve, the importance of design patterns will only grow. By staying informed and embracing these proven approaches, developers can navigate the complexities of cloud computing with confidence, delivering innovative and reliable applications that meet the ever-changing needs of today's digital landscape.
Resources
https://learn.microsoft.com/pt-br/azure/architecture/patterns