Quick look: How Loose Coupling can increase resiliency
When architecting a solution in the cloud, design every component of your application stack to operate as independently as possible from each other. This will give cloud-based workloads the advantage of resiliency and scalability.
You can reduce dependencies between components in a cloud-based application stack by designing each component as a black box with welldefined interfaces for inputs and outputs (for example, RESTful APIs).
AWS Services are used as reference for the below example.
If the components aren’t applications, but are services that together comprise an application, this is known as a microservices architecture. For communication and coordination between application components, you can use event-driven notification mechanisms such as AWS message queues to pass messages between the components, as shown in Figure below
Using mechanisms such as that illustrated above, a change or failure in one component has much less chance of cascading to other components. For example, if a server in a multi-tiered application stack becomes unresponsive, applications that are loosely coupled can be designed to bypass the unresponsive tier or switch to degraded mode alternative transactions. Loosely coupled application components using intermediate message queues can also be designed for asynchronous integration. Because an application’s components do not employ direct point-to-point communication but instead use an intermediate and persistent messaging layer (for example, an Amazon Simple Queue Service (SQS) queue or a streaming data mechanism like Amazon Kinesis Streams), they can withstand sudden increases in activity in one component while downstream components process the incoming queue. If there is a component failure, the messages persist in the queues or streams until the failed component can recover.
This is an introduction into the advantages of loosely coupled architecture. I will be posting in depth analysis of architectures as new articles 🙂