I really dislike that all "Microservice communication" guidances encourages RPC, synchronized communication. Service Meshes make the nightmare easier to bare. It makes bad design easier to implement than good design. It creates temporal coupling between the services that becomes really hard to manage at scale, and relies on bells and whistles from the underlying orchestrator to keep your system healthy, instead of re…
Couldn't agree more; to me, communication between microservices should be async most of the times, as otherwise availability of services is impacted by those of others. This raises the question how services can update their own state (database) and send messages to other services e.g. via Kafka, without relying on distributed transactions. I found the outbox pattern comes in handy for that: services write messages in…
Or do you use an out of the box solution?