Descubra como reduzir até 75% dos seus custos com cloud na AWS utilizando a plataforma de integração de sistemas da Wevo

Por: Marcelo Aguiar
(Co-fundador e CTO na Wevo)

Quando falamos de infraestrutura em Cloud, o senso comum é pensar que migrando para nuvem automaticamente seus custos irão diminuir, porém, na prática não é exatamente assim que ocorre. A chave do sucesso é fazer o bom uso desta infraestrutura e, na minha opinião, uma das grandes vantagens de utilizar infraestrutura em Cloud é o poder da elasticidade, podendo aumentar e reduzir sua infraestrutura conforme a demanda, e claro, pagar efetivamente apenas por aquilo que estiver sendo utilizado, sem a necessidade de dimensionar sua infraestrutura pelo pico, ou pior, acima do pico, com o objetivo de mitigar problemas de performance e disponibilidade, que é o que acontece se você tem infraestrutura “dentro de casa” ou em modelo tradicional de contratação em um datacenter.

Sobre elasticidade e, como automatizar este processo, vou deixar para falar em outro artigo. Neste momento em particular quero abordar um tema específico, que quase não encontrei muita informação a respeito quando precisei.

Falando mais especificamente de AWS, existe um recurso, que na minha opinião é fantástico que são as máquinas SPOT. A AWS administra a ociosidade de suas máquinas e as disponibiliza numa espécie de “leilão” onde é possível contratar e utilizar estas máquinas a um custo que gira em torno de 25% do valor da contratação tradicional da mesma máquina se for Linux ou 50% do valor se o sistema operacional for Windows.

Quer dizer então que posso economizar de 25% a 50% do meu custo de máquina (EC2) na AWS? 

Sim, mas existem pontos de atenção. Tome nota:

A principal desvantagem destas máquinas SPOT é que tratando-se de capacidade ociosa da AWS, se a AWS precisar da máquina, ela vai desligar a sua instância para que ela possa utilizar. Ou seja, a sua aplicação fica sem a máquina, pelo menos por um tempinho.

Nesta altura do texto, pode ser que você tenha saído da esperança absoluta de economizar 50% do valor gasto com EC2 para a total decepção de que não pode se dar ao luxo de ver sua aplicação ficar desligada por um tempo e talvez já esteja pra desistir de ler o restante porque acha não ser algo aplicável para sua realidade, mas tenha calma, existe esperança.

Concordo que, na maior parte das vezes, não podemos conviver com o fato da nossa instância ficar desligada, mas e se combinarmos a utilização destes tipos de máquinas? (combinação esta, que inclusive, pode ser bem agressiva dependendo do cenário)

Para ilustrar vou contar um pouco sobre uma das camadas da nossa aplicação e como utilizamos este recurso de combinar a utilização destes tipos de máquinas.

Para geração de alguns logs de nossa aplicação, nós utilizamos processamento através de fila, ou seja, a aplicação ao gerar os logs insere em uma fila de processamento (mensageria), o que acontece em fração de milisegundos, não prejudicando assim, a tarefa em si com algo, menos relevante. Em outra “ponta”, temos outro componente do nosso sistema, que chamamos de “worker”, responsável por “escutar” as filas e realizar o processamento e indexação dos logs de uma forma distribuída.

No nosso caso, ainda temos o dimensionamento automatizado do “autoscaling”, que monitora a fila de processamento e ajusta o número de “workers” dinamicamente, mas isso também vou deixar pra explicar no outro artigo para não perdermos nosso foco. Então, para seguirmos com este exemplo, vamos imaginar que nossa aplicação utiliza 10 workers, portanto, 10 instâncias EC2.

Para efeito de simulação, vamos considerar que cada instância desta custe cerca de $30/mês no modelo de contratação “on-demand” (modelo de contratação tradicional na AWS).

Neste exemplo, o custo da estrutura é de $300/mês.

Agora vamos pensar diferente. Se ao invés de utilizar 10 instâncias EC2 sob-demanda, trabalhássemos com uma combinação utilizando máquinas SPOT, o custo da estrutura seria outro (relevantemente menor):

-2 instâncias ON-DEMAND ao custo de $30/mês cada, total de $60/mês

-8 instâncias SPOT Linux custando cada uma delas 25% do valor de uma instância ON-DEMAND, ou seja: 8 x $30 x 25%, apenas $60!!!

Isso mesmo, 8 instâncias spot custam o equivalente a 2 instâncias ON-DEMAND.

No total, o custo de infraestrutura da sua aplicação seria de $120/mês, contra $300/mês se você optasse utilizar apenas instâncias ON-DEMAND.

Mas e se a combinação fosse ainda mais agressiva? Considere esta configuração:

-0 (ZERO) instâncias ON-DEMAND

-10 instâncias SPOT Linux custando cada uma delas 25% do valor de uma instância ON-DEMAND, ou seja: 10 x $30 x 25%, apenas $75/mês!!!

Seria fantástico, não? Uma bela redução de 75% nos seus custos com cloud na AWS. 

Você deve estar se perguntando agora: “Isso tudo é ótimo, mas e se minha instância SPOT cair, o que eu faço? Neste caso, você teria que habilitar uma instância ON-DEMAND e assim que a SPOT retornar, você desabilitaria a instância ON-DEMAND e habilitaria a instância SPOT. Simples assim, e a mágica está feita, redução de custo, mantendo-se a disponibilidade.

Mas é claro que fazer isso manualmente não é prático, tão pouco inteligente, é exatamente neste ponto onde a automação é a grande chave do sucesso. 

Para adotar esta prática, uma plataforma de integração é necessária. Em nosso caso, utilizamos nossa própria plataforma de integração Wevo, que foi configurada para monitorar nossos pares de “autoscaling groups”  (SPOT e ON-DEMAND) e ficam analisando se a instância SPOT foi requisitada pela AWS. Se foi, nosso fluxo de integração requisita automaticamente o incremento de instância como ON-DEMAND com objetivo de suprir a demanda e quando a máquina SPOT retorna ele faz exatamente o contrário, e desliga as máquinas ON-DEMAND.

Trata-se de um fluxo de integração bastante simples, porém, muito relevante, pois, traz eficiência financeira para a sua operação de cloud. Inteligente, e prático, não é mesmo? Veja abaixo como este fluxo é construído na Plataforma de Integração Wevo:

E falando de AWS, em minha experiência, as requisições de máquina SPOT pela AWS acontecem de maneira muuuuuuito gradual (normalmente é 1 aqui, outra ali) e duram normalmente poucos minutos, desta forma, a estratégia acima, normalmente é bastante aplicável, em termos práticos, e sua aplicação e empresa podem sim economizar muito com cloud utilizando este tipo de estratégia.

Se você tem interesse em discutir mais sobre este tema, entre em contato comigo, ou deixe sua dúvida nos comentários.

Um abraço.

Leave a comment