Chapter 6. Event-Driven Architecture
A recurring theme for evolving an application architecture is to encapsulate components and decouple them. One motivation for identifying modules in a Modular Monolith is to reduce the coupling between cohesive units of code in the same application. Likewise, a Distributed Architecture decouples modules further into services so that they can run on separate computers. Microservices Architecture (Chapter 4) decouples services even more into Microservices so that they can be developed and deployed independently.
Loose coupling facilitates disassembling an application into independent components by minimizing the dependencies of each component on the implementations of other components that it uses. A Service API decouples a service consumer from a service provider, so much so that when one service provider is replaced by another with the same service interface and similar functionality, the overall application still functions correctly. The service interface hides changes in the service provider’s implementation from the service consumers. This loose coupling enables the application to evolve incrementally, upgrading individual component implementations one at a time with enhanced versions while preserving the correct behavior of the overall application at each step.
Yet with a service interface, there’s another type of coupling that still remains: the components are coupled by the timing and synchronization of the calls they make between one ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access