Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/micaellobo/e-commerce-store
Spring Boot microservices application for an E-commerce platform. Project is currently under construction
https://github.com/micaellobo/e-commerce-store
api-gateway docker eureka-discovery-service grafana grafana-loki grafana-tempo integration-testing kafka microservices microservices-architecture open-telemetry prometheus spring-boot unit-testing zipkin
Last synced: 27 days ago
JSON representation
Spring Boot microservices application for an E-commerce platform. Project is currently under construction
- Host: GitHub
- URL: https://github.com/micaellobo/e-commerce-store
- Owner: micaellobo
- Created: 2023-07-22T00:49:54.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-04-29T14:58:15.000Z (6 months ago)
- Last Synced: 2024-09-27T07:01:45.368Z (about 1 month ago)
- Topics: api-gateway, docker, eureka-discovery-service, grafana, grafana-loki, grafana-tempo, integration-testing, kafka, microservices, microservices-architecture, open-telemetry, prometheus, spring-boot, unit-testing, zipkin
- Language: Java
- Homepage:
- Size: 402 KB
- Stars: 10
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# e-commerce-store
Spring Boot microservice-based application to manage orders, products, inventory and product reviews.
# Microservices Overview
- **API Gateway:** Routes requests to appropriate microservices.
- **Eureka Service:** Service discovery and registration.
- **User Service:** Handles user management.
- **Auth Service:** Provides authentication.
- **Inventory Service:** Manages product inventory and availability.
- **Order Service:** Manage and process customer orders.
- **Reviews Service:** Gather and display product reviews and ratings from users.
- **Notification Service:** Sends notifications to users.# Technologies and Concepts Used
- Java 17
- Spring Boot
- Maven
- PostgreSQL### Architecture
- Microservices
- API Gateway Pattern: An `API Gateway` on the edge of the microservices.
- Service Registration and Discovery: using `Netflix Eureka` for service registration and discovery.### Security
- JWT Tokens: Used for authentication and authorization.### QA/Testing
- JUnit
- Mockito
- Unit Testing
- Integration Testing
- TestContainers### CI/CD
- Maven
- Docker
- GitHub Actions: Automatically builds, tests and publishes Docker images to Docker Hub.### Event-Driven Messaging
- Kafka### Observability
- Grafana: Data visualization.
- OpenTelemetry: Collect metrics, traces, and logs.
- Grafana Loki: `Logging`.
- Grafana Tempo and Zipkin: `Distributed Tracing`.
- Prometheus: `Metrics`.# How to run
### Docker Compose
Use pre-built Docker images for a fast and straightforward way to run the application:
1. Clone the repository or download the
[docker-compose.yaml](https://github.com/micaellobo/e-commerce-store/raw/master/deployment/docker-compose.yaml)
2. Run the following command:cd deployment && docker-compose up -d
### Local Development with Docker
Build new Docker images and package the application into a JAR file from your local codebase, although it may be a bit
slower do the fact that it's building the images from scratch:1. Clone the repository.
2. Run the following command:docker-compose -f docker-compose-dev.yaml up -d --build
For smoother local development, it's recommended to have `Java 17` or higher and `Maven` installed. You can also
configure the essential infrastructure
using [docker-compose-infra.yaml](https://github.com/micaellobo/e-commerce-store/raw/master/deployment/docker-compose-infra.yaml). \
Run each service individually with `mvn spring-boot:run`.### Exploring and Interacting with API
- **Swagger:** http://localhost:8080/swagger
- **Postman Collection:** [postman.json](https://github.com/micaellobo/e-commerce-store/raw/master/documentation/postman.json)# Next Steps and Improvements
As the project is actively being developed, there are several possibilities for future enhancements and progress. Here
are a few ideas:- [ ] **Security:** Transitioning from `JWT` to `OAuth` 2.0 with `Keycloak` for more robust authentication and authorization
mechanisms.
- [ ] **CI/CD:** Set up pipelines to automate testing and deployment processes with `Jenkins`. Currently
using `GitHub Actions` to build and push microservices Docker images to `Docker Hub`.
- [ ] **Container Orchestration:** Explore container orchestration platforms like `Kubernetes`.