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
- 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)
- 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
- 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)
- Email: idowidya.yudhatama@gmail.com
- LinkedIn: https://linkedin.com/in/idoyudha






