Eshop is a cloud microservices application. The application is a web-based e-commerce app where users can find cars or motorcycles, add them to the cart, and purchase them. This application utilizes the service from Amazon Web Service and Google Cloud Platform.
Service
Language
Framework
Database
Publisher
Subscriber
Description
Frontend Customer
Typescript
NextJS
-
-
-
Expose an HTTP server to serve the website for the user. Does not require signup/login to see all products.
Frontend Admin
Typescript
NextJS
-
-
-
Expose an HTTP server to serve the website for admin. Require signup/login to perform all actions.
Auth
Go
Gin
-
-
-
Auth service to perform centralized authorization for all internal services.
Cart
Go
Gin
Redis, MySQL
-
product-updated
Cart service for user saving cart and get their current cart.
Order
Go
Gin
PostgresSQL
order-created, sale-created
order-created, payment-updated
Order service to process ordering after user adds items to the cart and fills address detail.
Payment
Java
Spring Boot
Mysql, S3
payment-updated
-
Payment service that will receive the payment proof from the user, then admin will validate it.
Product
Go
Gin
DynamoDB, S3
product-created, product-updated
product-quantity-updated
Product service that will show the all the list of product and the detail also with stock.
Sales Report
Python
FastAPI
PostgresSQL
-
sale-created
Reporting service
Shipping Cost
Python
-
-
-
-
API for calculating the cost based on the zip code differences, running with AWS Lambda
Warehouse
Go
Gin
PostgresSQL
product-quantity-updated
product-created, product_updated
Warehouse service handles movement between warehouse and user, also get real stock of item.
Home Page
Product Detail
Add to Cart
Checkout
Order List
Order Detail
handled by amazon cognito, requested with this service
Database: Dynamo DB and Amazon S3
High read-to-write ratio (many customers viewing products)
Need for fast product view by categories
Flexible schema
Easy to scale
Durable and reliable for image storage (S3)
Database: Redis Sentinel and MySQL
Great for active cart; use will have read heavy on this (acts as primary storage)
High availability on redis sentinel, with one master act as write and two slave act as read
Mysql just for persistence or recovery
Write is very low in mysql
Transaction require strong consistency
Database: MySQL and Amazon S3
Simple schema and fixed
Durable and reliable for image storage (S3)
Transaction
Better handling concurrent update
Better for complex query with many rows
Great for complex analytics query
Good performance with large datasets
Built-in time-series functionality
Development to learn how to run and develop this microservice locally or via Google Kubernetes Engine.
API Documentation with password: 0ceNdUuG (temporary)