InfoQ attended JAXLondon 2017 in October. One key highlight was a talk by Emily Jiang of IBM, who shed some light on an Eclipse based collaborative platform called Eclipse MicroProfile. This talk covered a brief history of Eclipse MicroProfile and then dove into the details of its fault tolerant abilities and then covered future plans of coverage and collaboration between Java developers.

MicroProfiles are a technology designed to help with configuring Microservices. While MicroProfile 1.0 was first released in September 2016, Eclipse MicroProfile 1.1 (released on August 2017) was the first one to be released under the Eclipse foundation.

MicroProfile 1.0 was based on Java EE 7 and uses a stack of CDI + JSON-P + JAX-RS. With Eclipse MicroProfile 1.1, a new MicroProfile config stack was introduced to help with portability.

Jiang provided deeper insights on the latest MicroProfile which has recently been released as version 1.2. This release has many new features including application-wide metrics and health checks by means of deployment to a single-core Kubernetes environment. A major new feature of 1.2 provides help with achieving fault tolerance. There is also a JWT where microservices can interact with each other in a secure environment.



The next major topic was the new fault tolerant API, beginning with a discussion of @Retry, @Timeout and @Bulkhead. @Bulkhead works by isolating threads (defaults to 10) such that a failure in one part of the system doesn’t bring the entire system down. An app could also use @Bulkhead with @Asynchronous to use a threading style of Bulkhead, which means the invocation will be on a separate thread.

As a part of its new fault tolerance and failure detection support, MicroProfile 1.2 includes @CircuitBreaker. This annotation tells the runtime that any break in circuit (also known as open-circuit) should result in immediate failure. A closed circuit will invoke services as designed.

The API also provides @Fallback support where a handler can be programmed to fallback to a default service when a selected service option is not available. This support needs to be provided at the application level since the underlying system can’t necessarily provide fallbacks.

To further the MicroProfile Fault Tolerance discussion, Jiang name-checked the Istio platform. If the Fault Tolerance capabilities from Istio are used all MicroProfile’s Fault Tolerance aspects except Fallback can be disabled, using the Istio equivalents instead.

Jiang presented a short section on roadmaps, mentioning Eclipse MicroProfile 1.3 which could add support for Open Tracing and Open API before an eventual Eclipse MicroProfile 2.0. This future release might be expected to be released with support for other EE8 technologies.

To conclude, Jiang provided a short demo of OpenLiberty to showcase MicroProfile 1.2 features. More details on all of the technologies can be found at the Eclipse Microprofile website.