/e-commerce-microservices-sample

A fictitious cloud-native e-commerce application using microservices architecture powered by polyglot languages & databases, deployable to Kubernetes & AWS

Primary LanguageTypeScript

Sample E-Commerce application using Microservices / Cloud Native Architecture (CNA)

A fictitious e-commerce sample application built using modern technologies and Microservices & Cloud Native Architecture patterns.

  • Polyglot Languages & Frameworks (Java - Spring Boot/Cloud, Python - FastAPI, SQLAlachamey, JavaScript/TypeScript - Node, ExpressJS, React)
  • Polyglot Databases (MongoDB, Redis, ElastiSearch, PostgreSQL)
  • Able to deploy to local Kubernetes (k8s) cluster as containers (Docker) and also to Public Cloud (AWS).

This is an end-to-end e-commerce solution that demonstrates how to build a moder CNA application using microservices architecture with full-stack technologies. This application includes below functional microservices which are independently deployable with bounded context.

You can standup application locally on your laptop/desktop with few steps and also to AWS.

App - UI/UX, Architecture & Technologies Used

Architecture Application UI/UX
Architecture Application UI

Functional Microservices

Microservice Description Technologies Used
Product Catalog Microservice Provides e-commerce merchandise information and images. A REST API built using NodeJS, ExpressJS relies MongoDB as a data store.
Shopping Cart Microservice A Microservice with shopping cart and checkout features. A REST API built using Spring Boot & Cloud with Gradle as build tool, leverages Redis as in-memory data store.
User Profile Microservice User profile management, account and more. A REST API built using Python FastAPI and SQLAlchamey used PostreSQL
Search Microservice Enables seach functionality such as auto complete, typeahead, faceted search features A proxy to ElasticSearch, leverages Node
Store UI A web UI frontend for e-commerce store that uses above Microservices A web app built using React, Material UI using TypeScript/JavaScript

Folder Structure

.
├── store-ui                    # Web Store Ract App with Material UI
│   └── ...
├── cart-cna-microservice       # Shopping Cart Microservice repository
├── products-cna-microservice   # Product Catalog Microservice folder
├── search-cna-microservice     # Search Microservice
├── users-cna-microservice      # User Profile Management Microservice
├── users-cna-microservice      # User Profile Management Microservice
├── store-ui                    # Web Store Ract App with Material UI
└── infra                       # Infrastructure scripts to setup app locally & cloud
    ├── k8s                     # Kubernetes (k8s) YAML files
    │    └── apps               # Microservices related k8s yaml files.
    │    └── shared-services    # Databases, ElasticSeach related k8s yaml files.
    ├── terraform               # Terraform scripts to deploy to AWS
    └── performance             # Performance and load testing scripts

Getting Started

Build

Go through detailed instructions specified in README.md file of each microservice.

Deploy

Refer to instructions to deploy application and dependent services such as MongoDB, Redis, ... either to local machine or AWS.

Issues & Feedback

Raise an issue in Github. Will address as soon as possible.