Build fault-tolerant microservices

Summary

This developer code pattern demonstrates the deployment of a Open Liberty application using Eclipse MicroProfile on Kubernetes. It uses Prometheus to scrape application metrics and the Grafana platform for analytics and monitoring. The application uses MicroProfile Release 2.1 and focuses on fault-tolerance, which is one of the features in that release.

Description

All microservices fail, and it’s is important to create resilient microservices. Eclipse MicroProfile Fault Tolerance provides a simple, configurable, and flexible solution to create a fault-tolerant microservice. Watch this video to learn more about MicroProfile Fault Tolerance.

MicroProfile is a baseline platform definition that optimizes Enterprise Java for a microservices architecture and delivers application portability across multiple MicroProfile runtimes. Since the release of MicroProfile 1.2, the metrics feature comes out of the box with the platform.

The sample application used is a web application for managing a conference and is based on a number of discrete microservices. The front end is written in Angular; the back end microservices are written in Java. The app runs on Open Liberty, in Docker containers that are managed by Kubernetes. It’s based on a demo application from the MicroProfile platform team. The fork sample application was converted to use Open Liberty and MicroProfile Metrics, which is part of Microprofile Release 2.1.

Flow

flow

  1. Create Kubernetes service in IBM Cloud.
  2. Deploy all the microservices into the Kubernetes cluster.
  3. Deploy Prometheus server as a service into the Kubernetes cluster.
  4. Deploy Grafana as a service into the Kubernetes cluster.
  5. Use Ingress gateway to expose the web application from the Kubernetes cluster.
  6. User accesses the web application through browser.

Instructions

Ready to get started? See the README for step-by-step instructions.