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. 🌀
Link to the documentation and guide website : demo-microservices
├── 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
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
- ✅
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
- 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
orAngular
- 🚧 OAuth2 Authentication with Keycloak.
- 🚧 Resilience4j for circuit breaker and fallback
- ✔️
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.
- ✔️
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.
- ✔️
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.
This project is made available under the MIT license. See LICENSE for details.