Serverless em C#: AWS Lambda, Azure Functions e o futuro do desenvolvimento serverless

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que Serverless não é apenas hype, mas uma salvação para seu bolso e seus nervos

\n\n

Imagine: você escreveu uma API incrível em C#, colocou-a em uma máquina virtual, e ela fica ociosa 23 horas por dia. Você está pagando pelo ar. Familiar? Se sim, então funções serverless em C# são sua tábua de salvação. A computação serverless (ou Function-as-a-Service) permite que você execute código apenas quando ele é realmente necessário. Sem aluguel de servidores, sem configuração manual de CI/CD para infraestrutura, sem dores de cabeça com escalabilidade.

\n\n

Neste artigo, vamos analisar como escrever funções serverless em C# para AWS Lambda e Azure Functions, compará-las, escrever código real e entender por que esta é a melhor escolha para microsserviços, manipuladores de eventos e backend para aplicativos móveis. E sim, terá muito código aqui — sem enrolação.

\n\n

AWS Lambda e C#: como unir duas ferramentas poderosas

\n\n

AWS Lambda C# é, provavelmente, a opção mais popular para desenvolvedores .NET que trabalham com Amazon Web Services. O Lambda suporta .NET Core 3.1, .NET 6, .NET 8 e até .NET 9 (verifique a atualidade no momento da leitura). A principal vantagem é que você escreve no C# que já conhece, e a AWS cuida do runtime.

\n\n

Criando sua primeira função Lambda em C#

\n\n

Para começar, instale o AWS Toolkit para Visual Studio ou use o .NET CLI. Vamos criar um projeto com o template "AWS Lambda Project".

\n\n
dotnet new lambda.EmptyFunction --name HelloWorldFunction\ncd HelloWorldFunction\ndotnet add package Amazon.Lambda.Core\ndotnet add package Amazon.Lambda.Serialization.SystemTextJson
\n\n

Agora vamos escrever a função em si. Um exemplo clássico — processar uma requisição do API Gateway e retornar JSON.

\n\n
using Amazon.Lambda.Core;\nusing Amazon.Lambda.Serialization.SystemTextJson;\n\n[assembly: LambdaSerializer(typeof(DefaultLambdaJsonSerializer))]\n\npublic class Function\n{\n    public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest input, ILambdaContext context)\n    {\n        var message = $"Olá, mundo! Sua requisição: {input.Body ?? "vazia"}";\n        context.Logger.LogInformation("Função Lambda invocada");\n\n        return new APIGatewayProxyResponse\n        {\n            StatusCode = 200,\n            Body = JsonSerializer.Serialize(new { message, timestamp = DateTime.UtcNow }),\n            Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }\n        };\n    }\n}
\n\n

Observe: o código é assíncrono, usa serialização JSON embutida e logging. Este é um produto mínimo viável que já pode funcionar sob carga.

\n\n

Por que AWS Lambda é vantajoso para C#?

\n
    \n
  • Cold start: A AWS otimizou a inicialização de funções .NET com o SnapStart — agora a inicialização leva menos de 200 ms.
  • \n
  • Integração: Funciona nativamente com S3, DynamoDB, SQS, API Gateway.
  • \n
  • Monitoramento: CloudWatch coleta logs, métricas e erros.
  • \n
\n\n

Azure Functions para C#: uma alternativa digna da Microsoft

\n\n

Se seu projeto já está vinculado ao ecossistema Microsoft (Azure DevOps, Active Directory, SQL Server), então Azure Functions C# pode ser mais conveniente. Elas suportam tanto o processo isolado (isolated process) quanto o modelo in-process.

\n\n

Exemplo de função em C# para Azure

\n\n

Vamos criar um trigger HTTP usando o Azure Functions Core Tools:

\n\n
func init MyFunctionApp --dotnet-isolated\ncd MyFunctionApp\nfunc new --name HttpExample --template "HTTP trigger"
\n\n

Código da função:

\n\n
using Microsoft.Azure.Functions.Worker;\nusing Microsoft.Extensions.Logging;\n\npublic class HttpExample\n{\n    private readonly ILogger<HttpExample> _logger;\n\n    public HttpExample(ILogger<HttpExample> logger)\n    {\n        _logger                

Blogs

Book Recommendations