Service Mesh Support
While there are a number of benefits to working with a microservice based architecture, new problems also arise. Security, load balancing, discovery, monitoring, rate limiting, debugging, and more.
Service Mesh's provide a significant number of benefits that help to address these challenges:
- Traffic management
- Service discovery, identity, and security
- Policy enforcement
For an application that has been deployed with a service mesh like Istio, we have an opportunity to automatically get deep insights into its operation, health, and underlying components. This is especially true with Kubernetes, where we can inspect the definitions themselves.
- Prometheus metrics are built in for each micro service
- Jaeger tracing is also included, providing tracing support
Further, Istio also supports a single command to add itself as a sidecar to all existing pods. Making rollout extremely easy, for people on Kubernetes 1.9+.
Start with Istio, as that has the best support today and is the easiest to get going.
We can leverage it's built in instrumentation features to do a few interesting things:
- Identify each component of the microservice architecture
- Gather metrics on the health of each component: latency, error rates, etc.
- Gather tracing information to help debug problems
- Utilizing the tracing information in aggregate to build a model of how the pieces are woven together
If we can then match up a microservice to project or group, we can provide additional insights into code changes that may have impacted the service. Combined with trace information, depending on how instrumented the app itself is, could provide even deeper insight where things may have gone wrong.
The best part, is that this all comes out of the box for some service meshes. (like Istio)