docs/architecture-decision-log/0014-event-driven-communication-between-modules.md
Date: 2019-07-15
Log date: 2019-11-09
Accepted
Each module should be autonomous. However, communication between them must take place. We have to decide what will be the preferred way of communication and integration between modules.
Each Module will expose a set of methods (interface, module API) which can be called by other modules directly.
Each module will publish a specific set of events. Other modules can subscribe to specific events. It is the implementation of Publish/Subscribe pattern.
Solution number 2 - Event-driven (asynchronous)</br>
We want to achieve the maximum level of autonomy and loose coupling between modules. Moreover, we don't want dependencies between modules. We allow direct calls in the future, but this should be an exception, not a rule.