Project done as a part of "High performance network services" class at University of Warsaw 2018/19.
Main part of the project was to create Highly Available and easy to scale service.
Project resulted in service consisiting of following parts:
- Frontend services - generating html files from templates
- Face recognition service - operations on images linked to face recognition
- Nginx front server - load balancing between front services and caching
- Mongo and MySQL databases - storing data
- RabbitMQ - offloading computations from frontend services to face recognition service
- Round robin load balancing using Nginx
- Easy deployment with Docker using docker-compose
- Caching requests for 2 seconds using Nginx
- Partitioning in MySQL database
- Asynchronous processing of incoming heavy requests with images thanks to RabbitMQ
Main view - added images with lists of people on them
People view - added people with their face pictures
Single image view - fullsize image with marked faces
- Frontend: HTML/CSS, Bootstrap, Javascript
- Backend: Python, Flask, MongoDB, MySQL, Nginx, RabbitMQ, face_recognition lib
- Other: Docker, Git
After executing commands mentioned below whole service should be accessible on localhost:8080
.
docker-compose build;
docker-compose up;