FinOps: como gerenciar custos na era da computação em nuvem 

O gerenciamento de custos de nuvem, ou FinOps, como é popularmente chamado, tem cada vez mais se tornado uma atividade recorrente e crucial para as empresas. Com vastas opções de serviços disponíveis, como na AWS, não é difícil perder o controle dos custos que, na maioria das vezes, vem em forma de cobranças não esperadas que geram uma grande pressão orçamentária.  

Por esse motivo, buscamos cinco práticas que podem te ajudar no seu dia a dia e, principalmente, manter os custos de nuvem mais previsíveis e condizentes com sua utilização. Além de apresentar as ferramentas, iremos apresentar alguns conceitos que podem te ajudar a ter uma visão melhor da área de economia, afinal, é impossível falar de otimização de custo sem falar de Economia. 

1. Análise de utilização de recursos  

Muito se fala de otimização de custos, para isso temos que olhar para os serviços que utilizamos e avaliar seus níveis de utilização e dimensionamento. A abordagem ideal passa por três pontos: 

Identificação de recursos subutilizados  

Com a ajuda do Cost Explorer você pode identificar instancias EC2 e RDS que estão superdimensionadas. É importante perceber que uma instância que opera constantemente em 20% da sua capacidade tem grandes chances de estar superdimensionada. 

Ajuste o tamanho dos recursos  

Ajuste com base na real utilização dos recursos, sejam EC2 ou RDS, dessa forma você irá otimizar o uso das instâncias para que fiquem de acordo com sua real necessidade. 

Implementar autoscaling 

O autoscaling é um grande aliado nas horas de grande demanda. Ele vai ajustar automaticamente o tamanho dos recursos com base no aumento de consumo, isso assegura que você pague apenas pelos picos de demanda e não todo o tempo. 

Uma forma de entender essa análise de utilização de recursos é saber o conceito de custo variável. Custos variáveis são aqueles custos que mudam com o nível de utilização dos recursos, por exemplo, na AWS temos o tempo de execução de uma EC2, o volume armazenado no S3, entre outros. Uma boa otimização desses recursos vai fazer com que o delta (percentual de variação) seja cada vez menor, ajudando na previsibilidade e evitando surpresas. 

2. Alocação de custos e uso de tags  

O uso de tags nos recursos é a forma mais eficiente de classificar e rastrear seus custos de nuvem. Confira abaixo duas ações que podem te ajudar: 

Desenvolvimento de estratégia 

Desenvolver uma estratégia para as tags garante que todos os recursos provisionados estejam classificados de forma que ajude a sua identificação, como, por exemplo: ambiente (Dev, Staging, Production), projeto, departamento, unidade organizacional, entre outros. É importante que as tags te deem visibilidade de qual parte do seu produto aquele recurso está atrelado, e manter uma boa gestão das tags pode ser um indicativo rápido para identificar recursos que sequer estão sendo utilizados. 

Relatórios de alocação de custos 

Com as tags, é possível gerar relatórios detalhados de alocação de custos. Dessa forma você obtém melhor entendimento da distribuição dos custos de cada projeto, departamento, ambiente, entre outros. Isso facilita a identificação de ineficiências e como saná-las. 
 
O uso de tags correto nos recursos é fundamental para ter visibilidade dos custos e da melhor forma de gerenciá-los, pois existem serviços que possuem custos fixos e variáveis simultaneamente. Custo fixo é aquele custo ao qual não existe uma variação atrelada, que tem um custo constante independente do uso. Já o variável são custos que estão relacionados ao volume de uso: quanto maior é o volume de uso, maior será o custo.  

3. Opção de compra de instancias  

Melhorar a forma que você compra instâncias EC2 pode ser decisivo na sua redução de custos. 

Reserved instances e savings plans 

Para todas as cargas de trabalho previsíveis da sua organização, considere a compra de instâncias reservadas e a contratação de savings plans. Essas opções oferecem descontos significativos em comparação ao preço on-demand. Se possível, defina uma padronização de família de instâncias, pois isso pode potencializar a economia de recursos junto as opções anteriores. 

Instâncias spot 

Sempre que possível, de preferência para instâncias spot, principalmente para cargas de trabalho que são flexíveis e tolerante a falhas. Essas instâncias são ideais para atividades não críticas, como processos de CI/CD, processamento em lotes, entre outras. 
 
É importante ressaltar que, ao escolher uma instância spot você vai pagar um valor significativamente menor pela contratação daquela EC2, mas pode sofrer uma interrupção daquela instância. É importante avaliar cuidadosamente as escolhas e fazer comparações para poder maximizar os benefícios, sempre considerando os riscos envolvidos. O custo de oportunidade é o valor da melhor alternativa que se abdica ao tomar uma decisão. É bom sempre avaliar qual é a alternativa que você está abrindo mão ao tomar uma decisão, ao escolher uma instancia spot para economizar 40%, por exemplo, você está assumindo um risco de interrupção desse serviço, essa interrupção pode gerar um prejuízo maior do que os 40% economizados? Esse é um cenário que vale assumir esse risco? São essas perguntas que devemos nos fazer para guiar melhor nossas decisões.

4. Otimização de data transfer e armazenamento  

Minimizar os custos de data transfer e armazenamento pode gerar economias substanciais. 

Otimizar classes de Armazenamento do S3  

Dados que são pouco acessados podem ser movidos para classes de armazenamento mais baratas, como o S3 Glacier e Infrequent Access. Dessa forma você consegue uma redução drástica de custo sem comprometer a disponibilidade dos dados. 

Minimizar os custos de data transfer 

Reduza a transferência de dados entre regiões da AWS. O Cloudfront é um grande aliado na hora de armazenar em cache e entregar conteúdos de forma eficiente e adequada, evitando grandes transferências de dados. Se atente aos recursos que só se comunicam dentro da rede interna da AWS e os torne privados para evitar que esse dado saia para a internet e volte para seu ambiente, cobrando assim o data transfer. 
 
Custo marginal é o custo de produção de uma unidade extra de um bem ou serviço, e na AWS podemos traduzir isso no armazenamento. O custo adicional de armazenar mais dados ou transferir mais dados entre regiões. As otimizações mencionadas acima podem reduzir esses custos e melhorar os ganhos de escala do seu negócio. 

5. Revisão e acompanhamento 

A revisão e acompanhamento regular dos custos é parte fundamental de qualquer política de redução e otimização. Criar rotinas para essa revisão e definir responsáveis é parte fundamental para um bom acompanhamento e identificação de novas possibilidades de redução. É um trabalho perene que garante que sempre estejamos atentos e com o domínio dos custos de nuvem. 

Revise mensalmente os custos 

A revisão regular através de relatórios de faturamento e das ferramentas da AWS podem ajudar a identificar tendências, anomalias e oportunidades de redução 

Detecção de anomalias de custo 

Detecção de anomalias de custo é uma ferramenta fundamental do processo de acompanhamento, pois identifica automaticamente padrões de gasto incomuns que, se identificados no início, podem evitar um aumento significativo no custo repentino. 

Melhoria contínua 

Utilize todas as ferramentas tratadas aqui para refinar e melhorar continuamente as estratégias de otimização e redução. Esses feedbacks recorrentes ajudam a manter os custos de nuvem em um patamar ótimo e de desempenho elevado. 

Essas são algumas dicas para uma abordagem consciente e eficiente na gestão dos seus custos de nuvem. Adotar essas práticas pode não apenas reduzir gastos desnecessários, mas também otimizar a utilização de recursos, melhorar a previsibilidade financeira e aumentar a eficiência operacional. Além dessas dicas, gostaria de uma ajuda mais assertiva com custos de nuvem? Entre em contato com a Elven que podemos te ajudar. 

Sobre o autor: 
Augusto Galvão Baldanza, mineiro de Belo Horizonte, é bacharel em Ciências Econômicas pelo Centro Universitário UNA e atua desde 2021 na área de DevOps. Hoje é head de SRE na ElvenWorks.   

FinOps: como gerenciar custos na era da computação em nuvem 

O gerenciamento de custos de nuvem, ou FinOps, como é popularmente chamado, tem cada vez mais se tornado uma atividade recorrente e crucial para as empresas. Com vastas opções de serviços disponíveis, como na AWS, não é difícil perder o controle dos custos que, na maioria das vezes, vem em forma de cobranças não esperadas que geram uma grande pressão orçamentária.  

Por esse motivo, buscamos cinco práticas que podem te ajudar no seu dia a dia e, principalmente, manter os custos de nuvem mais previsíveis e condizentes com sua utilização. Além de apresentar as ferramentas, iremos apresentar alguns conceitos que podem te ajudar a ter uma visão melhor da área de economia, afinal, é impossível falar de otimização de custo sem falar de Economia. 

1. Análise de utilização de recursos  

Muito se fala de otimização de custos, para isso temos que olhar para os serviços que utilizamos e avaliar seus níveis de utilização e dimensionamento. A abordagem ideal passa por três pontos: 

Identificação de recursos subutilizados  

Com a ajuda do Cost Explorer você pode identificar instancias EC2 e RDS que estão superdimensionadas. É importante perceber que uma instância que opera constantemente em 20% da sua capacidade tem grandes chances de estar superdimensionada. 

Ajuste o tamanho dos recursos  

Ajuste com base na real utilização dos recursos, sejam EC2 ou RDS, dessa forma você irá otimizar o uso das instâncias para que fiquem de acordo com sua real necessidade. 

Implementar autoscaling 

O autoscaling é um grande aliado nas horas de grande demanda. Ele vai ajustar automaticamente o tamanho dos recursos com base no aumento de consumo, isso assegura que você pague apenas pelos picos de demanda e não todo o tempo. 

Uma forma de entender essa análise de utilização de recursos é saber o conceito de custo variável. Custos variáveis são aqueles custos que mudam com o nível de utilização dos recursos, por exemplo, na AWS temos o tempo de execução de uma EC2, o volume armazenado no S3, entre outros. Uma boa otimização desses recursos vai fazer com que o delta (percentual de variação) seja cada vez menor, ajudando na previsibilidade e evitando surpresas. 

2. Alocação de custos e uso de tags  

O uso de tags nos recursos é a forma mais eficiente de classificar e rastrear seus custos de nuvem. Confira abaixo duas ações que podem te ajudar: 

Desenvolvimento de estratégia 

Desenvolver uma estratégia para as tags garante que todos os recursos provisionados estejam classificados de forma que ajude a sua identificação, como, por exemplo: ambiente (Dev, Staging, Production), projeto, departamento, unidade organizacional, entre outros. É importante que as tags te deem visibilidade de qual parte do seu produto aquele recurso está atrelado, e manter uma boa gestão das tags pode ser um indicativo rápido para identificar recursos que sequer estão sendo utilizados. 

Relatórios de alocação de custos 

Com as tags, é possível gerar relatórios detalhados de alocação de custos. Dessa forma você obtém melhor entendimento da distribuição dos custos de cada projeto, departamento, ambiente, entre outros. Isso facilita a identificação de ineficiências e como saná-las. 
 
O uso de tags correto nos recursos é fundamental para ter visibilidade dos custos e da melhor forma de gerenciá-los, pois existem serviços que possuem custos fixos e variáveis simultaneamente. Custo fixo é aquele custo ao qual não existe uma variação atrelada, que tem um custo constante independente do uso. Já o variável são custos que estão relacionados ao volume de uso: quanto maior é o volume de uso, maior será o custo.  

3. Opção de compra de instancias  

Melhorar a forma que você compra instâncias EC2 pode ser decisivo na sua redução de custos. 

Reserved instances e savings plans 

Para todas as cargas de trabalho previsíveis da sua organização, considere a compra de instâncias reservadas e a contratação de savings plans. Essas opções oferecem descontos significativos em comparação ao preço on-demand. Se possível, defina uma padronização de família de instâncias, pois isso pode potencializar a economia de recursos junto as opções anteriores. 

Instâncias spot 

Sempre que possível, de preferência para instâncias spot, principalmente para cargas de trabalho que são flexíveis e tolerante a falhas. Essas instâncias são ideais para atividades não críticas, como processos de CI/CD, processamento em lotes, entre outras. 
 
É importante ressaltar que, ao escolher uma instância spot você vai pagar um valor significativamente menor pela contratação daquela EC2, mas pode sofrer uma interrupção daquela instância. É importante avaliar cuidadosamente as escolhas e fazer comparações para poder maximizar os benefícios, sempre considerando os riscos envolvidos. O custo de oportunidade é o valor da melhor alternativa que se abdica ao tomar uma decisão. É bom sempre avaliar qual é a alternativa que você está abrindo mão ao tomar uma decisão, ao escolher uma instancia spot para economizar 40%, por exemplo, você está assumindo um risco de interrupção desse serviço, essa interrupção pode gerar um prejuízo maior do que os 40% economizados? Esse é um cenário que vale assumir esse risco? São essas perguntas que devemos nos fazer para guiar melhor nossas decisões.

4. Otimização de data transfer e armazenamento  

Minimizar os custos de data transfer e armazenamento pode gerar economias substanciais. 

Otimizar classes de Armazenamento do S3  

Dados que são pouco acessados podem ser movidos para classes de armazenamento mais baratas, como o S3 Glacier e Infrequent Access. Dessa forma você consegue uma redução drástica de custo sem comprometer a disponibilidade dos dados. 

Minimizar os custos de data transfer 

Reduza a transferência de dados entre regiões da AWS. O Cloudfront é um grande aliado na hora de armazenar em cache e entregar conteúdos de forma eficiente e adequada, evitando grandes transferências de dados. Se atente aos recursos que só se comunicam dentro da rede interna da AWS e os torne privados para evitar que esse dado saia para a internet e volte para seu ambiente, cobrando assim o data transfer. 
 
Custo marginal é o custo de produção de uma unidade extra de um bem ou serviço, e na AWS podemos traduzir isso no armazenamento. O custo adicional de armazenar mais dados ou transferir mais dados entre regiões. As otimizações mencionadas acima podem reduzir esses custos e melhorar os ganhos de escala do seu negócio. 

5. Revisão e acompanhamento 

A revisão e acompanhamento regular dos custos é parte fundamental de qualquer política de redução e otimização. Criar rotinas para essa revisão e definir responsáveis é parte fundamental para um bom acompanhamento e identificação de novas possibilidades de redução. É um trabalho perene que garante que sempre estejamos atentos e com o domínio dos custos de nuvem. 

Revise mensalmente os custos 

A revisão regular através de relatórios de faturamento e das ferramentas da AWS podem ajudar a identificar tendências, anomalias e oportunidades de redução 

Detecção de anomalias de custo 

Detecção de anomalias de custo é uma ferramenta fundamental do processo de acompanhamento, pois identifica automaticamente padrões de gasto incomuns que, se identificados no início, podem evitar um aumento significativo no custo repentino. 

Melhoria contínua 

Utilize todas as ferramentas tratadas aqui para refinar e melhorar continuamente as estratégias de otimização e redução. Esses feedbacks recorrentes ajudam a manter os custos de nuvem em um patamar ótimo e de desempenho elevado. 

Essas são algumas dicas para uma abordagem consciente e eficiente na gestão dos seus custos de nuvem. Adotar essas práticas pode não apenas reduzir gastos desnecessários, mas também otimizar a utilização de recursos, melhorar a previsibilidade financeira e aumentar a eficiência operacional. Além dessas dicas, gostaria de uma ajuda mais assertiva com custos de nuvem? Entre em contato com a Elven que podemos te ajudar. 

Sobre o autor: 
Augusto Galvão Baldanza, mineiro de Belo Horizonte, é bacharel em Ciências Econômicas pelo Centro Universitário UNA e atua desde 2021 na área de DevOps. Hoje é head de SRE na ElvenWorks.