advanced-microservices
                                
                                 advanced-microservices copied to clipboard
                                
                                    advanced-microservices copied to clipboard
                            
                            
                            
                        Deep dive in some advanced concepts of microservices architecture based on my previous repo "demo-microservices"
๐งบ Sample Store App With Microservice Architecture ๐งบ
A practical sample store, built with spring frameworks, kubernetes and deployed on AWS. This is an advanced part based on my previous project demo-microservices in which I'm focusing on security concerns, 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
๐ Coming soon ... ๐
Support
If you like my work, feel free to:
- โญ this repository. And we will be happy together :)
Thanks a bunch for supporting me!
Features
- โ
 Using PostgresandPgAdminfor database and database management system.
- โ
 Using docker and docker-composefor running the application on local machine, docker, kubernetes and AWS environment.
- โ
 Using Event Driven Architectureon top of RabbitMQ Message Broker.
- โ
 Using PrometheusandGrafanafor monitoring and metrics.
- โ
 Using SleuthandZipkinfor distributed tracing and logging.
- โ
 Using Service DiscoverywithEureka serverfor local development andKubernetesservice discovery for production environment.
- โ
 Using API GatewaywithSpring Cloud Gatewayfor local development andKubernetes load balancerfor production environment.
- โ
 Using AWS SESservice for sending emails.
Roadmap
- ๐ง Add Api Key ManagementwithKeycloakfor security and authentication.
- ๐ง Using HelmorKustomizefor deploying the application onKubernetescluster.
- ๐ง Add Resilience4jfor circuit breaker and fallback.
- ๐ง Add log aggregation with ELKstack.
- ๐ง Create frontend application with React/Angular.
- ๐ง Add Istiofor service mesh.
Technologies - Libraries
- โ๏ธ 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.
- โ๏ธ open-feign- Declarative REST Client for spring.
- โ๏ธ spring-boot-starter-data-jpa- Spring Data JPA is a layer on top of the JPA API.
- โ๏ธ lombok- Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
- โ๏ธ 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).
- โ๏ธ mapstruct- MapStruct is a code generator that greatly simplifies the implementation of mappings between Java bean types based on a convention over configuration approach.
- โ๏ธ Junit5- For unit testing and integration testing.
- โ๏ธ Mockito- For mocking objects in unit tests.
- โ๏ธ jib-plugin- Container image builder that facilitates building container images for your Java applications.
- โ๏ธ docker-compose- Compose is a tool for defining and running multi-container Docker applications.
- โ๏ธ kubernetes- Kubernetes is an open-source system for automating deployment, scaling, and management of containerized 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.
System Architecture

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