Conteinerizar aplicações .NET - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conteinerizar aplicações .NET

Visão geral do

Os contêineres são uma forma leve e eficiente de empacotar e implantar aplicações de maneira consistente e reproduzível. Esta seção explica como você pode usar o AWS Fargate, um serviço de contêiner sem servidor para reduzir os custos de suas aplicações .NET e, ao mesmo tempo, fornecer uma infraestrutura escalável e confiável.

Impacto do custo

Alguns fatores que influenciam a eficácia do uso de contêineres para a redução de custos incluem o tamanho e a complexidade da aplicação, o número de aplicações que precisam ser implantadas e o nível de tráfego e demanda das aplicações. Para aplicações pequenas ou simples, os contêineres podem não oferecer reduções de custo significativas em comparação com as abordagens tradicionais de infraestrutura, pois a sobrecarga do gerenciamento dos contêineres e dos serviços associados pode, na verdade, aumentar os custos. No entanto, para aplicações maiores ou mais complexas, o uso de contêineres pode proporcionar uma redução de custos, melhorando a utilização de recursos e reduzindo o número de instâncias necessárias.

Recomendamos que você tenha em mente o seguinte ao usar contêineres para redução de custos:

  • Tamanho e complexidade da aplicação: aplicações maiores e mais complexas são mais adequadas para a conteinerização porque tendem a exigir mais recursos e podem se beneficiar mais com a melhor utilização deles.

  • Número de aplicações: quanto mais aplicações sua organização precisar implantar, maior será a redução de custos por meio da conteinerização.

  • Tráfego e demanda: as aplicações que experimentam alto tráfego e demanda podem se beneficiar da escalabilidade e elasticidade que os contêineres oferecem. Isso pode resultar em uma redução de custos.

Arquiteturas e sistemas operacionais diferentes afetam os custos dos contêineres. Se você estiver usando contêineres Windows, os custos podem não diminuir devido a considerações de licenciamento. Os custos de licenciamento são menores ou não existem com os contêineres Linux. O gráfico a seguir usa uma configuração básica AWS Fargate na região Leste dos EUA (Ohio) com as seguintes configurações: 30 tarefas por mês, cada uma sendo executada por 12 horas com 4 V CPUs e 8 GB de memória alocada.

Você pode escolher entre duas plataformas de computação principais para executar seus contêineres AWS: hosts de contêineres EC2 baseados e sem servidor ou. AWS Fargate Se você usar o Amazon Elastic Container Service (Amazon ECS) em vez do Fargate, mantenha a computação em execução (instâncias) para permitir que o mecanismo de posicionamento instancie contêineres quando necessário. Se você usar o Fargate, somente a capacidade computacional necessária será provisionada.

O gráfico a seguir mostra a diferença entre contêineres equivalentes usando o Fargate e o Amazon. EC2 Devido à flexibilidade do Fargate, as tarefas de uma aplicação podem ser executadas 12 horas por dia, sem utilização fora do horário de pico. No entanto, para o Amazon ECS, você deve controlar a capacidade computacional usando um grupo de instâncias do Auto Scaling. EC2 Isso pode fazer com que a capacidade opere ininterruptamente, 24 horas por dia, o que pode, em última análise, aumentar os custos.

Custos mensais do Fargate versus EC2 custos mensais

Recomendações de otimização de custos

Use contêineres Linux em vez de Windows

Você pode obter economias significativas se usar contêineres Linux em vez de contêineres Windows. Por exemplo, você pode obter uma economia de aproximadamente 45% nos custos de computação se executar o.NET Core no EC2 Linux em vez de executar o.NET Framework no EC2 Windows. Você pode obter uma economia adicional de 40% se usar a arquitetura ARM (AWS Graviton) em vez da x86.

Se você planeja executar contêineres baseados em Linux para aplicações .NET Framework existentes, você deve portar essas aplicações para versões modernas e multiplataforma do .NET (como o.NET 6.0) para usar contêineres Linux. Uma consideração importante é ponderar o custo da refatoração em comparação com a economia de custos obtida com a redução do custo dos contêineres Linux. Para obter mais informações sobre como portar suas aplicações para o .NET Modern, consulte Assistente de Portabilidade para .NET na documentação da AWS .

Outro benefício de migrar para o .NET Modern (ou seja, sair do .NET Framework) é que oportunidades adicionais de modernização ficam disponíveis. Por exemplo, você pode considerar a redefinição da arquitetura de sua aplicação para uma arquitetura baseada em microsserviços que seja mais escalável, ágil e econômica.

O diagrama a seguir ilustra o processo de tomada de decisão para explorar oportunidades de modernização.

Árvore de decisão da redefinição da plataforma

Aproveitar os Savings Plans

Os contêineres podem ajudar você a aproveitar os Savings Plans para computação para reduzir seus custos com o Fargate. O modelo de desconto flexível oferece os mesmos descontos que as Instâncias Reservadas Conversíveis. Os preços do Fargate são baseados nos recursos de vCPU e de memória usados desde o início do download da imagem do contêiner até o término da tarefa do Amazon ECS (arredondado para o segundo mais próximo). Os Savings Plans do Fargate oferecem economias de até 50% no uso do Fargate em troca do compromisso de utilizar uma quantidade específica de uso de computação (medida em dólares por hora) por um período de um ou três anos. Você pode usar o AWS Cost Explorer para ajudar você a escolher um dos Savings Plans.

É importante entender que os Savings Plans para computação são aplicadoa ao uso que gera a maior economia em primeiro lugar. Por exemplo, se você estiver executando uma instância t3.medium do Linux em us-east-2 e uma instância t3.medium idêntica do Windows, a instância do Linux receberá primeiro o benefício dos Savings Plans. Isso ocorre porque a instância do Linux tem um potencial de economia de 50%, enquanto a mesma instância do Windows tem um potencial de economia de 35%. Se você tiver outros recursos elegíveis do Savings Plans em execução no seu Conta da AWS, como Amazon EC2 ou Lambda, não é necessário que seus Savings Plans sejam aplicados primeiro ao Fargate. Para obter mais informações, consulte Entendendo como os Savings Plans se aplicam ao seu AWS uso na documentação dos Savings Plans e na EC2 seção Otimizar gastos para Windows na Amazon deste guia.

Tarefas do Fargate do tamanho certo

É importante garantir que as tarefas do Fargate sejam dimensionadas corretamente para alcançar o grau máximo de otimização de custos. Frequentemente, os desenvolvedores não têm todas as informações de uso necessárias ao determinar inicialmente as configurações das tarefas do Fargate usadas em suas aplicações. Isso pode levar ao provisionamento excessivo de tarefas e, em seguida, resultar em gastos desnecessários. Para evitar isso, recomendamos que você carregue as aplicações de teste em execução no Fargate para entender a performance de uma configuração de tarefa específica em diferentes cenários de uso. Você pode usar os resultados do teste de carga, a vCPU, a alocação de memória das tarefas e as políticas de ajuste de escala automático para encontrar o equilíbrio certo entre performance e custo.

O diagrama a seguir mostra como o Compute Optimizer gera recomendações para o tamanho ideal da tarefa e do contêiner.

Recomendações do Compute Optimizer para o tamanho da tarefa e do contêiner

Uma abordagem é usar uma ferramenta de teste de carga, como a descrita em Distributed Load Testing on AWS, para estabelecer uma linha de base para a utilização da vCPU e da memória. Depois de executar o teste de carga para simular uma carga típica da aplicação, você pode ajustar a configuração da vCPU e da memória para a tarefa até que a utilização básica seja alcançada.

Recursos adicionais do