Something that annoys me when reading about decoupling microservices is that the problem is often stated, with either poorly explained, bad, or no solutions provided, which seems to especially be the case with synchronous communication.
Take this basic example of a customer and orders microservice:
The customer service holds the customer's details, like their credit card. Orders needs details from the customer service, like their credit card, to create an order. Therefore, the communication between the client and services would probably need to look as follows for a new order request:
How could you avoid synchronous communication in a common situation like this? An asynchronous "fire and forget" pattern seems to be infeasible since we need a customer's information to create an order, but maybe I'm incorrect.