Geautomatiseerde ontdekking van knelpunten in microservice-gebaseerde programma's

Student:Michiel Schram
Richting:Master of Science in de industriële wetenschappen: informatica
Abstract:De meeste applicaties die tegenwoordig worden ontwikkeld, bestaan uit meerdere componenten die samen één applicatie vormen. Deze componenten gebruiken netwerkverkeer om met elkaar te communiceren en om samen te werken. Elke component wordt ook wel een microservice genoemd en is gecontaineriseerd. Containerisatie van een applicatie is welbekend bij softwareontwikkelaars om applicaties te ontwikkelen en uit te rollen. Containers bevatten alleen de noodzakelijke (OS) bibliotheken en dependencies om een stuk code uit te voeren. Hierdoor zijn ze een licht uitvoerbaar bestand die op elke infrastructuur, waarop een containerisatie applicatie geïnstalleerd is, geïmplementeerd kan worden. Dit maakt applicatie-ontwikkeling eenvoudiger omdat het de samenwerking tussen ontwikkelaars verbetert. Ook de implementatie ervan wordt eenvoudiger. Het gebruik van een dergelijke architectuur heeft, net als het gebruik van een microservices architectuur, ook nadelen. Door het gebrek aan observeerbaarheid is het moeilijk te bepalen welke microservice verantwoordelijk is voor het falen van een service. Het vinden van deze problemen of knelpunten in de performantie van een applicatie is dus cruciaal. Het is dus zeer belangrijk een manier te vinden om de applicatie uit te breiden met observeerbaarheid en het situeren van knelpunten in applicaties te automatiseren. Deze oplossing moet eenvoudig implementeerbaar zijn in elke omgeving.
Abstract (Eng):Most applications developed today exist out of multiple components that form one application. These components use network traffic to communicate with each other to work together. Each component is also called a microservice and is containerized. Containerization of an application is well known by software developers to develop and deploy applications. Containers exist of just the necessary (OS) libraries and dependencies to run a piece of code, making them a lightweight executable that can be run on any infrastructure with an installed containerization tool. This makes application development easier because it can improve the collaboration between developers. Not only is application development improved, but application deployment is also made more convenient and can be run on any infrastructure. The use of such architecture, like the use of microservice architecture, has drawbacks. Because of the lack of observability, it is difficult to determine which microservice is responsible for the failure of a service. Finding these problems or bottlenecks in an application's performance is thus critical, which is why the goal is to find a way to add observability to an application and automate bottleneck discovery for applications. This solution should be simple to implement in any environment.