Dealing with transactions in a distributed microservice environment

As far as any other technology, microservices can solve numerous architectural problems, but also introduces others.

One of the big questions here is how to deal with ACID properties of a transaction in a distributed environment. Since each microservice deals with its own domain, take care of the transaction completeness by all theirs dependencies is a huge problem.

To illustrate it take into account this situation. Imagine a customer in a bakery asking the waiters if its order is already…