Optimize Your Microservices Experience with Istio
Istio is an open source service mesh architecture, designed in partnership with Google, IBM, and Lyft, that provides a way to connect, manage, and secure microservices. Although a microservices architecture is not a new concept, it brings many benefits to application developers. Some of these benefits include the freedom to work with different languages and technologies, and also an improvement in resiliency and scalability between applications. But as the industry makes its shift away from favoring a monolithic architecture towards a microservices approach, it also faces many challenges such as monitoring, traffic control/load balancing, security and policy enforcement. Istio was designed and introduced to address these problems and optimize an organization’s microservices experience. If you’re curious about the meaning of Istio, it’s the Greek word for sail.
Why is Istio needed?
It becomes challenging to manage and secure microservices as an organization continues to grow, and Istio can be implemented to enable an organization to easily manage logging, metrics, tracing, traffic control, and improve application resiliency, efficiency, and security. Istio utilizes service mesh architecture that is necessary to provide reliable service-to-service communication through a complex application environment. As an organization’s cloud stack is scaled for demand, it can break, and thus reducing platform efficiency and performance. Having a service mesh like Istio is integral in helping to prevent this breakage.
Solution and Benefits
Currently, Istio is targeted at Kubernetes but will support other environments moving forward. Istio enhances Kubernetes by using Envoy as the high-performance proxy that it utilizes as a sidecar to mediate all inbound and outbound traffic for the services in the service mesh. Envoy’s implementation as a sidecar proxy alongside each micro-service eliminates the need to make any changes to existing application code. Some of the other advantages of Istio is its detailed layer 7 monitoring of all application and network behaviors that can be visualized using tools like Grafana & Prometheus. Istio also promotes developer productivity in that it allows the developers to focus on their applications rather than developing solutions into their code for potential system and networking challenges.
What Does Istio Look Like?
Istio utilizes a Data Plane and Control Plane as its main architecture. Each micro-service sits within the data plane and each employs its own Envoy sidecar proxy. The Data Plane is responsible for receiving, observing and forwarding every network packet destined for each micro-service, this is where Envoy’s features really shine. Envoy is able to do routing, health checking, load balancing, service discovery and more.
The Control Plane is where the service mesh is configured and managed using Pilot, Istio-Auth, and Mixer.
- Pilot assists with service discovery, intelligent routing, provides resiliency and communicates this configuration data back to the Envoy sidecar at runtime.
- Mixer provides telemetry data from the Envoy proxy, enables fine-grain access control, helps enforce policy and helps make policy decisions. Envoy calls Mixer at request time.
- Istio-Auth provides service-to-service and end-user authentication using mutual TLS for all incoming service calls. Includes a built-in identity and key management system to enable certificate generation and utilization.
(image credit to Lee Calcote)
Moving Forward
Istio is a relatively new open source project that is gaining a lot of attention. It provides developers with the tools needed to turn microservices into an integrated service mesh. Although Istio doesn’t solve all of our issues, its ability to tackle many of the common challenges around microservices, its ease of deployment in Kubernetes, and proven success at IBM, Google, and Lyft, make it worth evaluating. Git it a try by clicking here.
Additional resources on Istio:
Using Istio in Google Cloud Platform
Istio: a modern approach to developing and managing microservices
Craig Box — Managing your microservices with Kubernetes and Istio