Reduzindo os custos do Azure

Um bom desenvolvedor não é aquele que pensa apenas em tecnologias, padrões, escalabilidade, etc, mas é aquele que também pensa nos custos, que se coloca no lugar do dono, que se preocupa com o investimento e com a fatura que chega todo mês.

Neste artigo vou listar algumas dicas de economia, melhores configurações e pontos de atenção no que diz respeito a redução de custos no Azure.

Sempre achei o Azure uma plataforma fantástica, tudo que uma empresa precisa ele oferece de forma segura e com um design muito simples e fácil de gerenciar, mas as vezes a escolha de um serviço e configuração nele nem sempre será a melhor, é preciso estudar a ferramenta, entender os valores, utilizar a calculadora.

Todas as dicas a seguir fazem parte de um checklist de redução de custos, sem perder performance, que sigo com todos os clientes. Algumas ações são de retorno imediato, outras já envolvem planejamento de migração, estudos e testes antes de colocar em produção.

Agenda

  1. Monitorando os custos da nuvem
  2. Redução do Azure SQL Database
  3. Redução do Service Plan
  4. Redução do Log Analytics (Application Insights)
  5. Redução do Azure Redis Cache
  6. Performance das aplicações

1 — O primeiro passo é acompanhar os gastos do seu Azure, o jeito mais simples de verificar isso é clicando em Subscription, e em Overview já é possível acompanhar alguns dados.

Na imagem abaixo, tirei como exemplo minha subscription, onde na tela inicial consigo identificar os recursos mais caros do meu ambiente.

Dica 1: Em alguns casos, algumas empresas não contratam o Azure no formato Pay-As-You-Go e sim uma outra empresa para fazer a administração e controle, nesse caso é necessário solicitar à essa empresa um relatório de consumo para controle dos custos.

Dica 2: Configure e utilize o Azure Cost Management + Billing com ele e possível criar gráficos e alertas de utilização.

2 — O Azure SQL é um importante serviço a ser utilizado, mas o cuidado principal é acompanhar a telemetria para ajustar a melhor configuração. Fique sempre de olho nas métricas e faça o resize se necessário.

Na imagem abaixo foi verificado que nos últimos 7 dias meu banco utilizou no máximo 35% de processamento, sendo assim eu posso reduzir o processamento clicando no menu Configure.

Antes:

Depois:

Com a redução de 400 DTUs para 100 DTUs é possível ter a economia de +/- R$ 1.500 mensais.

Dica 1: Tenha uma rotina de manutenção do seu Azure SQL, desfragmente e crie índices se necessário, fique de olho no item de menu Performance recommendations para entender as recomendações e aplicar se necessário. Para a redução do processamento é preciso ter segurança que o banco esteja sempre otimizado.

Dica 2: Crie alertas caso o banco tenha pico de utilização de DTU, lock, disco, etc, assim você sempre ficará por dentro do comportamento do seu banco para tomada de decição. Para criar os alertas basta clicar no item Metrics, e depois da configuração feita, clicar em New alert rule.

3 — Service Plan segue mais ou menos as dicas do Azure SQL, o principal é acompanhar as métrica de consumo da CPU e memória, criar alertas para entender onde está o gargalo e só depois planejar a redução no item de menu Scale up.

No meu caso eu verifiquei que tanto a CPU e memória não passava de 25% de utilização, então reduzi meu Service Plan de S3 (400 ACU e 7 GB de memória) para o S2 (200 ACU e 3.5 GB de memória).

Com a redução de 400 ACU para 200 ACU é possível ter a economia de +/- R$ 750 mensais.

Dica 1: Se possível, sempre utilize Service Plan em Linux, além de ter o custo reduzido comparado com o Service Plan Windows, ele é muito mais performático.

Dica 2: Se estiver utilizando o Service Plan em Linux, utilize instâncias Premium (P2, P3) ao invés de Standard (S2, S3), além de ser mais econômico, ele trabalha com HD SSD, deixando as aplicações mais performática.

Dica 3: Agrupe algumas aplicações em um único Service Plan, mas lembre-se sempre de acompanhar o processamento e memória de cada aplicação.

4 — Log Analytics é essencial para acompanhar a saúde dos seus recursos contratados no Azure, com ele é possível auditar a utilização do Azure SQL, Requests do Application Gateway, Redis, etc, é possível unificar todas telemetrias em um único lugar… mas é MUITO caro em alguns casos.

O primeiro passo é verificar quais subscriptions e resources estão sendo monitorados pelo Log Analytics e desmarcar o que você não quer que seja auditado.

Configurando para gravar somente o que é mais importante para seu negócio no Log Analytics, é possível economizar +/- R$2.000 mensais (dependendo do cenário).

Dica 1: Tenha atenção na utilização do Application Insights, ele é gratuito até um certo limite, depois disso ele passa a ser cobrado pelo Log Analytics, então tome cuidado na quantidade de informações que está logando, grave apenas o essencial para seu negócio e sempre monitore o custo acessando o item de menu Cost and estimated costs.

Dica 2: Caso utilize aplicações em .NET Core, instale o Serilog, com ele é possível configurar um filtro de mensagens para o Application Insights, evitando o envio de logs sem muita importância e otimizando o custo do Log Analytics.

Dica 3: Pense na utilização do Elastic Cloud para trabalhar com a observabilidade do seu ambiente Azure, ele é uma stack completa e muito mais econômico do que o Log Analytics.

5 — Azure Redis Cache é extremamente útil e só vejo benefícios em utilizá-lo, porém vale lembrar que ele não deve ser utilizado como banco de dados, e sim como cache em memória.

O Redis é uma boa opção para cenários que você precisa de alta performance para gravação e/ou leitura de dados baseado em chave-valor, sendo ele muito utilizado para servir como um servidor de cache para a aplicação.

Seguindo essa ideia, não é necessário utilizar a versão Premium do Redis para trabalhar com cache, a versão Standard atende em quase todos os casos. Para reduzir clique em Scale e selecione C1 Standard.

Configurando o Redis na versão Standard é possível ter uma economia de +/- R$1.000 mensais.

Dica 1: Em vários casos não é necessário utilizar o Redis como serviço no Azure, sendo possível subir uma imagem Docker e utiliza-lo como um app service, economizando na contratação de um serviço.

6 — Para que toda redução seja feita com segurança, antes de tudo é preciso otimizar as aplicações para obter o máximo de performance, então o código claro, organizado e estruturado conta muito não só para redução de custos mas também na saúde e motivação do time em trabalhar com código limpo e escalável.

Enfim, se preocupar com os custos não é papel apenas da gestão e sim do time. O custo deve ser ponto de atenção em toda planning e tomada de decisão. Refactoring de aplicações deve ser feito periodicamente com intenção de otimizar a performance e até para entender qual o valor do código na fatura.

Deixe uma resposta