Fundamentos de faturamento e otimização de custos
GUIA DE CONCEITOS BÁSICOS
Introdução
Ao usar a nuvem para hospedar aplicações e sistemas, é importante entender como o modelo de cobrança funciona e como você pode otimizar seus custos. A nuvem permite que você troque despesas fixas (datacenters, servidores físicos etc.) por despesas variáveis e pague apenas pelos recursos que são consumidos. Há várias dimensões de cobrança diferentes, dependendo do tipo de recurso utilizado. Essas dimensões podem incluir o tempo que um recurso permanece em execução, a quantidade de dados armazenados, transferidos ou processados, ou o número de invocações de API feitas.
-
Como faço para exibir meus custos?
A primeira etapa para entender seu faturamento é poder ver os recursos que você tem e quanto custa executá-los. O Painel de Faturamento da AWS no Console de Gerenciamento da AWS oferece uma visão geral básica de seus custos mensais atuais, juntamente com uma previsão com base nos recursos atualmente em execução. Se você ainda não tiver familiaridade com o console, recomendamos consultar o tutorial Getting Started with the AWS Management Console. As informações de faturamento são consideradas confidenciais e, como tal, somente o usuário raiz da conta da AWS tem acesso inicialmente a essa seção do console. Se não conseguir visualizar o painel de faturamento, você precisará delegar o acesso ao seu usuário do AWS IAM. Este é um exemplo do painel de faturamento, mostrando quais serviços estão em uso no momento e quanto custam:
O painel de faturamento oferece uma visão geral e um detalhamento simplificado dos custos, mas talvez você queira fazer uma análise mais profunda. Isso pode ser feito usando o Explorador de Custos da AWS. Ele permite que você veja quais serviços foram usados e o valor que cada um contribuiu para o gasto mensal. Também há um gráfico mostrando os diferentes valores que pode ser usado para filtrar os dados de acordo com dimensões diferentes, como região ou serviço. Este é um exemplo do painel de faturamento:
-
Posso receber um alerta quando minha projeção de gastos ultrapassar um determinado valor?
Sim. Esse alerta deve ser uma das primeiras funcionalidades configurada quando você cria uma conta da AWS. Siga as instruções no guia do usuário do Amazon CloudWatch para configurar um alerta com base no total de cobranças estimadas. Você pode definir alarmes adicionais com base em várias métricas ou dimensões, dependendo de suas necessidades.
-
Quais recursos são gratuitos?
O nível gratuito da AWS permite que clientes explorem e testem gratuitamente serviços da AWS até os limites especificados para cada serviço. O nível gratuito é composto por três tipos diferentes de ofertas: um nível gratuito de 12 meses, uma oferta sempre gratuita e avaliações de curto prazo. O nível gratuito de 12 meses permite que os clientes utilizem gratuitamente o serviço até os limites especificados por um ano a partir da data de criação da conta. Os serviços com uma oferta sempre gratuita podem ser usados sem custos até limites especificados por clientes da AWS. Os serviços com uma avaliação de curto prazo podem ser usados gratuitamente por um período especificado ou até um limite de tempo não renovável, dependendo do serviço selecionado. Para ver quais recursos de nível gratuito você está usando atualmente e quanto de cada um está usando, abra o painel Nível gratuito na seção Faturamento da sua conta da AWS. Este é um exemplo do que você poderá ver:Se você ainda não configurou uma conta, ou esta é sua primeira vez usando a AWS, recomendamos que se familiarize com o Console de Gerenciamento da AWS e consulte Setting Up Your AWS Environment.
-
Posso pagar um valor fixo e previsível por mês?
Os serviços na AWS geralmente são cobrados de acordo com uma taxa de consumo baseada em diferentes dimensões, como tempo de execução do recurso, quantidade de dados processados ou transferidos e número de solicitações. Alguns serviços têm um nível gratuito, e seus custos mensais dependem da combinação dos serviços que você usa.
Se você está procurando uma solução com custo fixo e previsível, o Amazon Lightsail oferece instâncias de servidor privado virtual (VPS), contêineres, armazenamento, bancos de dados e outros recursos de fácil utilização a um preço mensal acessível. Como exemplo, siga este tutorial sobre a implantação de um site WordPress no Amazon Lightsail.
-
Como posso reduzir minha fatura mensal?
Há várias maneiras de reduzir sua fatura mensal. Você pode otimizar as quantidades ou tamanhos de instâncias ou bancos de dados que está usando, migrar de bancos de dados licenciados para bancos de dados de código aberto, aumentar e diminuir automaticamente a escala com base na demanda ou alterar seus serviços para usar o AWS Lambda ou outros serviços sem servidor que podem ter escala reduzida verticalmente até zero quando não estão em uso. Outra opção é desligar ambientes e recursos que não estão em uso 24 horas por dia, 7 dias por semana. Por exemplo, uma semana tem 168 horas no total. Se os desenvolvedores usarem o ambiente de desenvolvimento apenas durante o horário de expediente (das 8h às 18h, ou 10 horas), sete dias por semana, desativá-lo economizará 98 horas por semana (aproximadamente 58,33%). Para implementar essa solução, você pode conferir o Programador de instâncias da AWS para desativar automaticamente instâncias e bancos de dados de acordo com um cronograma.As seções abaixo abordarão cenários específicos do uso de instâncias spot da AWS, do ajuste de escala automático com base na carga e da otimização dos custos de rede, computação e banco de dados.
-
O que são instâncias spot?
Quando você ativa uma instância do EC2, ela é chamada de instância sob demanda, com custos associados por segundo de execução. Você também pode ativá-la como uma instância spot do EC2, o que permite aproveitar a capacidade não utilizada do EC2 na Nuvem AWS. Em comparação com os preços sob demanda, as instâncias spot oferecem descontos de até 90%. A ressalva aqui é que, como depende da capacidade não utilizada do EC2, a instância spot pode ser encerrada em algum momento quando há um pico nas instâncias sob demanda, com um aviso de dois minutos antes do encerramento. Isso permite que você conclua qualquer solicitação em andamento na instância e a encerre ou suspenda normalmente até que haja capacidade spot disponível novamente. Você também pode usar uma combinação de diferentes tipos de instância spot para reduzir a probabilidade de não ter capacidade suficiente para suas solicitações. Veja a próxima seção para saber mais.
-
Ajustar a escala dos recursos automaticamente com base na demanda
O aumento ou a redução da escalabilidade vertical dos recursos com base na workload atual permite que você tenha a capacidade exata para lidar com as solicitações recebidas. No caso de instâncias do Amazon EC2, isso pode ser feito usando o ajuste de escala automático e configurando regras de escalabilidade com base em métricas, como carga de CPU, entrada/saída de rede, número de solicitações e muito mais. Se você tiver workloads com picos previsíveis, como um sistema usado por uma escola em que a maioria das pessoas faz login e começa a usá-lo às 7h, poderá configurar o ajuste de escala automático com escalabilidade preditiva de acordo com um cronograma entre 6h50 e 18h10, por exemplo.
Conforme mencionado na seção anterior, as instâncias spot são outra forma de reduzir os custos das instâncias do EC2. Usando o ajuste de escala automático, você pode criar frotas compostas por uma combinação de instâncias sob demanda e spot, com opções para escolher quais instâncias spot usar. Por exemplo, você pode configurar o serviço para usar instâncias spot m5.large e m5.xlarge, com uma ponderação associada para indicar quanta capacidade cada uma fornece. Nesse caso, a m5.xlarge tem o dobro da computação da m5.large; portanto, atribuir um valor 2 a ela e um valor 1 à m5.large permitirá que o ajuste de escala automático decida o tipo a ser usado ao escalar. A dimensão de qual instância spot escolher pode ser configurada com base no menor preço, para que a instância com menor custo por unidade (conforme definido pelos pesos) seja escolhida, ou otimizada por capacidade, para que o tipo de instância com a capacidade spot mais atual seja escolhida, reduzindo a chance da interrupção de sua workload.
Se você estiver usando funções do Lambda para suas aplicações, o AWS Lambda Power Tuning, uma ferramenta de código aberto hospedada no GitHub, ajudará a testar o código usando diferentes configurações do Lambda para encontrar a melhor combinação de custo e performance para seu caso.
-
Otimização dos custos de computação
Um bom ponto de partida para a otimização de custos é analisar o tamanho da instância do EC2 ou da função do Lambda com base no volume de processamento que elas fazem. Diferentes tipos de instância do EC2 são otimizados para diferentes workloads, como CPUs de alta frequência, alta capacidade de memória, armazenamento local SSD NVME rápido, GPUs conectadas para machine learning e alta throughput. Por exemplo, se você perceber que a workload consome muita CPU, talvez seja mais barato usar a família de instâncias C5 em vez das instâncias de uso geral M5. Por outro lado, se você observar apenas picos periódicos no uso da CPU, a família de instâncias T, com capacidade de intermitência, pode ser mais adequada à sua workload. Para começar a otimizar sua computação, você pode usar o AWS Compute Optimizer para analisar workloads em execução e fazer recomendações.
-
Otimização dos custos de transferência de dados
A transferência de dados entre regiões da AWS, entre zonas de disponibilidade (AZs) ou entre a AWS e a Internet tem um custo associado. Você pode reduzir esse custo projetando a infraestrutura para direcionar o tráfego para as rotas ideais. A primeira etapa é analisar os endpoints da VPC, caso você esteja fazendo alguma chamada para os serviços da AWS, como Amazon S3 ou Amazon ECR. Ao criar um endpoint da VPC dentro da sua VPC, as chamadas para os serviços compatíveis da AWS são encaminhadas por ele e permanecem dentro da rede da AWS em vez de serem chamadas da VPC para a Internet e, em seguida, de volta para a rede da AWS. Isso ajudará você a evitar custos de saída da rede.
A próxima etapa é otimizar as chamadas dentro de sua infraestrutura. Ao implantar recursos em várias AZs para obter resiliência, você pode usar a afinidade da zona de disponibilidade para garantir que o máximo de chamadas possível seja roteado dentro de cada zona de disponibilidade. Se sua aplicação usar um banco de dados compatível com o Amazon RDS, você poderá criar réplicas de leitura para que todas as chamadas de leitura possam ser feitas usando uma réplica dentro da mesma zona de disponibilidade.
-
Otimização dos custos do banco de dados
Para começar a otimizar os custos do banco de dados, você pode implantar outras réplicas de leitura para desviar as consultas do banco de dados principal que só leem os dados. Isso liberará a capacidade do nó primário que lida com todas as alterações de dados (atualizações, inserções e exclusões). Isso ajudará a otimizar até o ponto em que você precisa começar a escalar a instância do banco de dados de acordo com a flutuação da carga. Você pode alterar o tamanho da instância de um banco de dados do Amazon RDS, mas isso exige que o banco de dados fique offline enquanto o tipo de instância é alterado. Se sua aplicação precisar de tempo de atividade contínuo, uma boa opção será o Amazon Aurora, um serviço de banco de dados relacional que combina a velocidade e a disponibilidade de bancos de dados comerciais avançados com a simplicidade e a economia de bancos de dados de código aberto. O Aurora é totalmente compatível com MySQL e PostgreSQL, permitindo que aplicações e ferramentas existentes sejam executadas sem a necessidade de modificação. O Amazon Aurora Sem Servidor é uma configuração escalável e sob demanda para o Aurora, na qual o banco de dados é inicializado, encerrado e tem sua capacidade aumentada ou reduzida de acordo com as necessidades da aplicação.
-
Como otimizar uma workload fixa
Depois que a workload for otimizada ao máximo possível, se você tiver uma carga mínima fixa que deve ser cumprida, deverá considerar cadastrar-se em um Savings Plan. Um Savings Plan é um modelo de desconto flexível que oferece os mesmos descontos das instâncias reservadas em troca do compromisso de usar uma quantidade específica (medida em dólares por hora) de potência computacional durante um período de um ou três anos. Existem dois tipos de Savings Plans disponíveis:
Os Savings Plans para computação fornecem a maior flexibilidade e ajudam a reduzir seus custos em até 66% (semelhantes às IRs conversíveis). Os planos se aplicam automaticamente a qualquer instância do EC2, independentemente de região, família de instâncias, sistema operacional ou locação, incluindo aquelas que fazem parte do Amazon EMR, do Amazon ECS ou de um cluster do Amazon EKS. Por exemplo, você pode mudar das instâncias C4 para C5, mover uma workload de Dublin para Londres ou migrar do EC2 para o AWS Fargate, se beneficiando dos preços do Savings Plan sem precisar fazer nada.
Os Savings Plans para instâncias do EC2 se aplicam a uma família de instâncias específica dentro de uma região e oferecem o maior desconto (até 72%, assim como as IRs padrão). Assim como nas IRs, o Savings Plan cobre o uso de tamanhos diferentes do mesmo tipo de instância (como c5.4xlarge ou c5.large) em toda a região. Você pode até mesmo mudar do Windows para o Linux e, ao mesmo tempo, continuar se beneficiando sem precisar fazer nenhuma alteração ao Savings Plan.
-
Ferramentas e serviços para ajudar na otimização de custos
Ferramentas e serviços para ajudar na otimização de custos
- Otimize os custos de armazenamento do Amazon S3 usando o Intelligent-Tiering
- Lente de Armazenamento do Amazon S3
- Detecção de Anomalias de Custos da AWS