ESTUDO COMPARATIVO ENTRE FERRAMENTAS SERVICE MESH EM UMA APLICAÇÃO BENCHMARKING BASEADA EM MICROSERVICES (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.