Como reduzir custos de um ambiente Cloud

O uso de provedores Cloud revolucionou o ambiente corporativo, deixar de ter a complexidade em manter um data center e ter a possibilidade de contratar infraestrutura sobre demanda, realmente é algo muito vantajoso.

Porém a migração das aplicações para um desses provedores não é uma tarefa simples, geralmente uma migração pode trazer diversos problemas para uma empresa.

Para que um software tenha sucesso em um provedor Cloud, ele deve ser projetado para este ambiente, tanto na visão de arquitetura, quanto na visão de custos.

Image for post

Podemos dizer que um dos maiores benefícios da utilização de provedores Cloud é possibilitar o custo e eficiência, na pratica, isso quer dizer que uma aplicação pode ter uma configuração robusta para atender seus picos de utilização e em momentos de pouca utilização, uma configuração mais simples.

Mesmo sendo um benefício, muitas vezes o custo se torna um terror para a maioria das empresas, a taxa média de desperdício de recurso é de 30 a 40%, existe uma série de possibilidades para que esse problema ocorra:

Operação tradicional

Geralmente quando uma empresa começando a usar provedores Cloud, ela não esta acostumada com a dinâmica do ambiente e com os modelos de cobrança por hora. As vezes operando como se estivessem em um data center tradicional, com configurações pré-definidas sem realizar algum tipo de planejamento de capacidade, causando aquele grande susto no final do mês.

Mal configuração dos recursos

Usando provedores Cloud, é bem comum vermos responsabilidades de configuração de ambiente sairem dos times de infraestrutura e irem para as squads de desenvolvimento, nesse momento podem escapar algumas configurações que reflitam diretamente em custo.

É bem comum configurações realizadas em caracter de testes ficarem ativas por dias ou semanas, gerando aquele grande susto no final do mês.

Falta da cultura de custos

Muitas vezes existe uma equipe cross como a de Infraestrutura ou Arquitetura é responsável por estimar anualmente o custo com Cloud para uma empresa, esse modelo poderia funcionar muito bem em um data center privado, atuando com metodologias tradicionais, porem atuando com metodologias ágeis, com Squads e produtos segregados, com entregas que muitas vezes mudam o direcionamento do produto e com diversos tipos de recursos em um provedor cloud, cada um atuando com um modelo de cobrança diferente, fica muito complicado para essa equipe ter o contexto e manter essas estimativas.

Falta de visibilidade dos custos

Poucas empresas tem uma real visão de como é dividido o seu custo dentro de um provedor Cloud, muitas vezes os pontos de otimizações não são conhecidos ou não estão claros, dificultando uma monitoração e criação de alertas.

Passos para o sucesso

Image for post

Não existe uma receita única para uma boa gestão de custos, cada empresa tem seu contexto e um ambiente personalizado, mas existem uma série de alternativas que foram aplicadas em diversos contextos que podem ajudar em nosso dia a dia, segue abaixo algumas delas:

Ambientes em diferentes regiões

Em todos os provedores Cloud, existem regiões nos EUA, onde alguns recursos chegam a custar até 40% menos comparando a região do Brasil, por isso o ideal é utilizar essas regiões para ambientes de desenvolvimento, homologação e qualidade e até mesmo em ambientes produtivos onde milésimos de segundo por requisição não gerem impacto para o negócio.

Provedores de Serviços Gerenciados

Existem empresas como a MongoDB Atlas, RedisLabs e CloudAMQP que oferecem seu software de forma gerenciada com melhores preços comparando com Azure, AWS ou GCP.

Na pratica escolhemos em qual provedor Cloud e qual região queremos provisionar o serviço, fechamos a comunicação via VPC, garantindo uma melhor custo eficiência sem nenhuma perda técnica.

Gestão de contratos

Existem fornecedores que procuram realizar contratos anuais, com valores fixos, alguns sem considerar o uso em si do serviço e com uma alta taxa de suporte. Procure fornecedores que te cobrem somente o que for utilizado, evite contratos longos, principalmente quando onde não existe previsibilidade de adoção, defina limites de custos de suporte, não é justificável que um suporte seja superior há 20% do custo mensal do serviço oferecido.

Reservas

Para empresas que possuem um uso massivo de maquinas virtuais, com alta previsibilidade de uso, existe o recurso Reserva, onde a empresa paga antecipadamente pelo uso e pode ter um desconto de 30% a 60% de acordo com o período e tipo de reserva.

Instancias SPOT

Em um produto baseado em maquinas virtuais na AWS, que é resiliente, que não guarda estado e que é tolerante a falha ou até mesmo em um produto baseado em Big Data, que possui altas cargas de trabalho, podemos utilizar instancias do tipo SPOT, onde é possível economizar até 90% do custo comparado com uma instancia tradicional.

Nesse modelo, podemos até mesmo configurar ofertas, informando o preço máximo que gostaríamos de pagar por uma instancia, realizando as execuções somente quando a instancia estiver dentro do valor desejado.

Planejamento de capacidade

Image for post

Realize o planejamento de capacidade conforme o percentual de uso, deixe sua aplicação com uma configuração mais robusta no horário de pico e uma configuração menos parruda em momentos de pouca utilização.

Vamos supor que 1 instância do principal micro serviço do ecossistema de uma aplicação custe R$ 0,10 por hora e que para atender seu horário de pico seja necessárias 5 instancias deste micro serviço.

Para identificar o custo individual de cada instância, devemos considerar que ela funcionara 24 horas por dia com uma média de 30 dias por mês, com isso temos um custo médio de R$ 2,40 por dia e R$ 72,00 por mês. Se considerarmos as 5 instância, o custo seria de R$ 360,00 por mês.

Agora vamos considerar que o horário de pico dessa aplicação se passa entre 18:00 e 22:00 horas, sendo necessário 5 instâncias nesse período e nos demais apenas 2 instancias.

Primeiro vamos calcular o custo do horário de pico, 4 horas por dia com uma média de 30 dias por mês, teríamos um custo médio de R$ 0,40 por dia e R$ 12,00 por mês. Se considerarmos as 5 instancias, o custo seria de R$ 60,00 por mês.

Agora vamos calcular o custo das demais horas do dia, 20 horas por dia com uma média de 30 dias por mês, teríamos um custo médio de R$ 2,00 por dia e R$ 60,00 por mês. Se considerarmos as 5 instancias, o custo seria de R$ 120,00 por mês.

Somando os 2 valores, teríamos um custo médio de R$ 180,00 por mês, claro que os dados acima são fictícios, mas o que fica claro é que com essa abordagem poderíamos economizar em média 50% do custo deste micro serviço, resultando em um grande impacto na conta mensal.

Destruição de ambientes não produtivos fora do horário comercial

Image for post

É comum que cada aplicação possua ambientes de desenvolvimento, homologação e qualidade, normalmente esses ambientes são utilizados somente dentro do horário comercial, ficando ociosos fora desse período.

Vamos supor que o custo por hora de todo ecossistema de uma aplicação seja de R$ 10,00 , funcionando 24 horas por dia com uma média de 30 dias por mês, com isso temos um custo médio de R$ 240,00 por dia e R$ 7.200,00 por mês.

Vamos considerar que o horário comercial da companhia é das 07 as 19 horas, com isso em todos os dias úteis as 07:00 horas iriamos executar os scripts que criam o ambiente e todos os dias as 19:00 horas iriamos executar os scripts que destróem os ambientes.

Nesse cenário, o ambiente funcionaria 10 horas por dia com uma média de 22 dias por mês, com isso teríamos um custo médio de R$ 100,00 por dia e R$ 2.200,00 por mês.

Claro que os dados acima são fictícios, mas o que fica claro é que com essa abordagem poderíamos economizar em média 70% do custo por ambiente, resultando em um grande impacto na conta mensal.

Cultura de custos

Image for post

Traga a cultura de custos para o dia a dia de uma Squad, gere uma base documental, faça Dojos ou Talks, mostre a importância do assunto, implemente um ferramental que facilite o dia a dia.

Demonstre que custo é uma responsabilidade de todos, faça algo colaborativo, pois da mesma maneira que é injusto um time cross estimar custos sem o real contexto da Squad ou do produto, lidar com custos não é algo rotineiro para uma Squad e pode gerar resistência.

Com um movimento cultural e um ferramental, a Squad poderá ter uma visão detalhada sobre a aplicação e ambiente, podendo realizar otimizações direcionadas e alertas diários e semanais prevenindo problemas.

Com métricas históricas nas mãos, fica muito mais simples a criação e bugets por aplicação e o desenvolvimento ser orientado a custo.

Conclusão

Na teoria, uma dos maiores benefícios que a utilização de provedores Cloud trouxe para uma empresa é a possibilidade de ser custo eficiente, na pratica isso tem se tornado um grande desafio para toda empresa.

Trazer a cultura de custos para o dia a dia de uma empresa, realizar todo um processo de conscientização, trazer um ferramental e realizar uma série de automatizações direcionadas para custo, são vitais para o dia a dia de qualquer empresa.

Referências

https://aws.amazon.com/pt/blogs/compute/new-amazon-ec2-spot-pricing/

https://aws.amazon.com/pt/ec2/spot/?cards.sort-by=item.additionalFields.startDateTime&cards.sort-order=asc

https://www.cloud8.com.br/

Por Willian da Silva, Arquiteto de soluções no Grupo FCamara


Quer saber mais? Veja todos os artigos que escrevemos dessa série sobre DevOps:
https://blog.fcamara.com.br/categorias/devops/

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *