Migrate monolithic ecommerce platform from legacy database engine to modern database engine and extend schema and implment enhacements
- Use Java8 (or higher version of Java), or Kotlin for the programming language.
- Spring Boot, Spring Data JPA, and other Spring modules for the microservices.
- Design new schema keeping PostgreSQL in the mind.
- For the RESTful API, use Swagger to document your endpoints. Use appropriate HTTP verbs and status codes. Assume no AuthN or AuthZ is required for the API.
- Implement unit and/or integration tests.
- Containerize your services using Docker. Use docker-compose if required.
- If you are thinking about async communication patterns, use Apache Kafka.
- See, if you can follow few of the 12 Factor App Principles (https://12factor.net).
- Install java 1.8, apache maven
- Install any IDE of your choice to view the entire codebase supported by Java
- Install Docker Desktop
https://www.docker.com/products/docker-desktop
- Install any API testing tool, for instance Postman
- To build and install java application
mvn install -DskipTests
- Build docker using
docker build . --file Dockerfile --tag <docker-username/application-name>
- Run the docker compose file using
docker-compose up -d
- To check is services are up and running run
docker ps
and in Postman run the/apiTestCheck
- No AuthN or AuthZ is required for the API
- The application is accessed by valid user and registration and sign-in is all taken care of
- Spring Boot for building java application
- Docker for containerization
- Swagger for API documentation
- Mockito and JUnit for Unit testing
- Prometheus, Grafana, Spring Boot logger for loggin, telemetry and monitoring
- Apache Kafka for asynchronous communication pattern and Kafkadrop for viewing topics
- PostgreSQL for presisting data
- Git for source code version control
- Postman for API testing
- Zookeeper for Centralized service for maintaining configuration information and Kafka Cluster
- Swagger documentation: Hit url
http://localhost:8080/swagger-ui/
then click on an api spec and 'Try it out' button - Application:
http://localhost:8080/api/v1/orders
- Grafana:
http://localhost:3000