Many modern web applications are structured with a microservices architecture to allow easier maintenance and greater horizontal scalability. A language that focuses on this, on parallelism and concurrency is Go, which through some interesting abstractions puts these aspects at the center. In order to facilitate the deployment and orchestration of a microservices architecture based on containers, Kubernetes is often used, with the task of simply managing all the services and their connection. The aim of this work is therefore to study a benchmark application, developed as microservices in Go, and to analyze its performance when some parameters change, both in the language runtime and in the Kubernetes environment. Particular attention is paid to the definition and collection of some metrics, both of the language runtime, and of the environment in which it is executed, so the various resources used by the containers and the overall resources of the node where the application is executed. The work was carried out as an internship in Akamas, a company that develops an application aimed at automating and speeding up this parameter tuning process in search of the best configuration that can optimize the defined objectives and meet the required constraints.

Go microservices runtime optimization in Kubernetes environment: the importance of garbage collection tuning

PANOZZO, STEFANO
2021/2022

Abstract

Many modern web applications are structured with a microservices architecture to allow easier maintenance and greater horizontal scalability. A language that focuses on this, on parallelism and concurrency is Go, which through some interesting abstractions puts these aspects at the center. In order to facilitate the deployment and orchestration of a microservices architecture based on containers, Kubernetes is often used, with the task of simply managing all the services and their connection. The aim of this work is therefore to study a benchmark application, developed as microservices in Go, and to analyze its performance when some parameters change, both in the language runtime and in the Kubernetes environment. Particular attention is paid to the definition and collection of some metrics, both of the language runtime, and of the environment in which it is executed, so the various resources used by the containers and the overall resources of the node where the application is executed. The work was carried out as an internship in Akamas, a company that develops an application aimed at automating and speeding up this parameter tuning process in search of the best configuration that can optimize the defined objectives and meet the required constraints.
2021
Go microservices runtime optimization in Kubernetes environment: the importance of garbage collection tuning
Performance
Golang
Microservices
Garbage collection
Kubernetes
File in questo prodotto:
File Dimensione Formato  
Tesi_Magistrale-pdfa-1.pdf

accesso aperto

Dimensione 4.31 MB
Formato Adobe PDF
4.31 MB Adobe PDF Visualizza/Apri

The text of this website © Università degli studi di Padova. Full Text are published under a non-exclusive license. Metadata are under a CC0 License

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.12608/34964