What is a service mesh?
A service mesh is an architectural pattern for large-scale cloud native applications that are composed of many microservices. When your application is structured as a collection of microservices, there is a lot going on in the boundary between the microservices internally, inside your Kubernetes cluster.
This is different from traditional monolithic applications, where most of the processing is within the same process.
Here are some of the concerns that are relevant for each microservice or interaction between microservices:
- Advanced load balancing
- Service discovery
- Support canary deployments
- Caching
- Tracing a request across multiple microservices
- Authentication between services
- Throttling the number requests a service handles at a given time
- Automatically retrying failed requests
- Failing over to an alternative component when a component fails consistently
- Collecting metrics