A service mesh is an additional infrastructure layer that provides a means of communication between all services in a given application. It is typically deployed as a series of proxies alongside each service instance. Since the service mesh proxies are deployed alongside the application services and not as part of it, they are often referred to as sidecars. This means that as a whole, these sidecar proxies are a mesh network and an infrastructure layer separate from the application. A service mesh not only brokers communication between all services in an application but, since all requests, both internal and external, pass through it, it provides a means for handling many tasks that can be obfuscated away from the application.
A service mesh is a layer of communication and control between applications or microservices and the network stack they typically communicate over. This layer controls communication and helps microservices share data. This service-to-service interaction is governed by logic built into the service mesh layer. Simply put, microservices are small or partial applications, or individual functions, and the network stack is the physical networking layer.