Alexandre Peinot

Analysis of microservice architectures for image analysis in a continuous development context

Abstract

In the current context of big data, an increasing amount of data is processed each day in the world. To handle this constantly growing workload, microservice architectures were introduced in the 2010s. These large scalable architectures help to optimise the performance of applications. This need for optimisation of resource use is crucial in the image analysis domain where unstructured data such as images and video, need intensive use of GPU and CPU.

This thesis studies existing microservice patterns to propose an implementation of microservice architecture in an image processing context. The experiments focus on the internal communication between services, coordination of services and scaling of the architecture. To evaluate these parameters, three different architectures based on messaging queue (RabbitMQ) for internal communication have been designed. They realize all the same process, but they differ in the coordination of containerized services inside the architecture and in the service size. Some threshold-based auto-scaling based on messaging queue performance metrics have also been tested.

The comparison of the three architectures based on experimental results shows the significant impact of the service granularity on the performance of a microservice architecture. In fact, using overly small services can increase the response time of a request if the time needed to process the request in a service is negligible compared to the overhead induced by communications. When using auto-scaling, both tested performance metrics improve the performance of the tested architectures. However, none of them are a perfect solution, and they both present pros and cons. The lessons learned from this study could be useful when implementing a microservice architecture, but further experiments would be needed to determine an optimal solution that can be used in a production environment.