With no shared database, you can't use cross-service JOINs or single ACID transactions. You compose data and keep it consistent using API composition, replication/CQRS read models, and events.
Reading data across services
— a coordinator calls each service and stitches the result:
