This directory contains the sources of the Micronaut with Graal Cloud Native toolkit version of MuShop.
For introductory information and getting started documentation on deployment see the reference documentation for MuShop.
The sources are split into a number of subprojects each of which implement an application in the MuShop Microservice architecture.
A summary of each directory of importance (some directories are simply utilities and can be ignored) and the purpose of the application is described below:
Typically with a Microservice architecture the majority of services are not directly exposed to the outside world and a single gateway Microservice acts to secure and route requests to other services.
The api
application is an HTTP gateway application that is responsibile for security and routing to the different Microservices that occupy the backend and are not directly exposed over the internet.
In order to serve static assets (images, large files etc.) the assets
Microservice is responsible for optimizing and deliverying assets served up from Object Storage. This application is currently written as a Node application.
The carts
subproject's purpose is to manage shopping carts in the MuShop application.
These shopping carts are stored in the user session and persisted using document database storage.
The catalogue
project is responsible for managing the information about the range of products available on the MuShop store front.
A relational database is used to store and retrieve product informatino.
The events
subproject is used to consume application events such as when a user logins in, or adds a product to their cart etc.
These events
are sent to a backend streaming for processing (Kafka).
A small Microservice that simulates processing the final order for product sold on the MuShop.
Contains Serverless functions. Currently only a single function which is responsible for handling subscriptions to to a hypothetical mailing list for MuShop users.
The orders
Microservice is responsible for managing information for a particular product order including card and shipment information.
The payment
Microservice simulates a Microservice that would handle payment processing.
The storefront
application provides the HTML/JS UI of the application.
The user
Microservice is responsible for managing user accounts, registration and login.