This week, IBM, Google and Lyft announced the launch of Istio, an open technology that facilitates and enhances intercommunication between microservices, such as those built using MicroProfile, WebSphere Liberty and Microservice Builder.
Two years ago we demonstrated integration between WebSphere Liberty and Netflix’s Eureka project but Istio goes far beyond the simple service registration and discovery capabilities provided by Eureka. Istio includes the ability to define flexible routing rules that enable patterns such as canary and A/B testing. This builds on the work done in the Amalgam8 project that IBM open-sourced last year. Amalgam8 also provided the ability to inject failures for resiliency testing – another feature that carries through to Istio.
Another differentiator from Eureka is that all of this is achieved without making any changes to the application programming model. Istio uses Lyft’s Envoy proxy running as a sidecar process to intercept traffic between services. This proxy-based approach allows detailed monitoring to provide visibility of interactions between polyglot services as well as a pluggable control point for enforcement of policies such as access control and rate limiting, capabilities provided by Google’s contribution to the project.
Istio is targeting Kubernetes as the initial deployment platform. One of the ways WebSphere developers can take advantage of this is through the Liberty Docker container, which is the runtime for Java microservices in IBM’s Kubernetes-based Bluemix Container Service platform. With over a million pulls from Java developers, the Liberty docker container has proved itself a popular and easy way to create and package Java applications. To specifically accelerate deployment of Liberty-based microservices to Kubernetes we released the Microservice Builder Beta earlier this year, providing project creation tools that generate Liberty and Kubernetes configuration as part of the project. Beyond the Bluemix Container service, this also targets on-premises environments such as IBM Spectrum Conductor for Containers. You can expect to see deeper integration with these offerings as Istio continues to evolve.
For more background on the Istio project and the inputs to it take a look at Jason McGee’s post. He also mentions the Istio sample application BookInfo, which is designed to demonstrate the project’s polyglot credentials incorporating Python, Ruby, Node.js and Java as part of a microservice application. If you want to try out Istio with WebSphere Liberty take a look at that sample – the Reviews service is a JAX-RS application with a Dockerfile that packages it into the WebSphere Liberty Docker container mentioned above.