Apenas movendo as arquiteturas existentes para a nuvem, as organizações podem reduzir as despesas de capital e gerar economias como resultado das economias de escala da AWS. Ao iterar e fazer uso de mais recursos da AWS, há mais oportunidades de criar arquiteturas de nuvem otimizadas para custos. Esta seção discute os princípios fundamentais de otimização de custos com a
computação em nuvem da AWS.
Dimensionamento correto
A AWS oferece uma ampla variedade de tipos de recursos e configurações para atender a uma infinidade de casos de uso. Por exemplo, serviços como o Amazon EC2, o Amazon RDS, o Amazon Redshift e o Amazon Elasticsearch Service (Amazon ES) oferecem muitas opções de tipos de instâncias. Em alguns casos, você deve selecionar o tipo mais barato que atenda aos requisitos de sua carga de trabalho. Em outros casos, usar menos instâncias de um tipo de instância maior pode resultar em menor custo total ou melhor desempenho. Você deve avaliar e selecionar o tipo de instância correto, dependendo de como sua carga de
trabalho utiliza CPU, RAM, rede, tamanho de armazenamento e E/S.
Da mesma forma, você pode reduzir os custos selecionando a solução de armazenamento certa para suas necessidades. Por exemplo, o Amazon S3 oferece uma variedade de classes de armazenamento, incluindo acesso padrão, redundância reduzida e acesso não frequente padrão. Outros serviços, como o Amazon EC2, o Amazon RDS e o Amazon ES, suportam diferentes tipos de volume do Amazon Elastic Block Store (Amazon EBS) (magnético, SSD de uso geral, SSD de IOPS provisionado) que você deve avaliar.
Elasticidade
Outra maneira de economizar dinheiro com a AWS é aproveitando a
elasticidade da plataforma. Planeje implementar o Auto Scaling para o máximo possível de cargas de trabalho do Amazon EC2, para que você dimensione horizontalmente quando necessário, e diminua a escala e reduza
automaticamente seus gastos quando não precisar mais dessa capacidade. Além disso, você pode automatizar o desligamento de cargas de trabalho de não produção quando não estiver em uso34. Por fim, considere quais cargas de trabalho de computação você poderia implementar no AWS Lambda para nunca pagar por recursos ociosos ou redundantes.
Sempre que possível, substitua as cargas de trabalho do Amazon EC2 por
serviços gerenciados da AWS que não exijam a tomada de decisões de capacidade (por exemplo, ELB, Amazon CloudFront, Amazon SQS, Amazon Kinesis
Firehose, AWS Lambda, Amazon SES, Amazon CloudSearch) para modificar facilmente a capacidade como e quando necessário (por exemplo, Amazon DynamoDB, Amazon RDS e Amazon Elasticsearch Service).
Aproveite a variedade de opções de compra
O preço da instância sob demanda do Amazon EC2 oferece flexibilidade máxima sem confirmação de longo prazo. Há mais duas maneiras de pagar por instâncias do Amazon EC2 que podem ajudar a reduzir gastos: Instâncias reservadas e instâncias spot.
Monitoramento contínuo e marcação
A otimização de custos é um processo iterativo. Seu aplicativo e seu uso evoluirão com o tempo. Além disso, a AWS repete com frequência e regularmente libera novas opções.
A AWS fornece ferramentas33 para ajudá-lo a identificar as oportunidades de economia de custos e manter seus recursos de tamanho adequado. Para tornar os resultados dessas ferramentas fáceis de interpretar, você deve definir e implementar uma política de marcação para seus recursos da AWS.
Você pode tornar a marcação parte de seu processo de criação e
automatizá-la com ferramentas de gerenciamento da AWS, como o AWS Elastic Beanstalk e o AWS OpsWorks. Você também pode usar as regras gerenciadas fornecidas pelo AWS Config para avaliar se as tags específicas são aplicadas aos seus recursos ou não.
Capacidade reservada
As instâncias reservadas do Amazon EC2 permitem reservar a capacidade de computação do Amazon EC2 em troca de uma taxa horária com desconto significativo em comparação com o preço de instâncias sob demanda. Isso é ideal para aplicativos com requisitos mínimos de capacidade previsíveis. É possível aproveitar as ferramentas como os relatórios de uso do AWS Trusted Advisor ou do Amazon EC2 para identificar os recursos de computação que você usa na maior parte do tempo, e que deve considerar como reserva.
Dependendo das suas compras por instância reservada, os descontos serão refletidos na fatura mensal. Observe que não há diferença técnica entre uma instância sob demanda do EC2 e uma instância reservada. A diferença está na maneira como você paga pelas instâncias que reserva.
Opções de capacidade reservada também existem para outros serviços (por exemplo, Amazon Redshift, Amazon RDS, Amazon DynamoDB e Amazon CloudFront).
Instâncias spot
Para cargas de trabalho menos constantes, você pode considerar o uso de instâncias spot. As instâncias spot do Amazon EC2 permitem oferecer uma capacidade de computação sobressalente do Amazon EC2. Como as instâncias spot geralmente estão disponíveis com um desconto em comparação com os preços sob demanda, você pode reduzir significativamente o custo de execução de seus aplicativos.
As instâncias spot são ideais para cargas de trabalho que têm hora de início e de fim flexíveis. Sua instância spot é iniciada quando seu lance excede o preço atual de mercado spot, e continuará sendo executado até você optar por encerrá-lo ou até que o preço de mercado spot exceda seu lance. Se o preço de mercado spot aumentar acima do seu preço de oferta, sua instância será encerrada
automaticamente e você não será cobrado pela hora parcial em que sua instância foi executada.
Dica: Você não deve se comprometer com as compras de instância reservada antes de fazer uma análise comparativa suficiente em seu aplicativo na produção. Depois de adquirir a capacidade reservada, é possível usar os relatórios de utilização de instância reservada para garantir que você ainda aproveite ao máximo sua capacidade reservada.
Como resultado, as instâncias spot são ótimas para cargas de trabalho que tenham tolerância à interrupção. No entanto, você também pode usar instâncias spot quando precisar de disponibilidade mais previsível:
Estratégia de licitação: É cobrado o preço de mercado spot (não o seu preço de oferta) enquanto a instância spot for executada. Sua estratégia de lances poderia ter um lance muito mais alto do que isso, com a expectativa de que, mesmo que o preço de mercado ocasionalmente aumente, você ainda estará economizando um grande custo a longo prazo.
Misture com sob demanda: Considere a possibilidade de combinar instâncias reservadas, sob demanda e pontuais para combinar uma capacidade mínima previsível com o acesso “oportunista” a recursos de computação adicionais, dependendo do preço de mercado spot. Esta é uma ótima maneira de melhorar o rendimento ou o desempenho do aplicativo.
Blocos spot para cargas de trabalho de duração definida: Você também pode definir lances para instâncias spot de duração fixa. Estes têm diferentes preços por hora, mas permitem especificar um requisito de duração. Se seu lance for aceito, sua instância continuará a ser exibida até você optar por encerrá-la, ou até que a duração especificada seja encerrada; sua instância não será encerrada devido a alterações no preço spot (mas, é claro, você ainda deve projetar para tolerância a falhas porque uma instância spot ainda pode falhar como qualquer outra instância do EC2).
Melhores práticas de preços spot
Instâncias spot permitem que você lance em vários tipos de instância simultaneamente. Como os preços flutuam de forma independente para cada tipo de instância em uma Zona de disponibilidade, frequentemente, é possível obter mais capacidade de computação pelo mesmo preço se o aplicativo for projetado para ser flexível sobre os tipos de instância. Teste seu aplicativo em diferentes tipos de instâncias, quando possível. Faça lances para todos os tipos de instância que atendam aos seus requisitos para reduzir ainda mais os custos.