Understanding the asynchronous communication service
An essential component of a microservice architecture is the ability of the components to communicate asynchronously. Some of the components are going to produce data that then needs to be consumed by other components.
Having a centralized area where communication can take place might be the most important decision to keep the architecture simple. Suppose you allow services to communicate with each other. In that case, the combinatorial explosion of those connections and their complexity will soon bury us and doom the project. The following figure illustrates how many more connections are needed if we don't have a centralized communication mechanism:
On the left of the figure, where the point-to-point architecture is illustrated, many more connections must be made if an event bus is not used. And many connections still need to be added in the point...