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á.
Considere a opção sem servidor. NET
Visão geral
A computação sem servidor se tornou uma abordagem popular para criar e implantar aplicativos. Isso se deve principalmente à escalabilidade e à agilidade que a abordagem sem servidor oferece ao criar uma arquitetura moderna. No entanto, é importante considerar o impacto nos custos da computação sem servidor em alguns cenários.
O Lambda é uma plataforma de computação sem servidor que permite que os desenvolvedores executem códigos sem a necessidade de servidores dedicados. Lambda é uma opção particularmente atraente para. NETdesenvolvedores que buscam reduzir os custos de infraestrutura. Com Lambda,. NETos desenvolvedores podem desenvolver e implantar aplicativos altamente escaláveis e potencialmente econômicos. Ao usar uma abordagem sem servidor, os desenvolvedores não provisionam mais servidores para lidar com solicitações de aplicativos. Em vez disso, os desenvolvedores podem criar funções que são executadas sob demanda. Isso torna uma abordagem sem servidor mais escalável, gerenciável e potencialmente mais econômica do que executar, gerenciar e escalar máquinas virtuais. Como resultado, você paga apenas pelos recursos usados pelo aplicativo, sem precisar se preocupar com recursos subutilizados ou custos de manutenção do servidor.
Os desenvolvedores podem usar plataformas modernas e multiplataforma. NETversões para criar aplicativos sem servidor que sejam rápidos, eficientes e econômicos. A. NETAs versões principais e mais recentes são uma estrutura gratuita e de código aberto que é mais adequada para execução em plataformas sem servidor em relação às anteriores. NETVersões do framework. Isso permite que os desenvolvedores reduzam o tempo de desenvolvimento e aumentem o desempenho do aplicativo. Moderno. NETtambém suporta uma variedade de linguagens de programação, incluindo C# e F#. Por esse motivo, é uma opção atraente para desenvolvedores que desejam criar arquiteturas modernas na nuvem.
Esta seção explica como você pode obter economia de custos usando o Lambda como uma opção sem servidor. Você pode otimizar ainda mais os custos ajustando os perfis de execução das funções do Lambda, dimensionando corretamente a alocação de memória das funções do Lambda, usando o Native e migrando para funções baseadas em Graviton. AOT
Impacto nos custos
O quanto você pode reduzir custos depende de vários fatores, incluindo quantas execuções suas funções sem servidor executarão, além da quantidade de memória alocada e da duração de cada função. AWS Lambda oferece um nível gratuito, que inclui um milhão de solicitações gratuitas por mês e 400.000 GB de segundos de tempo de computação por mês. Você pode reduzir significativamente os custos mensais de cargas de trabalho que estão dentro ou perto desses limites de nível gratuito.
Também pode haver custos adicionais ao usar um balanceador de carga com funções Lambda como alvo. Isso é calculado como a quantidade de dados processados pelo balanceador de carga para os destinos Lambda.
Recomendações de otimização de custos
Dimensione corretamente suas funções Lambda
O dimensionamento correto é uma prática essencial para a otimização de custos em. NETfunções Lambda baseadas em funções. Esse processo envolve a identificação da configuração de memória ideal que equilibra desempenho e economia, sem exigir alterações no código.
Ao configurar a memória para uma função Lambda, variando de 128 MB a 10.240 MB, você também ajusta a quantidade de v disponível durante a invocaçãoCPU. Isso permite que aplicativos CPU vinculados à memória ou a aplicativos vinculados acessem recursos adicionais durante a execução, levando a uma possível redução na duração da invocação e no custo geral.
No entanto, identificando a configuração ideal para seu. NETas funções Lambda baseadas em Lambda podem ser um processo manual e demorado, especialmente se as alterações forem frequentes. A ferramenta AWS Lambda
Power Tuning
Por exemplo, aumentar a memória para um. NETA função Lambda baseada em Lambda pode melhorar o tempo total de invocação e reduzir o custo sem afetar o desempenho. A configuração de memória ideal para uma função pode variar. A ferramenta AWS Lambda Power Tuning pode ajudar a identificar a configuração mais econômica para cada função.
No gráfico de exemplo a seguir, o tempo total de invocação melhora à medida que a memória aumenta para essa função Lambda. Isso leva a uma redução no custo da execução total sem afetar o desempenho original da função. Para essa função, a configuração de memória ideal para a função é de 512 MB, pois é aqui que a utilização de recursos é mais eficiente para o custo total de cada invocação. Isso varia de acordo com a função, e o uso da ferramenta em suas funções do Lambda pode identificar se elas se beneficiam do dimensionamento correto.
Recomendamos que você conclua esse exercício regularmente, como parte de qualquer teste de integração quando novas atualizações forem lançadas. Se for atualizado com pouca frequência, faça esse exercício periodicamente para garantir que as funções estejam ajustadas e dimensionadas corretamente. Depois de identificar a configuração de memória apropriada para suas funções do Lambda, você pode adicionar o dimensionamento correto aos seus processos. A ferramenta AWS Lambda Power Tuning gera uma saída programática que pode ser usada por seus fluxos de trabalho de CI/CD durante o lançamento do novo código. Isso permite automatizar a configuração da memória.
Você pode baixar a ferramenta AWS Lambda
Power Tuning
O Lambda também oferece suporte nativoAOT, o que permite. NETaplicativos a serem pré-compilados. Isso pode ajudar a reduzir custos ao reduzir os tempos de execução do. NETfunções. Para obter mais informações sobre a criação de AOT funções nativas, consulte. NETfunções com AOT compilação nativa na documentação do Lambda.
Evite o tempo de espera ocioso
A duração da função Lambda é uma dimensão usada para calcular o faturamento. Quando o código de função faz uma chamada de bloqueio, você é cobrado pelo tempo que ele espera para receber uma resposta. Esse tempo de espera pode aumentar quando as funções do Lambda são encadeadas ou quando uma função está atuando como orquestradora para outras funções. Se você tiver fluxos de trabalho, como operações em lote ou sistemas de entrega de pedidos, isso aumenta a sobrecarga de gerenciamento. Além disso, talvez não seja possível concluir toda a lógica do fluxo de trabalho e o tratamento de erros dentro do tempo limite máximo do Lambda de 15 minutos.
Em vez de lidar com essa lógica no código da função, recomendamos que você reestruture sua solução para usá-la AWS Step Functions
Mude para funções baseadas em Graviton
As funções Lambda alimentadas pelos processadores Graviton2 de próxima geração agora estão disponíveis ao público em geral. As funções do Graviton2, usando uma arquitetura ARM baseada em processador, foram projetadas para oferecer um desempenho até 19% melhor a um custo 20% menor para uma variedade de cargas de trabalho sem servidor. Com menor latência e melhor desempenho, as funções alimentadas pelos processadores Graviton2 são ideais para alimentar aplicativos sem servidor de missão crítica.
Migrar para funções Lambda baseadas em Graviton pode ser uma opção econômica para. NETdesenvolvedores que desejam otimizar seus custos do Lambda. As funções baseadas em Graviton usam processadores ARM baseados em vez dos processadores x86 tradicionais. Isso pode levar a uma economia significativa de custos sem sacrificar o desempenho.
Embora haja vários benefícios em migrar para funções baseadas em Graviton, também há vários desafios e considerações que recomendamos que você considere. Por exemplo, as funções baseadas em Graviton exigem o uso do Amazon Linux 2, que pode não ser compatível com todos. NETaplicações. Além disso, pode haver problemas de compatibilidade com bibliotecas ou dependências de terceiros que não são compatíveis com processadores ARM baseados.
Se você estiver correndo. NETCrie aplicativos de estrutura e, se quiser aproveitar as vantagens da tecnologia sem servidor com o Lambda, considere a possibilidade de portar os aplicativos para aplicativos modernos. NETusando o Assistente de portabilidade para. NET
O gráfico a seguir compara os resultados das arquiteturas x86 e ARM /Graviton2 para uma função que calcula números primos.
A função está usando um único thread. A menor duração para ambas as arquiteturas é relatada quando a memória é configurada com 1,8 GB. Acima disso, as funções Lambda têm acesso a mais de 1 vCPU, mas, nesse caso, a função não pode usar a energia adicional. Pelo mesmo motivo, os custos são estáveis com memória de até 1,8 GB. Com mais memória, os custos aumentam porque não há benefícios adicionais de desempenho para essa carga de trabalho. O processador Graviton2 está claramente fornecendo melhor desempenho e custos mais baixos para essa função de computação intensiva.
Para configurar sua função para usar e basear o ARM processador com o Graviton, faça o seguinte:
-
Faça login no AWS Management Console e abra o console Lambda
. -
Escolha a opção Criar função.
-
Em Function name (Nome da função), insira um nome.
-
Em Tempo de execução, escolha. NET6 (C#/ PowerShell).
-
Em Arquitetura, selecione arm64.
-
Faça as configurações adicionais necessárias e escolha Criar função.
Recursos adicionais
-
Otimizando o AWS Lambda custo e o desempenho usando AWS Compute Optimizer
(AWS Compute Blog) -
Otimizando seus AWS Lambda custos — Parte 1
(AWS Compute Blog) -
Otimizando seus AWS Lambda custos — Parte 2
(AWS Compute Blog) -
Construindo sem servidor. NETaplicativos sobre AWS Lambda o uso. NET
7 (Blog AWS de computação)