Let's say you have two microservices (contrived example):
- Customers service
- Dashboard service
In the customers service, you manage all aspects related to customers (address, preferences, whatever). In the dashboard application, there's a map you want to display showing all of the names of customers and their locations. In other words, the dashboard service cares about a subset of the customer information (namely customer name and customer location).
My understanding is that it's an anti-pattern for the dashboard service to synchronously communicate with the customers service whenever it needs customer data to show the map. So instead you have a data store in the dashboard service's database with the customers and their location. When a customer is updated, an integration event is fired from the customer service and all downstream systems (aka. dashboard service) would get updated.
- Am I mostly correct in my analysis here or is there a better way to go about this?
- How would the dashboard service fetch the initial data of all of the customer's locations?