BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Como o Shopify implementa regras customizadas para escalar automaticamente o Kubernetes

Como o Shopify implementa regras customizadas para escalar automaticamente o Kubernetes

Favoritos

Andy Kwiatkowski do Shopify palestrou na Velocity conference em Berlim sobre por que tiveram que criar um autoscaler personalizado no Kubernetes. As soluções existentes para escalar automaticamente não atendiam as necessidades do Shopify. Principalmente devido ao grande e repentino fluxo de requisições de tráfego recebido. Além disso, era preciso uma solução econômica ao escalar ou configurar condições de dimensionamento complexas.

Segundo Kwiatkowski o website do Shopify tem um grande e repentino fluxo de requisições para campanhas de vendas ou "vendas relâmpago". Vendas relâmpago tipicamente tem o período curto, algo em torno de quinze ou vinte minutos. Logo, era preciso escalar rápido, mas escalar de forma reativa não funcionava. Principalmente porque escalar inclui atividades como ativar novos nós, fazer download de imagens Docker e inicializar aplicativos como daemon. Assim, escalar poderia demorar de dois a vinte minutos em média. Quando o processo de escalar termina, adicionando mais capacidade, as vendas relâmpago podem ter terminado.

O Shopify criou um autoscaler customizável usando Go, ainda não open source, para atender o repentino tráfego de requisições. Também precisavam ter melhores controles para implantar com garantia ou configurar complexas condições para escalar automaticamente como usando dados de tráfego do passado. O autoscaler executa a cada trinta segundos, e então adiciona as réplicas necessárias para o próximo evento de vendas relâmpago.

Escalar também afeta a conta no fim do mês. Portanto, o autoscaler precisa tomar decisões informativas. Logo, para definir quantas réplicas o cluster precisa, o Shopify usa uma fórmula de análise de risco versus custo obtido do HPA no Kubernetes. O Shopify define o quanto ocupado os servidores estarão. Logo, com base em quantos servidores e réplicas existem, a fórmula fornece o número de réplicas desejadas que o cluster deve ter. O objetivo é manter o cluster em utilização o tempo todo.

A redução de um cluster leva tempo, portanto um aumento nos custos. Logo, para ter uma solução eficiente o Shopify teve que melhorar o autoscaler analisando os dados passados. Após executar alguns experimentos, o Shopify notou que ao usar a utilização média da CPU para definir a regra para escalar, como outras soluções usam, não era possível prever picos com precisão.

Logo, para ter uma solução para escalar com custo eficiente, o Shopify teve que melhorar seu austoscaler analisando os dados de tráfego passado. Após executar alguns experimentos, o Shopify notou que ao usar a média de utilização de CPU para definir a regra para escalar, era possível antecipar os picos com precisão. Porém ao usar a mediana de utilização da CPU, eles estavam obtendo melhores resultados, apesar de terem capacidade extra momentaneamente. Embora, ao ter picos mais longos (trinta minutos), o autoscaler não esteja adicionando mais réplicas. Para resolver esse problema, usaram uma média ponderada exponencial (EWA) para utilização da CPU, na qual novos valores são mais significativos que os anteriores. Portanto, o autoscaler adiciona mais réplicas rapidamente.

O autoscaler do Shopify calcula ambos, a mediana e utilização EWA da CPU. Se não tiver diferença significativa, o autoscaler usa a utilização mediana da CPU. Caso contrário, usa a utilização EWA da CPU. Dessa forma o Shopify adiciona somente as réplicas necessárias no momento necessário.

Finalmente, Kwiatkowski disse que às vezes os dados coletados possuem erros como valores null, zero, dados obsoletos, ou dados esparsos. Então pra evitar problemas ao escalar, sempre escalam para a capacidade máxima para ficarem seguros. Além disso, configuram um valor mínimo de réplica para evitar problemas ao escalar.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT