Serverless com C# e Azure Functions – Parte 1: Introdução

Recentemente fui aprovado no exame de certificação da Microsoft AZ-204: Developing Microsoft Azure Solutions. Assim como fiz com a série de artigos sobre C# no meu blog do Medium, eu decidi compartilhar conhecimento aqui para ajudar aqueles que queiram se preparar para o exame e também conhecer mais sobre a plataforma de computação em nuvem Microsoft Azure.

Nesta série de artigos vou abordar o desenvolvimento de soluções Serverless utilizando C# e Azure Functions, que é o serviço de computação Serverless da plataforma Microsoft Azure.

Código Fonte a ser evoluído durante a série de artigos pode ser encontrado aqui.

O que é Serverless

Serverless se refere a criação e utilização de recursos de nuvem que não exigem gerenciamento de infraestrutura. É importante deixar claro que existe uma infraestrutura por trás, existe um servidor em algum lugar mas o ponto aqui é que não existe a carga de gerenciamento dessa infraestrutura para os administradores.

Aplicado à área de desenvolvimento de software, isso se expressa através de funções Serverless.

Com isso, aumentam a produtividade ao permitir que os programadores foquem mais no negócio do que em requisitos de infraestrutura.

Funções Serverless são componentes de alta granularidade que permitem a execução de código com um propósito bem definido.

Podem ser executados com diferentes tipos de gatilhos, como chamadas HTTP, mensagens em fila, upload de arquivos, Timers, entre outros.

Ao utilizar gatilhos HTTP podem representar endpoints de uma API, sendo comumente utilizados em conjunto com serviços de API Gateway, como o Azure API Management.

Falando no Azure, o Azure Functions é o serviço sob demanda para execução de funções serverless na nuvem Microsoft Azure.

Vantagens

Existem diversas vantagens associadas ao Serverless e especificamente ao serviço do Azure Functions, como:

  • Escala automática de acordo com a demanda
  • Redução de custos ao não gastar com recursos inativos/ociosos
  • Eliminação de manutenção de servidores
  • Excelente também para validação de ideias e projetos pessoais

Essa última eu gosto bastante, sendo bem honesto. Já publiquei projetos pessoais em poucas semanas com o uso do serverless, tudo hospedado no Azure, de maneira bem prática.

Requisitos

A ferramenta utilizada para o desenvolvimento de Azure Functions nessa série de artigos é o Visual Studio Code. Será necessário instalar:

Em um artigo futuro a CLI do Azure precisará ser utilizada, mas não nesse início.

Criando um projeto Serverless com Azure Functions

A primeira coisa aqui é entender que um projeto de função Azure Functions permite uma ou mais funções, que podem responder a um gatilho específico. Por exemplo, é possível ter um projeto com múltiplas funções com gatilho HTTP representando uma API, uma função com gatilho Timer representando uma operação de rotina no sistema, e finalmente uma função com gatilho de fila que representa uma operação decorrente de um evento do sistema.

O comando para criar um projeto Azure Function está logo abaixo:

func init AwesomeShopServerless --dotnet
cd AwesomeShopServerless

A estrutura de pasta criada foi a seguinte.

Estrutura inicial criada

O arquivo host.json pode conter dados de configuração para as funções contidas no projeto Azure Functions.

Já o local.settings.json também armazena configurações do projeto, mas somente são usadas em projetos executados localmente, podendo conter informações secretas como cadeias de conexão. Por essa razão o local.settings.json é excluído do controle do código-fonte por padrão pelo arquivo .gitignore. Algo bem interessante é que é possível sincronizar os dados de configurações locais do local.settings.json para as configurações da aplicação Azure Functions publicada no Azure.

O projeto, no momento, não tem funções criadas. No próximo artigo focarei na criação de funções utilizando o Azure Functions Core Tools pela linha de comando, apresentando os diferentes tipos de funções possíveis de serem criadas e suas características específicas. Também escreverei um artigo focado unicamente no serviço Azure Functions e suas camadas de preço e configurações.

Concluindo

Neste artigo foi dado início de uma série de artigos focados em funções serverless com C# e Azure Functions na prática, sendo apresentados conceitos introdutórios sobre serverless, Azure Functions e como criar seu primeiro projeto de Azure Functions usando o Azure Functions Core Tools. O projeto está vazio, por enquanto.