Simple Microservices for Image Processing
Master Thesis
About This Topic
Build a small collection of microservices to perform simple image processing tasks commonly required in modern web environments.
Additional Information
Image Processing
Simple image processing involves tasks such as:
- Image optimization [1].
- Crop an image to fit a given aspect ratio [2].
- Perform face detection on a photo and extract a person's portrait [3].
- Take a full-page screenshot of a web page [4].
- Analyze a web page and extract the most significant image [5].
Architecture
Clients talk to your services over HTTP via simple JSON APIs [6]. Services are containerized and run in a Docker Swarm [7] to provide redundancy and easy scaling. Services expose simple metrics [8] to assert their health. Time-consuming tasks (e.g., high-quality face detection) are queued up [9] and performed asynchronously. Images are stored on an object storage server [10]. Service orchestration is a core aspect of the project.
Ideally, your services are written in Go or Ruby.
Comparative Study
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 [11],
- in the context of a serverless environment [12].
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).