Desenvolvimento Serverless com .NET Core: implementando sua primeira Azure Function
A adoção de arquiteturas serverless vem ganhando cada vez mais força em projetos de software nos mais variados cenários, com o baixo custo de alternativas como Azure Functions favorecendo em muito esta prática. A possibilidade de se preocupar menos com questões de infraestrutura e mais na entrega de soluções também constitui um fator importante e que merece ser destacado em tais casos.
Na imagem a seguir (print gerado no início de Outubro/2019) podemos ter uma dimensão do baixíssimo preço ao optar pelo uso de Azure Functions:
Desde a versão 2.x das Azure Functions é possível implementar aplicações serverless com .NET Core, o que abre caminho para o desenvolvimento multiplataforma de projetos combinando a codificação com estas tecnologias a partir de ambientes Windows, Linux ou Mac. Uma outra possibilidade seria a criação de Azure Functions através do próprio Portal do Microsoft Azure.
Neste artigo demonstrarei os primeiros passos na construção de soluções serverless fazendo uso para isto do .NET Core e do serviço Azure Functions, com a implementação de uma aplicação no Portal do Azure.
Criando uma Function App
O primeiro passo para a implementação de Azure Functions na nuvem consiste na criação de uma Function App, recurso ao qual poderão estar vinculadas várias funções:
Ao gerar uma nova Function App preencher as seguintes configurações:
- O nome do recurso em App name;
- Selecionar um grupo de recursos em Resource Group;
- O sistema operacional em que será hospedada a aplicação em OS (para este exemplo optei por Windows);
- O plano de hospedagem em Hosting Plan. Ao optar por Consumption Plan teremos uma aplicação que escala automaticamente com base em seu nível de utilização. Maiores detalhes sobre essa alternativa podem ser encontrados neste link;
- O Data Center do Azure em Location.
E:
- Em Runtime Stack selecionar .NET Core. Outras opções possíveis no Portal do Azure são Node.js, Java e PowerShell Core;
- Uma conta de armazenamento (nova ou pré-existente) deverá ser indicada em Storage;
- Temos ainda a possibilidade de configurar o Application Insights para monitoramento da Function App (este recurso foi desativado para o exemplo descrito aqui).
Concluir a geração da Function App acionando o botão Create.
Implementando uma Azure Function no Portal
Consultando o grupo de recursos Serverless aparecerão a Function App e demais itens criados para esta aplicação:
Acessando a Function App groffefunctions podemos iniciar a implementação de uma nova Azure Function através da opção + New function:
O tipo da Azure Function a ser criada será Webhook + API, o que fará com que o disparo da mesma aconteça mediante o envio de requisições HTTP:
Ao final deste processo aparecerá a função HttpTrigger1, com sua implementação default:
Neste momento muitos se perguntarão: como posso modificar o nome de uma Azure Function criada a partir do Portal?
Acessando o item Console veremos que a Azure Function HttpTrigger1 e seu conteúdo estão organizados como um diretório vinculado à Function App:
Podemos voltar um nível de diretório acima com a instrução cd.., modificando em seguida o nome da função com a instrução:
rename HttpTrigger1 Saudacao
Atualizando a Function App groffefunctions será listada agora a função Saudacao:
Alterar agora o código de Saudacao para o conteúdo da listagem a seguir:
Concluir os ajustes acionando o botão Save. Será iniciada então a compilação da Azure Function, com o resultado deste procedimento aparecendo em Log (a próxima imagem mostra sucesso ao compilar a função):
Testes
Para testar a função Saudacao acessar a opção Get function URL:
Aparecerá agora um popup com uma URL que deverá ser copiada acionando o botão Copy:
Um teste via browser com a URL:
Produzirá como retorno:
Já um teste via Postman com o envio de um nome no corpo da requisição irá gerar como retorno:
Recentemente aconteceu também uma live no Canal .NET sobre a implementação de soluções Serverless empregando Azure Functions. A gravação está disponível no YouTube e pode ser assistida gratuitamente por todos aqueles interessados em conhecer mais sobre as tecnologias mencionadas neste artigo: