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.