Skip to content

E-commerce platform showcasing microservice architecture with Spring Cloud, Event-Driven Design, and Cloud-Native patterns. Features service discovery, API gateway, distributed tracing, message queuing, and OAuth2 security. Includes complete deployment guides for Docker, Kubernetes, and AWS.

Notifications You must be signed in to change notification settings

miliariadnane/demo-microservices

Repository files navigation

🧺 E-commerce Platform With Microservice Architecture 🧺

A practical e-commerce platform with spring frameworks, kubernetes and deployed on AWS. The repository demonstrates microservice patterns and cloud-native capabilities with focus on scalability, security, resiliency, observability and deployment improvements.

💡 This application is not business oriented and my focus is mostly on technical part, I just want to implement a sample app from scratch with microservice architecture using different technologies, principles and patterns.

🌀 This Application is in-progress and I will add new features over time. 🌀

Guide & Documentation

Link to the documentation and guide website : demo-microservices

Table of Contents

├── Overview
├── Setup a Microservice Project from Scratch
├── Microservices 101
│   ├── Service Discovery with Netflix Eureka
│   ├── Communication Between Microservices
│   │   ├── Synchronous Communication
│   │   └── Asynchronous Communication
│   ├── API Gateway
│   │   ├── Load Balancing
│   │   └── Security
│   │       ├── API Key Manager
│   │       └── Authentication
│   ├── Cloud Native Deployment
│   │   ├── Containerization with Docker & Jib
│   │   └── Container Orchestration with Kubernetes
│   └── Monitoring
│       ├── Distributed Tracing with Sleuth & Zipkin
│       └── Prometheus & Grafana
└── Microservices 102
    ├── Service Discovery Deep Dive
    ├── Resiliency
    └── Cloud Deployment with AWS

Support

Show your support by:

  • ⭐ Starring this repository. And we will be happy together :)
  • 🤲 Making a duaa for me and my parents
  • 🐛️ Reporting bugs or submitting pull requests to fix them
  • 📢️ Suggesting new features through issues or pull requests

Features

  • Service Discovery with Netflix Eureka
  • API Gateway with Spring Cloud Gateway
  • Distributed Tracing using Sleuth & Zipkin
  • Event-Driven Architecture with RabbitMQ
  • Security with API Key Manager & OAuth2/Keycloak
  • ✅ Database per Service Pattern
  • ✅ Cloud Native Support (Kubernetes & AWS)
  • Monitoring with Prometheus & Grafana
  • Email Notifications with AWS SES

Roadmap

  • Kubernetes Deployment
  • AWS EKS Integration
  • API Documentation with OpenAPI
  • Api Key Manager for APIs security.
  • AWS EKS Integration
  • Service Mesh Implementation
  • Frontend application with React or Angular
  • 🚧 OAuth2 Authentication with Keycloak.
  • 🚧 Resilience4j for circuit breaker and fallback

Technologies - Libraries

Core

  • ✔️ eureka-server-discovery - Eureka is a service registry for resilient spring microservices.
  • ✔️ spring-cloud-gateway - Spring Cloud Gateway is a non-blocking, reactive, based on Spring 5, web server gateway.
  • ✔️ spring-cloud-loadbalancer - Spring Cloud LoadBalancer is a library that provides a common abstraction over client-side load balancing.
  • ✔️ sleuth-zipkin - Distributed tracing with Zipkin and Spring Cloud Sleuth.
  • ✔️ spring-boot-starter-data-jpa - Spring Data JPA is a layer on top of the JPA API.
  • ✔️ amqp-starter - Spring AMQP provides an abstraction layer for sending and receiving messages with a message broker.
  • ✔️ rabbitmq - RabbitMQ is an open source message broker software that implements the Advanced Message Queuing Protocol (AMQP).
  • ✔️ Junit5 - For unit testing and integration testing.
  • ✔️ Mockito - For mocking objects in unit tests.

Libraries

  • ✔️ mapstruct - MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.
  • ✔️ open-feign - Declarative REST Client for spring.
  • ✔️ lombok - Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
  • ✔️ micrometer - Micrometer provides a simple facade over the instrumentation clients for the most popular monitoring systems, allowing you to instrument your JVM-based application code without vendor lock-in.
  • ✔️ jib-plugin - Container image builder that facilitates building container images for your Java applications.

Infrastructure

  • ✔️ prometheus - Prometheus is an open-source systems monitoring and alerting toolkit.
  • ✔️ grafana - Grafana is an open source, feature rich metrics dashboard and graph editor for Graphite, Elasticsearch, OpenTSDB, Prometheus and InfluxDB.
  • ✔️ AWS SES - Amazon Simple Email Service (Amazon SES) is a cloud-based email sending service.
  • ✔️ AWS EKS - Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that makes it easy for you to run Kubernetes on AWS without needing to install, operate, and maintain your own Kubernetes control plane.
  • ✔️ Keycloak - Open Source Identity and Access Management that adds security to your applications.
  • ✔️ Docker - Docker is a set of platform as a service products that allows to build, test, and deploy applications quickly using containers.
  • ✔️ kubernetes - Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.

System Architecture

Microservices Architecture

Infrastructure Architecture

Deployment Architecture

License

This project is made available under the MIT license. See LICENSE for details.

About

E-commerce platform showcasing microservice architecture with Spring Cloud, Event-Driven Design, and Cloud-Native patterns. Features service discovery, API gateway, distributed tracing, message queuing, and OAuth2 security. Includes complete deployment guides for Docker, Kubernetes, and AWS.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages