This repository contains a microservice-based reference application called What's For Dinner which leverages the Java MicroProfile and Spring Boot technologies for its microservices/components. We also leverage Spring Cloud Netflix to integrate a Spring Cloud version of the application with the Netflix OSS stack.
The target cloud environment for the application is a Kubernetes-based platform which might be Minikube for development stages and IBM Cloud or IBM Cloud Private for production stages.
The What's For Dinner application is a simple dinner menu that displays available appetizers, entrees, and desserts for a non-existent restaurant. There are several components of this architecture:
- Menu UI microservice is our Backend For Frontend (BFF) microservice.
- Menu microservice is our menu aggregator microservice.
- Appetizer microservice produces appetizers for the menu.
- Entree microservice produces entrees for the menu.
- Dessert microservice produces desserts for the menu.
The end-to-end flow of the application would be:
-
A user requests to the What’s For Dinner restaurant its services (the availabe menu). That is, the user goes into the What’s For Dinner restaurant web-based application hosted on a Kubernetes-based environment.
-
This request reaches the Menu UI microservice (BFF) which will interact with the appropriate microservices it needs information from. In this case, our What's For Dinner application needs to interact only with the Menu microservice as we are just offering a menu service for now. However, on a future release, it could potentially need to interact with other services the restaurant might want to offer such as a delivery service or a table booking service.
-
The Menu microservice then interacts with any other microservice it needs in order to complete its business logic and goal. In this case, it interacts with the Appetizer, Entree, and Dessert microservices. which, in turn, might need to interact with other microservices.
-
Appetizer, Entree and Dessert microservices could potentially need to interact with other microservices. However, in this case, they just retrieve data (dishes available for today) from their data source (a properties file for simplicity).
The What's For Dinner microservices-based reference application has been implemented using two of the most popular technologies used for microservices development these days: Spring Boot and the Java MicroProfile. Moreover, we have leveraged Spring Cloud Netflix for integrating a Spring Cloud version of the application with the Netfix OSS stack for microservices. To know more about these implementations, how they look inside out and more click on the images below:
