This project provides a reference implementation for running a Cloud Native Application which leverages the Java MicroProfile and Spring Boot technologies for its microservices. The target cloud environment for the application is a Kubernetes-based platform which might be Minikube / Docker Edge for development stages and IBM Cloud or IBM Cloud Private for production stages.
The application is a simple store front shopping application that displays a catalog of antique computing devices, where users can search and buy products. It has a Web interface, and it relies on BFF (Backend for Frontend) services to interact with the backend data.
There are several components of this architecture.
- This OmniChannel application contains an AngularJS based web application. The diagram depicts it as a Browser.
- The Web app invoke its own backend Microservices to fetch data, we call these components BFFs, following the Backend for Frontends pattern. The Web BFF is implemented using the Node.js Express Framework. These Microservices are packaged as Docker containers and managed by the Kubernetes cluster.
- These BFFs invoke another layer of reusable Java Microservices. They run inside a Kubernetes cluster, for example the IBM Cloud Container Service or IBM Cloud Private, using Docker.
- The Java Microservices retrieve their data from the following databases:
- The Catalog service retrieves items from a searchable JSON datasource using ElasticSearch.
- The Customer service stores and retrieves Customer data from a searchable JSON datasource using IBM Cloudant
- The Inventory and Orders Services use separate instances of MySQL.
This application has been implemented using two of the most popular technologies used for Java microservices development.
To know more about these implementations, Click on the below images to access respective versions of our application.