The app consists of Spring-Boot based 5 different micro-services, 1 api-gateway service and 1 discovery service.
- Uses Netflix Eureka for service discovery
- Uses Kafka for bulk order processing
- Uses Swagger OpenApi version 3.0 for API documentation (available at http://localhost:8080/swagger)
- Unit tests written for item-service, order-service, address-service, payment-method-service
- Normalized database schema available in Database Schema.xlsx
- Exposes /orders-bulk endpoint as a client for processing orders in bulk
- Exposes /orders-bulk/status endpoint as a client for processing order status updates in bulk
All the micro-services are dockerized and deployable to docker using docker-compose.yml file included in the project.
- Java 11
- Docker
- execute build_run.sh
- Logging and metrics can be improved, can use ELK stack to ingest logs and generate metrics
- Async communication among microservices. Instead of communicating via Http, the microservices can send messages to each other.
- Unit testing can be improved
- Integration tests can be added
- Batch processing servers should be different from normal API servers
- Updating bulk status removes items, addresses, payment methods