When I design a microservices system, one of the questions I always ask myself: how will service A communicate with service B?
This one question seems simple, but the right (maybe just reasonable) answer can depend on many things. Such as synchronous or asynchronous? Request-response or event-driven? Queue or Topic? REST or GraphQL or RPC? etc.
That's why I decided to put some effort into building a decision tree that can somehow help choose a good communication style between two services.
Note: We can use a mix of styles in our microservices, and don't take it for granted. My decision tree can have mistakes and can be incomplete, and I very much appreciate it if you could help me correct them :)
You can open the original size image of the decision tree here: https://live.staticflickr.com/65535/51981736503_9eb0839e08_h.jpg