Considere a opção sem servidor. 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á.

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 pode ajudá-lo a identificar a configuração apropriada analisando um conjunto de configurações de memória em relação a um exemplo de carga útil.

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.

Gráfico do tempo de invocação

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 gratuitamente. Para obter instruções sobre como usar a ferramenta, consulte Como executar a máquina de estado em GitHub.

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 Functionscomo orquestradora do fluxo de trabalho. Ao usar um fluxo de trabalho padrão, você é cobrado por cada transição de estado dentro do fluxo de trabalho, em vez da duração total do fluxo de trabalho. Além disso, você pode mover o suporte para novas tentativas, condições de espera, fluxos de trabalho de erro e retornos de chamada para a condição de estado para permitir que suas funções do Lambda se concentrem na lógica de negócios. Para obter mais informações, consulte Otimizando seus AWS Lambda custos — Parte 2 no blog sobre AWS computação.

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. Isso pode ajudar você a acelerar a portabilidade do legado. NETaplicações modernas. NET, permitindo que o aplicativo seja executado no Linux.

O gráfico a seguir compara os resultados das arquiteturas x86 e ARM /Graviton2 para uma função que calcula números primos.

Comparação entre arquiteturas x86 e ARM /Graviton2

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:

  1. Faça login no AWS Management Console e abra o console Lambda.

  2. Escolha a opção Criar função.

  3. Em Function name (Nome da função), insira um nome.

  4. Em Tempo de execução, escolha. NET6 (C#/ PowerShell).

  5. Em Arquitetura, selecione arm64.

  6. Faça as configurações adicionais necessárias e escolha Criar função.

Recursos adicionais