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.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
https://hdl.handle.net/20.500.12608/34964