About This Topic
Build a small collection of microservices to perform simple image processing tasks commonly required in modern web environments.
Simple image processing involves tasks such as:
- Image optimization .
- Crop an image to fit a given aspect ratio .
- Perform face detection on a photo and extract a person's portrait .
- Take a full-page screenshot of a web page .
- Analyze a web page and extract the most significant image .
Clients talk to your services over HTTP via simple JSON APIs . Services are containerized and run in a Docker Swarm  to provide redundancy and easy scaling. Services expose simple metrics  to assert their health. Time-consuming tasks (e.g., high-quality face detection) are queued up  and performed asynchronously. Images are stored on an object storage server . Service orchestration is a core aspect of the project.
Ideally, your services are written in Go or Ruby.
If executed as a diploma thesis, the project includes a comparative study of three different implementation approaches to the service layer:
- From scratch,
- based on a general-purpose microservices framework ,
- in the context of a serverless environment .
Please note that only the service layer is relevant for the comparison. For the actual image processing, you can use any open-source third-party library you like (i.e., don't implement face detection from scratch in step one).