Repository logo
 
Publication

Exploring maintainability and performance in Ballerina Microservices

dc.contributor.advisorAzevedo, Isabel de Fátima Silva
dc.contributor.authorAlves, André Filipe Ribeiro
dc.date.accessioned2023-10-23T11:10:13Z
dc.date.available2023-10-23T11:10:13Z
dc.date.issued2023
dc.description.abstractMicroservices architecture currently is the industry norm for creating applications since it allows teams to focus on individual services related to specific business functionalities, reducing the overall application complexity and improving its maintainability. However, microservices architecture has liabilities regarding service integration, communication, governance, and data management. To solve these liabilities, the industry and academic community have focused on creating new frameworks and solutions. More recently, the focus changed to creating new programming languages focused on microservices. This study aims to investigate the effects of language-oriented approaches in developing microservices. The work focuses on Ballerina, a programming language created to simplify the creation and integration of microservices. From the literature’s analysis, Ballerina demonstrates the ability to be more beneficial than the most common implementations of microservices that use more common frameworks. To further investigate these statements, an experience based on the migration of existing microservices developed in Java with the use of the framework Spring Boot was conducted. This experience used a migration strategy created based on the language’s specificities. The resulting Ballerina microservice is compared with its original counterpart. The experience focused on analyzing both solutions in terms of maintainability and performance. Therefore, the Goals, Questions, Metrics (GQM) approach was used to obtain metrics for the mentioned quality attributes. From the obtained results, it was concluded that the Ballerina solution presents differences from the Spring Boot solution, being superior regarding maintainability and inferior in performance.pt_PT
dc.description.abstractA arquitetura baseada em microserviços atualmente é dentro da indústria considerada a norma para a criação de aplicações. A arquitetura baseada em microserviços apresenta diversas vantagens, como a possibilidade de distribuir as diferentes funcionalidades da aplicação por diversas equipas, possibilitando também o desenvolvimento dos seus serviços em linguagens de programação diferentes. Esta modularização traduz-se num acréscimo à independência das equipas, possibilitando a implementação dos seus próprios processos de trabalho como também reduz a complexidade total da aplicação, aumentando a sua manutenibilidade. Contudo, a arquitetura baseada em microserviços, dado o aumento na sua utilização, deu origem a novas questões e preocupações para as equipas de desenvolvimento e para as organizações. As equipas de desenvolvimento encontraram dificuldades na integração e comunicação dos seus serviços, principalmente quando estes eram desenvolvidos em linguagens de programação bastante divergentes. Apesar da modularidade e desacoplamento dos serviços, começou a ser detetada uma grande dependência com metodologias de implantação do código, onde o sucesso de microserviços encontrava-se fortemente dependente do uso de contentores e sistemas de orquestração. As organizações identificaram um aumento nos seus custos devido ao aumento de processos, armazenamento em servidores e de software para suporte às diversas equipas. Estas dificuldades advêm do facto de as linguagens de programação habitualmente usadas para a criação de microserviços não terem sido edificadas com o objetivo de suportar microserviços bem como não salvaguardam algumas das preocupações identificadas anteriormente. De forma a combater estas dificuldades, a indústria e a comunidade académica incidiram as suas investigações em novas frameworks e soluções. Recentemente, dado o novo foco na otimização para o "desenvolvimento", surgiram novas linguagens de programação orientadas a microserviços. Este estudo tem como objetivo investigar os efeitos da utilização de linguagens de programação orientadas a microserviços e subsequentemente a análise do seu impacto relativamente a atributos de qualidade relevantes para os mesmos. O foco deste estudo incidirá na linguagem de programação Ballerina, uma linguagem de programação criada com o intuito de facilitar a criação de serviços resilientes capazes de se integrarem e orquestrarem através de pontos de saída distribuídos. Foi realizada uma investigação à literatura existente sobre microserviços e sobre Ballerina, com especial atenção na literatura referente à utilização de Ballerina em microserviços. Esta investigação objetivou a identificação dos atributos de qualidade relevantes, de onde se precisou a manutenibilidade e a performance como sendo os atributos a avaliar. Derivada da análise da literatura, quando confrontada com implementações de linguagens de programação mais tradicionais, Ballerina demonstra a capacidade de proporcionar benefícios aquando da sua utilização em microserviços. Ballerina apresenta vantagens tais como o suporte nativo para a utilização de contentores, suporte a DevOps e funcionalidades focadas na segurança e resiliência das aplicações. De forma a aferir estas afirmações, foi efetuada uma experiência controlada baseada na migração de microserviços desenvolvidos na linguagem de programação Java com recurso à framework Spring Boot para a linguagem Ballerina. Para a realização desta experiência, primeiramente foi escolhido um projeto base do qual se realizaria a migração. O projeto a migrar teria de cumprir alguns requisitos, tais como: ser open-source, ter atividade recente e um número significativo de microserviços. Com base nestes requisitos, foi selecionado o projeto Lakeside Mutual, um projeto sobre uma companhia de seguros fictícia, desenvolvido com o propósito de demonstrar a utilização de padrões sobre APIs e design orientado ao domínio. Seguidamente, foi desenhada uma estratégia de migração com base nas especificidades da linguagem. Dada a implementação da estratégia, foi edificado um serviço em Ballerina à semelhança do original implementado em Java, mantendo todos os seus atributos e funcionalidades. As soluções foram comparadas em termos de manutenibilidade e performance, em que para tal foi utilizada a abordagem Goal, Question, Metrics (GQM) de forma a obter métricas para os atributos de qualidade previamente mencionados. Em termos de manutenibilidade, foram analisados os números de linhas de código existentes e a complexidade calculada através dos níveis de indentação dado que Ballerina ainda não suporta ferramentas como o Sonarqube. Relativamente à performance, foi desenhado e implementado um plano de testes com um número variado de utilizadores virtuais que executavam um conjunto de pedidos REST. Dos resultados obtidos, foi concluído que existem diferenças notáveis entre ambas as soluções. A solução em Ballerina apresenta melhores resultados do que a solução em Spring Boot relativamente à manutenibilidade. Contudo, relativamente à performance, a solução em Spring Boot demonstra obter melhores resultados.pt_PT
dc.identifier.tid203371534pt_PT
dc.identifier.urihttp://hdl.handle.net/10400.22/23737
dc.language.isoengpt_PT
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/pt_PT
dc.subjectMicroservice Architecturept_PT
dc.subjectBallerinapt_PT
dc.subjectLanguage-Based Approachpt_PT
dc.subjectSpring Bootpt_PT
dc.titleExploring maintainability and performance in Ballerina Microservicespt_PT
dc.typemaster thesis
dspace.entity.typePublication
rcaap.rightsopenAccesspt_PT
rcaap.typemasterThesispt_PT
thesis.degree.nameMestrado em Engenharia Informática - Engenharia de Softwarept_PT

Files

Original bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
DM_AndreAlves_2023_MEI.pdf
Size:
5.24 MB
Format:
Adobe Portable Document Format
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
license.txt
Size:
1.71 KB
Format:
Item-specific license agreed upon to submission
Description: