This repository will host a comprehensive microservices project developed using Java, Spring Boot, and related technologies. The goal of this project is to implement and showcase a microservices architecture with a focus on best practices and production readiness.
- Java: The primary programming language for backend services.
- Spring Boot: Framework for developing and deploying microservices.
- Spring Cloud: For microservices architecture components such as service discovery, configuration management, etc.
- Docker: To containerize microservices for consistent environments.
- Kubernetes: To orchestrate containers and manage service scaling.
- Helm: To package and deploy applications on Kubernetes.
- Resilience4j: For building resilient microservices with features like circuit breakers.
- Prometheus: For monitoring and alerting.
- Loki: For log aggregation.
- Promtail: To collect and ship logs to Loki.
- Tempo: For distributed tracing.
- Grafana: For creating dashboards and visualizations.
- RabbitMQ/Kafka: For event-driven communication between services.
- OAuth2/OpenID Connect: For securing microservices with authentication and authorization.
- Microservices Architecture: Implementation of a microservices architecture with separate services for different functionalities, enabling scalability and flexibility.
- Service Discovery: Using Spring Eureka Server to enable services to find and communicate with each other.
- Configuration Management: Implementing centralized configuration management using Spring Cloud Config Server.
- API Documentation: Documenting microservices using Open API Specification and Swagger.
- Resilience Patterns: Utilizing Resilience4j for handling failures and building resilient services.
- Observability: Setting up monitoring and logging with Prometheus, Loki, Promtail, Tempo, and Grafana.
- Security: Implementing security best practices with OAuth2, OpenID Connect, and Spring Security.
- Event-Driven Architecture: Using RabbitMQ and Kafka for handling asynchronous communication between services.
- Containerization: Containerizing microservices using Docker to ensure consistent environments across development and production.
- Orchestration: Managing and scaling containers with Kubernetes.
- Deployment: Using Helm for deploying and managing microservices on Kubernetes.
- Basic knowledge of Java and Spring Framework.
- Familiarity with Docker, Kubernetes, and Helm (helpful but not required).
- Clone the Repository:
git clone https://github.com/savindu29/complete-microservices-project-with-spring-boot.git cd complete-microservices-project-with-spring-boot