O blog da AWS

Otimização de custo em ambientes Microsoft na AWS: por onde começar

Por Neuton Assis, Enterprise Solutions Architect, AWS AGS

Implantar e manter um ambiente otimizado considerando as boas práticas do Well-Architected Framework é um desafio para toda organização. Nessa postagem falaremos sobre boas práticas para manter ambientes Microsoft na AWS otimizados, focando mais exclusivamente no pilar de otimização de custo do Well-Architected Framework.

Essa postagem visa trazer uma visão geral das boas práticas mencionadas no Microsoft on AWS Cost Optimization (MACO), bem como da jornada necessária para suportar um mecanismo de melhoria contínua do ambiente, em busca da otimização de custos.

Tópicos que serão abordados

A seguir, abordaremos os seguintes tópicos:

  • Principais recomendações
  • Planejamento e fundação
  • Otimização de licença
  • Otimização de cargas de trabalho
  • Conclusão

Principais recomendações

Iremos focar aqui em recomendações específicas para cargas de trabalho da Microsoft que são de fácil implementação, têm impacto significativo e estabelecem bases para otimização contínua por meio da modernização. Essas recomendações são frequentemente o ponto de partida em nossas discussões sobre estratégias de otimização de custos com os clientes, servindo como base para abordar outras áreas posteriormente.

Abaixo mencionamos algumas recomendações, seguidas do percentual de otimização de custo estimado para cada uma delas:

  • Dimensione e modernize seu ambiente usando Avaliação de Otimização e Licenciamento (OLA): 35%
  • Dimensione cargas de trabalho do Windows usando AWS Compute Optimizer: 25%
  • Considere usar hosts dedicados Amazon EC2 para cargas de trabalho Bring You Own License (BYOL) Windows e SQL: 30%
  • Remova os custos de SQL Server para cargas de trabalho não produtivas usando Developer Edition: 20%
  • Otimize o licenciamento do SQL Server on AWS: até 50%
  • Controle cargas de trabalho com Amazon EC2 Instance Scheduler on AWS: até 40%
  • Selecione o tipo de instância correto para cargas de trabalho do Windows: entre 10% e 30%
  • Refatore para .NET moderno e mude para Linux: entre 10% e 20%
  • Otimize o Windows em Amazon EC2 usando Savings Plans: até 40%
  • Migre volumes EBS gp2 para gp3: até 20%

Planejamento e fundação

Estabeleça uma boa estrutura de contas e crie um mecanismo de governança centralizado com o AWS Organization, esse é o primeiro passo fundacional para gestão de um ambiente com múltiplas contas.

Crie limites de proteção sobre toda a organização com o AWS Control Tower, definindo SCP (Service Control Policy) sobre contas existentes e contas que serão criadas futuramente. Esse modelo ajuda a controlar o que é possível provisionar de recursos no ambiente e impedir que recursos superdimensionados sejam criados desnecessariamente, além de servir de base inclusive para o estabelecimento de boas práticas de tags para controle de custo.

Tire proveito de serviços como o AWS Config para identificar, auditar e avaliar configurações dos recursos AWS existentes na organização.

Automatize todos os controles que puderem ser automatizados. Esse requisito atende a um outro pilar do Well-Architected Framework (Excelência Operacional) mas também ajuda, e muito, na otimização de custos. Portanto, dê preferência a controles preventivos (SCPs) ao invés de controles detectivos (inventário do AWS Config).

O AWS Service Catalog permite criar catálogo de serviços (CloudFormations) com os requisitos de segurança e conformidade da sua organização e os disponibiliza para as equipes com permissões sobre a implantação do que foi criado (e não sobre cada recurso provisionado separadamente). Este pode ser um excelente passo no sentido de controlar serviços e especificações que estão homologados pela organização para serem utilizados pelos times, além de possibilitar automatizar requisitos padrões mandatórios para uma nova conta.

Otimização de licença

Aqui exploramos quais as oportunidades temos de otimização de licenças, considerando aspectos como a real necessidade, o dimensionamento correto e novos tipos de licenciamentos disponíveis em nuvem. O Optimization and Licensing Assessment (OLA) é um programa subsidiado pela AWS que ajuda clientes (novos ou não) a construírem uma estratégia de migração ou avaliação de cargas de trabalho existentes, visando encontrar possibilidades de redução custos com licenciamento.

O OLA está disponível na versão Lite, com duração entre 1 e 5 dias, e focado em máquinas virtuais (VMs) executando em hypervisors VMware, ou na versão Full, com duração entre 30 e 45 dias, voltada para ambientes de maior complexidade com múltiplos provedores de nuvem, ambientes híbridos ou mistos com servidores virtuais e físicos. Esse levantamento é geralmente realizado pela rede de parceiros AWS e conta com o apoio de ferramentas que ajudam a automatizar o processo, com ou sem a utilização de agentes para realizaçao do mapeamento.

Otimização de workloads

O Amazon Elastic Compute Cloud (EC2) foi projetado para ser uma plataforma de computação em nuvem altamente flexível e escalável, ideal para executar cargas de trabalho do Windows. Além disso, serviços como o Amazon Elastic Container Service (ECS), AWS Managed Microsoft AD, AWS App2Container, Amazon Elastic Block Store (EBS), Amazon FSx for Windows File Server (FSxW) e Amazon Storage Gateway trazem a flexibilidade necessárias para os diversos tipos de workloads Microsoft, executados em container ou não.

Abaixo um resumo dos principais pontos de recomendação para se ter em mente em cada tipo de workload.

Windows on EC2:

  • Utilize o Instance Scheduler on AWS para programar quando instâncias do Amazon EC2 ou do Amazon RDS estarão ligadas ou desligadas, especialmente para ambientes de homologação/desenvolvimento.
  • Dimensione corretamente as instâncias do Amazon EC2 baseadas no seu workload e utilize o AWS Compute Optimizer para visualizar as recomendações identificadas no ambiente, baseado no padrão de utilização de cada instância.Este item possui grande potencial de redução de custos.
  • Em cenários de migração onde já houve a aquisição das licenças Windows e/ou SQL Server, considere mover as cargas de trabalho para Amazon EC2 Dedicated Hosts. Essa opção pode viabilizar a migração das licenças sem afetar a conformidade do ambiente, dado que oferece visibilidade sobre o núcleo físico dos processadores da instância.
  • Otimize o custo das instâncias com Savings Plans, que oferece um desconto significativo em relação ao preço On-Demand. Verifique as recomendações disponíveis no Billing and Cost Management para ver as oportunidades de economia com a contratação de reserva sob o que está sendo executado On-Demand. Priorize fazer reservas para workloads que já foram otimizados e não sofrerão redução de demanda sobre o período contratado.

SQL Server:

  • Verifique se você está fazendo bom uso do tipo de licença do SQL Server com o apoio do AWS Compute Optimizer (ACO). Após corretamente configurado, é possível verificar, por exemplo, se uma licença SQL Server Enterprise não está sendo utilizada como esperado, e obtermos uma recomendação para o downgrade desta licença para SQL Server Standard Edition. Em linhas gerais, a licença Standard é 68% mais barata que a licença Enterprise, enquanto a licença Web é 86% mais barata que a licença Standard e 95% mais barata que a licença Enterprise.
  • O AWS Compute Optimize identifica automaticamente instâncias do Amazon EC2 que estão executando cargas de trabalho do SQL Server e efetua recomendações de redimensionamento para instâncias superdimensionadas.
  • Escolha a arquitetura correta baseado nos seus requisitos de negócio para Recovery Point Objective (RPO) e Recovery Time Objective (RTO). Por exemplo, o uso de Basic Availability Groups em vez de Always On Availability Groups reduz o custo de licenciamento do SQL Server entre 65-75%, eliminando a necessidade da licença SQL Server Enterprise Edition.
  • Combine múltiplas instâncias do SQL Server em uma única instância do Amazon EC2, caso cada instância demande 2 núcleos de CPU ou menos. Como o licenciamento do SQL Server é por núcleo e o mínimo a ser licenciado são 4 núcleos, combinar múltiplas instâncias do SQL Server em uma única instância do Amazon EC2 poderá diminuir o custo do licenciamento necessário para o total das instâncias do SQL Server existentes.
  • Ao migrar, considere opções de licenciamento como o modelo de licença inclusa da AWS (LI) e trazer sua licença para host dedicado ou compartilhado (BYOL). Em ambientes que não são usados para cargas de trabalho de produção, utilize a modalidade SQL Server Developer Edition, que, embora possua todas as funcionalidades da modalidade Enterprise Edition, possui licenciamento gratuito.
  • Modernize as cargas de trabalho em SQL Server para executarem em bancos de dados livres de licenciamento ou Data Warehouse para estruturas modernas de Data Lake, com bancos de dados de propósito específico. Considere migrar para Amazon Aurora PostgreSQL utilizando Babelfish (até 70% de economia, com cerca de 90% de compatibilidade) e os processos analíticos de Data Warehouse para o Amazon Redshift.
  • Replataforme o SQL Server 2017 em diante para Linux, utilizando o Replatforming Assistant for Microsoft SQL Server. Essa ação visa eliminar o custo de licenciamento com Windows Server, podendo alcançar até 20% de economia de custo.
  • Utilize a estratégia correta de backup, habilitando compressão de backup do SQL Server, caso escolha essa modalidade. Para backups armazenados no Amazon Simple Storage Service (S3), utilizando a classe Intelligent-Tiering poderá resultar em até 30% de economia com custo de armazenamento. Faça backup diretamente para o Amazon S3, caso esteja utilizando SQL Server 2022 em diante.
  • Escolha o tipo certo de EBS para a instância do SQL Server. Em um ambiente que demanda um volume de 1TB, a escolha do tipo gp3 ao invés de io1 ou io2 poderá significar uma economia de até 87% em armazenamento.
  • Use o AWS Trusted Advisor para identificar instâncias do Amazon EC2 com capacidade superdimensionadas, ou para identificar situações onde há oportunidade de consolidar instâncias do SQL Server.

Containers:

  • Mova aplicações Windows para containers do Amazon Elastic Container Service (ECS) ou Amazon Elastic Kubernetes Service (EKS), utilizando instâncias do Amazon EC2 ou Amazon Fargate. Ao utilizar containers e consolidação de aplicativos, poderá trazer uma economia de até 64% entre custos de computação e armazenamento, quando comparado com a execução direta em instâncias do Amazon EC2.
  • Utilize o AWS Computer Optimizer para verificar as recomendações providas a nível de container, baseadas na utilização de memória e CPU. O correto dimensionamento de Tasks do Fargate no Amazon ECS poderá trazer uma economia entre 30% e 70% de redução de custo.
  • Para as cargas de trabalho que executam no Amazon EKS, utilize Kubecost. Kubecost analisa o custo de sua infraestrutura Kubernetes desde os namespaces e serviços até os pods individuais e exibe os dados em um painel para visibilidade. A profunda integração do Kubecost com o Kubernetes e as APIs da AWS ajudam a encontrar possíveis economias de custo, que podem ser vistas como recomendações no painel de economia.
  • Tire proveito do AWS App2Container (A2C) para portar aplicações web escritas em Java ou .NET para containers. Esta ação poderá trazer uma economia de até 60% no custo de computação da aplicação, além de trazer benefícios de padronização, modernização e eficiência operacional.

Armazenamento:

  • Volumes EBS não anexados (órfãos) podem levar a custos de armazenamento desnecessários em seu ambiente AWS. É essencial incorporar a revisão e exclusão regulares de volumes EBS não utilizados como parte da higiene do ambiente. Para os que necessitarem de retenção de dados, avalie utilizar o Amazon EBS Snapshot combinado com políticas do AWS Backup ou do Amazon Data Lifecycle Manager, uma opção que auxilia a melhorar a gestão e diminuir o custo de armazenamento.
  • Considere mover snapshots de EBS raramente acessados para a classe de armazenamento Archive. Essa recomendação é aplicável para snapshots que possuem previsão de permanecerem armazenados por 90 dias ou mais e traz um benefício de até 75% de economia em relação a classe de armazenamento Standard.
  • Escolha o serviço de armazenamento de arquivos via protocolo SMB correto. Para cargas de trabalho Windows, a AWS possui dois tipos de armazenamento de arquivos completamente gerenciado: Amazon FSx for Windows File Server (provisionamento mínimo de 32GB) e Amazon FSx for NetApp ONTAP (provisionamento mínimo de 1024GB). Observe atentamente as características de cada um deles e escolha o que mais se adequa ao seu caso de uso.
  • Habilite Data Deduplication no FSx for Windows File Server (FSxW). Esta funcionalidade visa armazenar seu dado de forma mais eficiente, com menor requerimento de capacidade, trazendo um benefício potencial entre 50% a 60% para arquivos compartilhados de propósito geral (documentos, fotos, vídeos, etc).
  • Utilize tipo de armazenamento HDD em FSx for Windows File Server para armazenamentos que requerem baixa taxa de transferência, como home directory, compartilhamento de usuários ou departamentos. Embora seja necessária uma validação prévia para verificar se a taxa de transferência oferecida irá atender ao caso de uso, essa escolha poderá trazer uma economia de até 88% sobre o custo de um armazenamento de 20TB, por exemplo.
  • Considere utilizar estratégia de Data Sharding para FSxW com volumes de dados maiores. Como exemplo, para um volume de 17TB, utilizando Distributed File System Namespace (DFSN) com três instância de FSxW e uma instância Amazon EC2 para DFSN Windows, podemos obter uma economia de até 26% no custo total da solução.
  • Avalie casos de uso onde é possível implementar o FSxW no modelo Single-AZ. Embora a AWS recomende a utilização de Multi-AZ para ambientes de produção, casos de uso onde o SLA para Single-AZ atenda (99,9% de disponibilidade) poderão usufruir de uma economia de até 40%. Exemplo de utilização são ambientes que não desempenham missão crítica para o negócio, ambientes de desenvolvimento, teste ou ambientes de homologação.
  • Use o FSx File Gateway para diminuir o custo com armazenamento ou atender a cenários de acesso em múltiplas regiões. O File Gateway pode utilizar como fonte primária de armazenamento o Amazon S3 ou o Amazon FSx for Windows File Server, trazendo uma redução de custos entre 26% e 34%.

Microsoft Active Directory:

  • Caso esteja executando o Active Directory em Amazon EC2, escolha a família e o tipo correto de instância. Uma instância t3a.medium pode representar uma economia de 68% se comparada com uma instância m5a.large, apresentando as mesmas especificações de vCPU e memória. Verifique as recomendações de planejamento de capacidade disponibilizadas pela Microsoft para definir as especificações do controlador de domínio.
  • Caso haja a utilização do AWS AD Connector para o AD autogerenciado em Amazon EC2, observe os requisitos do ambiente para escolha entre o tamanho Small e Large. Caso haja menos de 10 mil usuários que utilizam o AD para autenticação e não haja muitos grupos com subgrupos membros aninhados ou de forma circular, é possível escolher o tamanho Small, que apresenta 66% de redução de custo em relação ao tamanho Large.
  • Ao escolher entre as versões Standard ou Enterprise do AWS Managed Microsoft AD, verifique corretamente os requisitos do ambiente. Caso não seja necessário o recurso de multi-região, o AD tenha menos de 30 mil objetos e não seja necessário compartilhamento com mais de 30 contas, a modalidade Standard Edition pode ser considerada, trazendo uma economia de cerca de 70% sobre o valor da modalidade Enterprise Edition.

.NET:

  • Modernize cargas de trabalho que executam em .NET Framework para serem executadas em .NET 6+ utilizando o Porting Assistant for .NET. Esta modernização viabilizará a execução da aplicação em ambientes Linux, livre de licenciamento Windows, gerando uma economia de até 49% utilizando o mesmo tipo de instância.
  • Mova suas cargas de trabalho em .NET 6+ para container Linux, utilizando processadores Graviton. Além do benefício médio de 45% por executar em um sistema operacional Linux livre de licenciamento, os processadores Graviton apresentam 40% melhor relação preço/performance para esse tipo de carga de trabalho.
  • Execute aplicações ASP.NET em instâncias Amazon EC2 dentro de um Auto Scaling Group. Aplicações ASP.NET legadas podem tirar proveito do modelo de escalonamento sob demanda, acrescentando ou diminuindo o número de instâncias em um Auto Scaling Group, que recebe requisições de um balanceador de carga (Amazon Elastic Load Balancer). Essa configuração pode trazer uma economia financeira de até 68% para essas cargas de trabalho.
  • Considere utilizar DynamoDB Accelerator (DAX) como cache para banco de dados SQL Server com alta demanda de leitura. Esta ação pode diminuir o custo com banco de dados, eliminando a necessidade de uma instância de leitura e um consequente upgrade de licenciamento para SQL Server Enterprise Edition.
  • Utilize processamento sem servidor (serverless) com o AWS Lambda para execução de cargas de trabalho que atendam a esse caso de uso. Para funções não invocadas frequentemente, não consomem muitos recursos de CPU e memória e são executadas rapidamente, utilize o AWS Lambda com o dimensionamento correto e economize pagando somente com base na execução da funcionalidade.
  • Modernize aplicações já existentes e novas aplicações fazendo o uso de bancos de dados de propósito específico, livre de licenciamento e de baixo custo. A AWS oferece um conjunto de diversos tipos de bancos de dados, relacional, não relacional, de grafo, série temporal, entre outros, que apresentam melhores aderências a finalidades específicas e que são livres de licenciamento. Tire proveito desses bancos de dados ao modernizar ou arquitetar uma nova aplicação, melhorando a performance e diminuindo o custo total da sua carga de trabalho.

Conclusão

Otimização de custos é um trabalho constante de governança e não uma ação pontual. Criar controles automatizados e dar visibilidade aos custos, além de estar sempre atento às novas oportunidades de otimização é importante. Esteja sempre atualizado sobre as novas formas de otimização de custos, uma vez que a AWS trabalha constantemente criando possibilidades modernas para otimização de cargas de trabalho específicas, desde hardware e processadores a novas plataformas e serviços: o que está otimizado hoje pode não o ser nos meses seguintes.

Autor

Neuton Assis é Arquiteto de Soluções na AWS para o segmento de Enterprise. Antes disso, trabalhou por mais de 10 anos na arquitetura e desenvolvimento de softwares voltados para automação de atividades de TI, auditoria de sistemas e gestão de identidade e acesso, atuando principalmente em ambientes Microsoft. Atualmente, auxilia clientes da AWS a terem sucesso na jornada para computação em nuvem.

 

 

Revisores

Thiago Paiva é Senior Technical Instructor no time da AWS Americas. Na maior parte de sua carreira tem atuado com workloads Microsoft e cloud computing. Como Technical Instructor, já está há mais de 3 anos na AWS se dedicando ao programa AWS TechU que consiste em oferecer aprendizado baseado em um projeto de 6 meses com instrutor, seguido por uma atribuição de aprendizado de 6 meses nas áreas de: Treinamento Técnico, Arquitetura de Soluções ou Consultoria de Serviços Profissionais para indivíduos recém formados em  universidade relacionadas com TI.
Lucas Henrique Garcia é Arquiteto de Soluções do time de Enterprise. Trabalhou previamente com SMB e no time de Premium Support da AWS em Dublin. Seu foco está em ajudar clientes da AWS a resolverem seus problemas e a desenhar arquiteturas para seus negócios.