We build an (as far as possible …) loosely coupled architecture, where each service team has a maximum of “local” freedom for decisions. This means that synchronous calls should be used as little as possible - basically only to issue commands.
If a service needs additional information on an entity it doesn’t own, it should NOT do a synchronous REST call to the owning service. Instead, it should subscribe to events produced by the owning service, thus building a redundant information base on the entity in question.
Synchronous calls mean:
Therefore, async communication with an own, redundant data base is easier to handle and avoids a direct dependency (as far as possible).
This is a fundamental architecture style choice, influencing the whole development process.
See …
-
Based on the choice for the general architecture style.