ATTENTION: This is a web archive! The IMS Group was split up in 2018 and does not exist anymore. Recent work of former members can be found at the VR/AR Group and the Computer Vision Group.

Interactive Media Systems, TU Wien

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:

  1. From scratch,
  2. based on a general-purpose microservices framework [11],
  3. 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).

References

  1. jsonapi.org
  2. github.com/toy/image_optim
  3. github.com/esimov/caire
  4. github.com/muesli/smartcrop
  5. github.com/GoogleChrome/puppeteer
  6. github.com/advancedlogic/GoOse
  7. docs.docker.com/engine/swarm/
  8. prometheus.io
  9. github.com/contribsys/faktory
  10. minio.io
  11. github.com/go-kit/kit
  12. github.com/openfaas/faas