(untitled) (Encontros Universitários da UFC, 2021)
Microsserviços são um tipo de arquitetura de software que consiste em dividir uma aplicação em serviços independentes. A arquitetura de microsserviços surgiu como uma alternativa à antiga arquitetura monolítica em que todas as funcionalidades de um sistema estavam presentes em um único processo que continha todos os módulos que compartilhavam todos os recursos entre si. Com a arquitetura de microsserviços, é feita a separação de cada uma das funcionalidades do sistema, de modo que, cada uma das funcionalidades do sistema seja um microsserviço e que funcione de forma independente aos demais microsserviços em execução. Atualmente, para a execução de ambientes com microsserviços, a plataforma mais utilizada é a do Kubernetes (K8s), que é uma solução open source de orquestração de containers (i.e., ela automatiza as operações dos containers - que é onde os microsserviços são executados). O K8s elimina parte dos processos manuais necessários para implantar e escalar as aplicações em containers, o qual ajuda a gerenciar clusters com facilidade e eficiência. Os microsserviços precisam se comunicar uns com os outros e a comunicação entre serviços é um dos principais desafios na realização da arquitetura de microsserviços e o Service Mesh (SM) se tornou uma opção para mitigar esse desafio. O SM é uma infraestrutura para gerenciar de maneira mais eficaz as comunicações entre serviços, proporcionando um maior controle operacional e dos dados trafegados entre os microservices. Uma funcionalidade importante dos Service Meshes é a observabilidade. Quando usamos um SM, automaticamente todos os serviços se tornam observáveis, sem a necessidade que haja qualquer alteração no código da aplicação. Desse modo, métricas de desempenho, monitoramento e a visualização de serviços estão disponíveis para o administrador da solução. Existem várias plataformas de SM no mercado e as mais utilizadas com o K8s são o Istio e o Linkerd. O nosso objetivo com esta pesquisa foi realizar uma análise das principais plataformas que fornecem um SM e apontar qual delas fornece um melhor desempenho, auxiliando, desse modo, quem deseja utilizar alguma delas em projetos que possuem microsserviços. Para isso, foi realizado um estudo e implantação do K8s, Istio e Linkerd. Para avaliar o uso dessas plataformas, foi utilizada uma aplicação benchmarking chamada TeaStore, que utiliza uma arquitetura de microsserviços e simula uma loja online para venda de chás e suprimentos. Depois de realizadas as implantações necessárias, alguns testes foram realizados utilizando diferentes cargas de trabalho para avaliar o desempenho em cada um dos cenários possíveis: apenas o K8s (baseline), K8s e Istio, e K8s e Linkerd. Os resultados obtidos mostram um desempenho (tempo de resposta) superior em 12,9% quando a aplicação é executada num ambiente com o Linkerd em vez do Istio.