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 that relies on separate BFF (Backend for Frontend) services to interact with the backend data. There is also a mobile application that uses IBM Mobile Foundation as the Mobile BFF to provide mobile app security, interact witth backend services and also enable sending of Mobile Push Notifications.
There are several components of this architecture.
- This OmniChannel application contains an AngularJS based web application and a hybrid-ionic mobile application.
- The Web app invokes its own backend Microservice to fetch data, we call this component BFFs following the Backend for Frontends pattern. In this Layer, front end developers usually write backend logic for their front end. The Web BFF is implemented using the Node.js Express Framework. For the mobile application the mobile BFF function is provided out-of-the-box by IBM Mobile Foundation services that have to be configured appropriately. These Microservices are packaged as Docker containers and managed by Kubernetes cluster.
- The BFFs invokes another layer of reusable Java Microservices. In a real world project, this is sometimes written by different teams. The reusable microservices are written in Java. They run inside a Kubernetes cluster, for example the IBM Cloud Kubernetes Service or Red Hat Openshift, using Docker.
- The Java Microservices are as follows:
- The Inventory Service uses an instance of MySQL to store the inventory items.
- 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 CouchDB.
- The Auth service delegates authentication and authorization.
- The Orders Service uses an instance of MariaDB to store order information and integrates with IBM Mobile Foundation Push Notifications to send mobile push notifications on orders shipment status.