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. 🌀
🔜 Coming soon ... 🔜
If you like my work, feel free to:
- ⭐ this repository. And we will be happy together :)
Thanks a bunch for supporting me!
- ✅ Using
Postgres
andPgAdmin
for database and database management system. - ✅ Using docker and
docker-compose
for running the application on local machine, docker, kubernetes and AWS environment. - ✅ Using
Event Driven Architecture
on top of RabbitMQ Message Broker. - ✅ Using
Prometheus
andGrafana
for monitoring and metrics. - ✅ Using
Sleuth
andZipkin
for distributed tracing and logging. - ✅ Using
Service Discovery
withEureka server
for local development andKubernetes
service discovery for production environment. - ✅ Using
API Gateway
withSpring Cloud Gateway
for local development andKubernetes load balancer
for production environment. - ✅ Using
AWS SES
service for sending emails.
- 🚧 Add
Api Key Management
withKeycloak
for security and authentication. - 🚧 Using
Helm
orKustomize
for deploying the application onKubernetes
cluster. - 🚧 Add
Resilience4j
for circuit breaker and fallback. - 🚧 Add log aggregation with
ELK
stack. - 🚧 Create frontend application with
React
/Angular
. - 🚧 Add
Istio
for service mesh.
- ✔️
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.
This project is made available under the MIT license. See LICENSE for details.