The microservice architecture, which breaks complex applications into sets of single-purpose networked components, can be a challenge to manage, as each microservice must be instrumented, secured and locatable in a dynamically reconfiguring network. In addition, multiple copies of microservices may be run in parallel, to meet the demands of a growing demand. Their traffic must be managed as well.
A service mesh, which attaches a sidecar to each microservice, standardizes and moves the development of these tasks from the individual developer. It manages the control of traffic, and secures the application through authentication, authorization, and service communication encryption. In addition, a good service mesh also sets the stage for fine-grained system monitoring through the logging of service transactions.