This is a
continuation of an article that describes operational considerations for hosting
solutions on Azure public cloud.
These are some of the cloud design patterns that
are useful for building reliable, scalable, secure applications in the cloud.
Some of the challenges encountered for which these design patterns hold
include:
Data Management: This is a key element of the
cloud application. Data is hosted in different locations and across multiple
servers for reasons such as performance, scalability or availability, and this
can present a range of challenges. For example, data consistency must be
maintained and data will typically need to be synchronized or replicated across
different locations.
Design and Implementation: Good design comes with
consistency and coherence in component design and deployment. It simplifies
administration and deployment. Components and subsystems get reused from
scenario to scenario.
Messaging: A messaging infrastructure connects
services so that they have flexibility and scalability. It is widely used and
provides benefits such as retries, dead letter queue and ordered delivery but
it also brings challenges such as services not reacting to changes in message
schema, idempotency of operations and the periods of inactivity when the
messages are not delivered.
The patterns used to resolve these kinds of
problems include the following:
1.
Ambassador patterns that create helper services and send network requests
on behalf of a consumer service or application.
2.
Anti-corruption layer that implements a façade between a modern
application and a legacy system.
3.
Asynchronous request-reply where the backend processing is decoupled
from a frontend host, or it needs to time but the front end still needs a clear
response
4.
Backends for Frontends: where microservices provide the core functionalities
that the frontend requires
5.
Bulkhead: where elements of an application are isolated into pools so
that if one fails, the others will continue
6.
Cache-Aside: this loads data on demand into a cache from a data store.
7.
Choreography: where each service decides when and how a business
operation is processed and eliminates the need for an orchestrator
8.
Circuit breaker: which handles fault that takes variable amount of
time to fix when connecting to remote resources.
9.
Claim Check: which splits a large message into claim checks and
payload to avoid overwhelming a message bus
10.
Compensating Transaction: which undoes the work performed by a series of
steps that together define an eventually consistent operation.
No comments:
Post a Comment