Autonomous

All along, we have been strongly advocating the correct isolation of microservices. Seam identification was a concept we briefly touched on in Chapter 2, Implementing Microservices. There were numerous benefits that we derived while successfully implementing the microservice-style architecture. We can safely state that isolation is one of the fundamental requirements here. However, the benefits of successful implementation of isolation go far beyond that.

It is very important for microservices to be autonomous, or else our work will be incomplete. Even after implementing the microservice architecture, if one microservice failure results in a delay for other services or a domino effect, it means we missed something in our design. However, if microservice isolation is done right, along with the right breakdown of the functionality to be performed by this particular microservice, it would mean that the rest of the design would fall into place itself to handle any kind of resolution conflict, communication, or coordination.

The information required to perform such an orchestration would depend primarily on the well-defined behavior of the service itself. So, the consumer of a microservice that is well-defined doesn't need to worry about the microservice failing or throwing an exception. If there is no response within the stipulated period of time, just try again.