O blog da AWS

Entenda Como a Localiza Otimizou sua Infraestrutura com EKS e Karpenter

Por Moisés Ferreira, Especialista DevOps na Localiza; Danilo Silveira, Arquiteto de Soluções Sênior da AWS e Lucas Faria, Technical Account Manager na AWS.

A L&Co é a maior locadora de veículos do Brasil, com mais de 21.000 funcionários, cerca de 657.000 carros e mais de 700 lojas em 406 cidades em todo o país e América Latina. A Localiza continua avançando em sua jornada de transformação digital e construindo o futuro da mobilidade sustentável com cerca de 1.500 profissionais no Localiza Labs, área de tecnologia da empresa.

Desafios

Em uma arquitetura Kubernetes, existem dois componentes principais: o Plano de Controle e os Nós de Trabalho. O Plano de Controle gerencia as operações do cluster, enquanto os Nós de Trabalho hospedam os pods que executam as aplicações em contêineres. Inicialmente, para a maioria de suas aplicações, a Localiza utilizava um único cluster Kubernetes vanilla para o ambiente produtivo, hospedado em instâncias EC2. Nessa abordagem, a equipe da Localiza era responsável por gerenciar tanto o Plano de Controle quanto os Nós de Trabalho, o que representava um desafio devido à complexidade e à demora no escalonamento dos nós do cluster, além de demandar tempo da equipe com esse gerenciamento. Mesmo utilizando ferramentas como o Cluster Autoscaler, Rundeck e AWS Auto Scaling Group, a equipe enfrentava uma demora de até 15 minutos para escalonar os nós de forma serializada, prejudicando a capacidade de resposta rápida e eficiente da infraestrutura às demandas do negócio. Além disso, havia dificuldade na atualização da versão do cluster Kubernetes devido à complexidade operacional desta tarefa.

Outro desafio era relacionado a custos, Localiza utilizava apenas instâncias on-demand da AWS, que são pagas por uso, pois considerava muito complexo adotar instâncias Spot, que oferecem redução de até 90% nos custos, mas podem ser interrompidas a qualquer momento. Embora soubessem do potencial de economia com o uso das instâncias Spot, a falta de conhecimento e confiança sobre como gerenciá-las corretamente limitava essa opção, já que o controle do ciclo de vida dessas instâncias precisava ser feito manualmente.

E, por fim, havia um alto esforço para gerenciar ferramentas provisionadas dentro do cluster no modelo statefulset como o sistema de mensageria RabbitMQ, o banco de dados em memória Redis e o sistema de monitoramento Prometheus. Era necessário uma alta carga operacional do time da Localiza para manter a operação, resiliência e escalabilidade destas ferramentas.

Decisão

Para superar esses desafios, a Localiza decidiu migrar para o Amazon Elastic Kubernetes Service (EKS), um serviço gerenciado de Kubernetes fornecido pela AWS que fica responsável pela disponibilidade e escalabilidade do plano de controle. Para os nós de trabalho, os clientes possuem as opções de implementar os pods Kubernetes em qualquer combinação de Amazon Elastic Compute Cloud (Amazon EC2) e AWS Fargate. O método padrão para provisionar estes nós de trabalho é através de Amazon EKS-managed node groups, que automatiza o provisionamento e o gerenciamento do ciclo de vida das instâncias EC2 utilizando Amazon EC2 Auto Scaling Groups. Para um escalonamento correto do número de nós no cluster, ou seja, instâncias EC2 provisionadas, a Localiza utilizou node groups em conjunto com uma solução de Cluster Autoscaler. Ela verifica os pods que estão pendentes por falta de capacidade computacional e a atual utilização dos nós para aumentar ou diminuir o número de instâncias conforme a demanda. Apesar de entregar um certo grau de provisionamento dinâmico, haviam considerações e limitações que impactavam o seu uso, como a dificuldade do uso de instâncias Spot em conjunto com on-demand para aproveitar os descontos fornecidos pelo primeiro tipo.

A Localiza também optou por utilizar o AWS Fargate como mecanismo de computação com tecnologia sem servidor para algumas cargas de trabalho enquanto manteve managed node groups para outras. Dessa forma, foi movida para a AWS a responsabilidade por tarefas como gerenciamento de servidores, alocação de recursos e escalabilidade, melhorando a postura operacional e reduzindo o custo total de propriedade.

Além da migração para o Amazon EKS, a Localiza iniciou a substituição das soluções provisionadas dentro do cluster Kubernetes por serviços gerenciados da AWS. Por exemplo, o RabbitMQ, o Redis e o Prometheus foram migrados para o Amazon MQ, um serviço gerenciado de mensagem, o Amazon ElastiCache, um serviço gerenciado de armazenamento em cache, e o Amazon Managed Service for Prometheus (AMP), respectivamente.

Mesmo com todos os benefícios alcançados com essas mudanças, a Localiza enxergou a possibilidade de gerenciar os nós de seus clusters de forma mais eficiente, sem a carga operacional de trabalhar com vários node groups. Algumas outras restrições na arquitetura atual também influenciaram, como quais eram os tipos de instâncias EC2 que deveriam fazer parte de cada node group, pensando nas aplicações. Dependendo da quantidade de novos pods a serem criados durante um pico de acessos da aplicação, poderia ser necessária a criação de vários nodes ao mesmo tempo, impactando assim no tempo necessário para a criação de vários nós devido ao cool-down do Cluster Autoscaler. E, claro, havia uma grande oportunidade de redução de custos se começassem a utilizar instâncias Spot em seus ambientes.

A solução encontrada foi o projeto open-source Karpenter, uma solução flexível de autoscaling com alto desempenho que observa os pods que estão no status de pendente por falta de recursos e automaticamente provisiona um novo nó com a capacidade necessária através da seleção da melhor instância para aquele momento. Como o Karpenter não trabalha com o conceito de node groups, a Localiza não ficava restrita a determinados tipos de instâncias e também diminuía a necessidade de gerenciamento. O Karpenter avalia todos os recursos e seus requisitos de forma contínua e utiliza diretamente a API da Amazon EC2 Fleet de forma síncrona para recuperar rapidamente a lista de instâncias EC2 disponíveis e, com isso, entregar um tempo menor de provisionamento. E utilizando as capacidades oferecidas pela AWS, a Localiza utilizou o AWS Fargate para executar o controlador do Karpenter, eliminando mais um node group.

O diagrama abaixo ilustra como, uma vez que o Scheduler tenta implantar os pods (e alguns ficam pendentes), o Karpenter observa o ambiente, calcula quanto de CPU e memória são necessários e, em seguida, toma decisões como provisionar novos nós para atender a pods pendentes ou eliminar instâncias pouco utilizadas.

Resultados

A utilização do Karpenter juntamente com o Amazon EKS permitiu que a Localiza aumentasse a adoção de containeres, saindo de um único cluster em produção, em Kubernetes vanilla, para mais de 20 clusters com o Amazon EKS, com mais de 5.000 deployments realizados. Esta migração trouxe também maior resiliência, pois o Amazon EKS já possui o plano de controle distribuído em três zonas de disponibilidade, e a Localiza também distribuiu suas cargas de trabalho da mesma forma. Outra consequência direta foi a melhoria na postura de segurança por utilizar versões mais atualizadas do Kubernetes. Com a dificuldade da atualização manual de clusters Kubernetes, a Localiza mantinha o cluster antigo na versão 1.17. Ao migrar para o Amazon EKS, foi necessário atualizar para 1.24.

Em termos operacionais, houve uma redução do tempo médio de escalonamento dos nós em até 88%, reduzindo de 15 para 3 minutos para provisionar novas instâncias. A equipe da Localiza experimentou uma diminuição de 29% nas tarefas operacionais, graças à adoção de serviços gerenciados e ao aumento da responsabilidade compartilhada com a AWS. Por exemplo, atividades como atualização de certificados para o Ingress foram automatizadas com o uso do AWS Certificate Manager.

Com a implementação do Karpenter, a Localiza iniciou uma utilização massiva de instâncias EC2 spot. E com isso, houve uma redução de 78% nos custos de infraestrutura comparado com o uso de apenas instâncias on-demand. E mesmo com a alta utilização deste tipo de instância, verificou-se uma porcentagem de interrupção de apenas 3%. A utilização de instâncias otimizadas e AMIs atualizadas também proporcionou um aumento de desempenho de até 30% em alguns backends.

Conclusão

A jornada da Localiza em otimizar sua infraestrutura com o Amazon EKS e o Karpenter rendeu resultados impressionantes. A migração para a plataforma gerenciada de Kubernetes da AWS permitiu que a empresa aumentasse drasticamente o número de clusters e cargas de trabalho containerizadas, ao mesmo tempo em que melhorou a resiliência, segurança e agilidade operacional. A adoção do Karpenter, por sua vez, possibilitou provisionar nós de forma muito mais rápida e eficiente, reduzindo o tempo médio de escalonamento e os custos de infraestrutura para a Localiza.

No geral, a parceria entre a Localiza e a AWS, impulsionada por soluções inovadoras como o EKS e o Karpenter, acelerou a transformação digital da empresa e a construção do futuro da mobilidade sustentável. Com times de TI mais ágeis e produtivos, cargas de trabalho resilientes e de alto desempenho, e uma infraestrutura escalonável a custos muito reduzidos, a Localiza está bem posicionada para continuar entregando experiências excepcionais aos seus clientes em um mercado altamente competitivo.

Sobre os autores

Moises Ferreira_2 Moisés Ferreira está é Especialista DevOps na Localiza, com mais de 10 anos de experiência na área de TI. Atualmente, ele se dedica à plataformização e produtização de ferramentas que facilitam a entrega de produtos digitais. Sua principal missão é promover o empoderamento dos desenvolvedores através de soluções de auto serviço.
Danilo Silveira Danilo Silveira é Arquiteto de Soluções Sênior na AWS, com mais de 20 anos de experiência em TI. Hoje, trabalha com os clientes da AWS apoiando na jornada de adoção da nuvem e transformação com a construção de aplicações modernas seguindo as melhores práticas da AWS.
Lucas Faria

 

Lucas Ribeiro de Faria é Technical Account Manager da AWS, com mais de 18 anos de experiência em TI. Atualmente trabalha com clientes da AWS ajudando na adoção de cloud, em frentes de otimização de custos e alinhando tecnologia aos objetivos de negócio.

 

 

Sobre os revisores

Douglas Ramiro é arquiteto de soluções com especialização em Spot e Graviton na AWS. Todos os dias, os clientes da AWS economizam ao adotar essas tecnologias. Douglas tem a missão de disseminar essas tecnologias em LATAM para que os clientes AWS possam reduzir seus custos.
Hellen Rosa Hellen Rosa é Arquiteta de Soluções na AWS apoiando diversos cliente na jornada de cloud com as melhores práticas de arquitetura. Apaixonada por containers, kubernetes e mundo DevOps. No seu tempo livre, gosta de viajar, ir a praia e ler um bom livro.