Contextualização
A Delivery Hero opera em 40 países, com uma pilha de tecnologia complexa e um sistema logístico desenvolvido. A empresa está em processo de transição para o Elastic Kubernetes Service (EKS) e utiliza escalabilidade automática para lidar com os picos de horas diárias.
Economia de Custo com Instâncias Spot
As instâncias EC2 representam mais de 50% da fatura da AWS da empresa, tornando a redução de custos uma prioridade. As instâncias Spot permitem que a empresa economize dinheiro utilizando a capacidade EC2 ociosa, alcançando uma redução de custo de 70% em 2017. As instâncias reservadas não eram adequadas devido à carga de trabalho dinâmica e ao risco de capacidade ociosa.
Implementação de Instâncias Spot
As instâncias Spot são usadas para os mestres Kubernetes, com uma carga de trabalho fixa 24/7. A empresa irá migrar para EKS, eliminando a necessidade de instâncias reservadas. A fatura da AWS diminuiu significativamente após a adoção de instâncias Spot em 2017.
Desafios e Mitigação
As instâncias Spot podem ser encerradas com um aviso de 2 minutos, e a disponibilidade não é garantida. Oferecer lances em múltiplos mercados (zonas de disponibilidade e tipos de instâncias) ajuda a aumentar as chances de obter uma instância. Para lidar com encerramentos, as aplicações devem ser projetadas para lidar com encerramentos de instâncias a qualquer momento.
Melhores Práticas
* Utilize ferramentas de infraestrutura como código (IaC) como AWS CloudFormation e Terraform para flotas de spot.
* Prepare-se para o encerramento de instâncias spot fechando conexões, interrompendo trabalhos e encerrando pods e contêineres.
* Utilize a API de metadados da Amazon para detectar o encerramento de instâncias.
Estudo de Caso e Conclusão
Uma aplicação Java foi otimizada para reduzir o uso de CPU após mau funcionamento durante o boot. É crucial construir aplicações resistentes que possam lidar com encerramentos de instâncias. A empresa desenvolveu um toolkit para lidar com instâncias Spot em Kubernetes, incluindo um script de Notificação de Encerramento de Spot e um Node Drafter para replanejar pods.
Além disso, a empresa compartilha sua abordagem para otimizar aplicações para instâncias Spot, incluindo a importância de lidar com encerramentos de nós robustamente e a criação de componentes para prevenir sobrecarga de nós e garantir disponibilidade. A Delivery Hero alcançou uma economia de custo de 70% e uma taxa de utilização de instâncias Spot de 80% em seis meses.