docker-compose up -d
Then you can generate a knapset and solve it with the naive solver through the UI (your http://localhost).
The goal of this project is to create a Proof Of Concept (PoC) using different AWS services for a Knapsack greedy problem implementation. This implementation will follow an Microservices Event driven architecture to test simultaneously different types of algorithms implemented in different ways, languages and using different (AWS) technologies. For more information on the architecture, please refer to the architecture page that list all the different iteration and evolution of the architectural and solution design.
Finally, this project should be able to be used and reproduced following an 'Open/Closed Principle' (OCP) with ability to easily add more algorithms and take advantage of logs and analytics data generated. It will also use modern CI/CD technologies (see the full list below) to automatically deploy, run and monitor each services/modules of the whole solution.
- Go (for problem generator service)
- GitHub Actions (for CI/CD)
- Python (for naive solver service) & Sanic (python web framework)
- Docker & Docker-compose (to containerize services)
- VueJS (as UI MVP frontend)
- NGINX (as web-proxy for Docker containers)
- TBD
For a complete roadmap please refer to the Project Tab of this project.
- Create a simple generator of knapsack problems (list of items + bag size)
- Create a first simple MVP of a naive solver
- Dockerize Generator and Naive Solver
- Create a MVP with a UI to launch a complete flow (generate a new problem, send it to solver and print result)
- Implement a distributed Message Queue system to connect generator and solvers (Kafka, Red Panda, SQS?)
- Create a second new MVP by implement an aggregator (if required) of chosen Queue/PubSub response/events to aggregate and display all results from all algorithms
- Create few more services using different algorithms, and languages, to compare solution and time to completion
- Create a cache (cold and hot) system for already solved sacs and enable re-utilisation of already solved problems
- TBD