I'm currently looking at microservice architecture example and am struggling to make my services truly autonomous.
I have the following services...
As part of the OrderAPI I'm looking to create an order by sending back a Customer ID and Product ID.
In order to successfully create the order, I need the OrderService to use those IDs to retrieve the customer from the CustomerService and the product from the ProductService. I need to do this to ensure the IDs that are supplied are correct. By retrieving the customer and product I can also perform business checks I.e. a customer under the age of 18 cannot order alcohol.
This means my OrderService directly relies on other services which stops it from being autonomous. It also means my services are blocking (I need both calls to come back before I can continue). I've also been told that microservices should not GET data but instead ask services to DO something. This also violates this rule.
I noticed a code example on github which has the same issue as I'm describing... https://github.com/microservices-demo/orders.NET/blob/master/Controllers/OrdersController.cs
How can I redesign these services so that they are autonomous?