Resumo:
A arquitetura de microsserviços baseia-se na divisão das funcionalidades de uma aplicação em diversos pequenos serviços, visando que cada microsserviço seja escalado, distribuído, avaliado e implementado individualmente. Isso quer dizer que cada microsserviço pode ser escrito utilizando um framework ou linguagem diferente, pode possuir um número de nós diferente e pode possuir regras de elasticidade diferente. Essa arquitetura pode ser distribuída usando cloud computing, já que cada microsserviço pode ser distribuído em um container Docker. Utilizando elasticidade é possível alocar e desalocar recursos conforme algumas métricas, como CPU, visando melhorar o desempenho da aplicação. Existem diversos trabalhos que utilizam elasticidade para melhorar o desempenho da aplicação, porém são poucos os que visam melhorar o custo energético. Além disso, a maioria dos trabalhos baseiam-se na elasticidade reativa, onde as ações são executadas quando alguma métrica é atingida. Já na elasticidade proativa é utilizado alguma abordagem de predição, como por exemplo machine learning e séries temporais, para prever valores futuros de uma métrica e tomar decisões de antemão. Desta forma, o presente trabalho propõe o modelo Elergy, que combina elasticidade proativa de recursos com gerenciamento energético, visando melhorar o desempenho energético de aplicações submetidas à nuvem. Para a elasticidade proativa foi utilizado o modelo de séries temporais ARIMA, que visa prever uma métrica para tomar decisões de alocação e desalocação de containers de acordo com a carga de trabalho. Para o gerenciamento energético, o sistema migra containers entre servidores, visando permitir desativar máquinas que estão com baixa utilização. Além disso, apresenta-se um modelo de aplicação baseado em microsserviço que será a forma de implementação suportada pelo Elergy. Foram modeladas quatro cargas de trabalho que foram utilizadas na avaliação do modelo: constante, onda, crescente e decrescente. Em seguida, são demonstrados os resultados da predição de valores com a simulação de cargas de trabalhos reais. Para cada carga de trabalho avaliou-se o melhor modelo do ARIMA para predição. Este trabalho apresenta basicamente duas contribuições. A primeira é prover elasticidade proativa de aplicações que executam em microsserviços. A segunda é uma heurística para decisões de elasticidade visando redução do consumo energético com o mínimo impacto no desempenho. Para avaliar o impacto das decisões do Elergy, foram medidos os tempos de execução, índice energético e custo, com e sem o modelo comparando os resultados. Os resultados demonstram que obteve-se uma redução energética de até 27,92% em comparação com as outras execuções. Em relação ao custo, foi possível obter um custo 17,44% inferior.