Java Microservices, Resiliency, and Istio


This article is part of the KubeCon + CloudNativeCon North America 2017 series.

KubeCon + CloudNativeCon gathers all Cloud Native Computing Foundation (CNCF) projects under one roof to further the advancement of cloud native computing. At the upcoming event in Austin, Animesh Singh and Tommy Li of IBM will discuss how to build, deploy, and connect Java microservices with Istio service mesh. In this article, Singh offers a preview of their presentation.  Microservices and Java are being mentioned together very frequently. What’s the current state?

Animesh Singh: Microservices, Java! These two terms go together very well: there are excellent frameworks in place to support building epic microservices in Java. Microservices are containerized in one way or another, and there’s some movement in the Java ecosystem around how those containers are built. The Java community has been using Java EE within a microservices architecture for quite a while now, and it has resulted in multiple approaches, both in product implementations and design patterns.

You can pack everything into one “uber-jar” that you shove into a more generic Java container, or you can deploy a thinner WAR file into a more tailored image. The end goal for either approach is similar — a lightweight container with simple configuration that boots quickly using only essential components. Some frameworks that are becoming popular in this space include MicroProfile and Spring Boot.  Can you shed some light on MicroProfile microservices framework and where it is headed?

Singh: Sure. So what began as a collection of independent discussions and many innovative microservice efforts within existing Java EE projects — for example, WildFly Swarm, WebSphere Liberty, TomEE, and others — have finally coalesced around common ground to form MircoProfile. MicroProfile is a baseline platform definition that optimizes Enterprise Java for a microservices architecture.  So with these proliferation of microservices, where you can have 100s and 1000s of instances running, would`t resiliency and fault tolerance become very important? Do these frameworks provide and resiliency features?

Singh: Yes. Since we are talking about MicroProfile, MicroProfile 1.2 had recently added a lot of resiliency features like Circuit breakers, Health checks,  Retries/Timeouts etc. which can be enabled by simple changes in code/configuration.  Nice.  But what if you don’t want to change your application code? And if you are running polyglot microservices?

Singh: Great question. That`s where Service Mesh architecture shines. Istio provides an easy way to create this polyglot service mesh by deploying a control plane and injecting sidecar containers alongside your microservice. Istio adds fault-tolerance to your application without any changes to code. By injecting Envoy proxy servers into the network path between services, Istio provides sophisticated traffic management controls, such as load-balancing and fine-grained routing, as well resiliency and fault tolerant mechanisms  And finally where can I learn more about these?

Singh: Join our talk at Kube Con in Austin, as well as visit the IBM Code site to try our pattern we have created for Java and Istio resiliency.


Animesh Singh
Animesh Singh is an STSM and Lead for IBM Cloud, Containers and InfrastructureDeveloper Technology. He has led major initiatives for IBM Cloud and Bluemix and currently works with developers to design and develop cloud-computing solutions around Kubernetes, Docker, Serverless, OpenWhisk, OpenStack and Cloud Foundry.