Oi, pessoal.
Neste artigo apresentarei o Azure Function App e suas Functions.
Então vamos começar entendendo como a Microsoft trata estes dois conceitos, que soam muito semelhantes:
Azure Function App:
É a infraestrutura de computação sem servidor fornecida pelo Azure para executar funções em nuvem. Ele é uma plataforma que fornece um ambiente para executar as “Functions”. E também oferece recursos adicionais, como gerenciamento de eventos, escalabilidade automática, monitoramento e registro de atividades.
Functions:
São blocos de código independentes que podem ser executados em resposta a eventos. São implementadas e executadas dentro do Azure Function App. Podem ser projetadas para executar tarefas diversas, como processar arquivos, enviar um e-mail, executar cálculos ou consultar APIs.
Resumindo, o Azure Function App fornece a infraestrutura e a plataforma necessárias para executar as Functions que ficam dentro dele.
E podemos criar várias Functions distintas dentro de um único Azure Function App. Como se fossem diferentes programas rodando em um computador.
É possível criar Functions em várias linguagens de programação, incluindo C#, Java, JavaScript, Python e TypeScript, e implementá-las em diferentes plataformas, como Windows, Linux e Docker.
Cada Function tem o seu próprio gatilho(trigger).
Por exemplo, você pode ter uma função que é acionada por um webhook HTTP e outra que é acionada por um evento de armazenamento de blob.
O Azure nos disponibiliza 18 modelos de Functions com diferentes triggers que podem ser usados no Azure Function App. Apertem os cintos, pois vamos dar um passeada por cada um deles.
1 - Azure Blob Storage trigger: acionado quando um novo arquivo é adicionado ou modificado em um contêiner de blob do Azure.
Exemplo de uso: processar uma imagem sempre que uma nova imagem é carregada em um contêiner de blob.
2 - Azure Cosmos DB trigger: acionado quando um novo documento é adicionado ou um documento existente é modificado em um banco de dados do Azure Cosmos DB.
Exemplo de uso: enviar uma notificação quando um novo pedido é registrado em um banco de dados Cosmos DB.
3 - Durable Functions activity: uma função que é acionada por um orquestrador do Durable Functions para executar uma tarefa específica.
Exemplo de uso: validar os dados do usuário antes de adicionar uma entrada a um banco de dados.
4 - Durable Functions HTTP starter: uma função que é acionada por uma solicitação HTTP e inicia um fluxo de trabalho Durable Functions.
Exemplo de uso: iniciar um fluxo de trabalho quando um usuário clica em um botão "Enviar" em um aplicativo da web.
5 - Durable Functions orchestrator: uma função que coordena um fluxo de trabalho Durable Functions.
Exemplo de uso: enviar um e-mail de confirmação após um usuário se inscrever em um serviço.
6 - Azure Event Grid trigger: acionado quando um evento é publicado em um tópico do Event Grid do Azure.
Exemplo de uso: enviar uma notificação quando um recurso do Azure é modificado.
7 - Azure Event Hub trigger: acionado quando uma mensagem é adicionada a um hub de eventos do Azure.
Exemplo de uso: processar dados de sensores em tempo real.
8 - HTTP trigger: acionado por uma solicitação HTTP, permitindo que você crie APIs RESTful.
Exemplo de uso: fornecer acesso a um recurso em um aplicativo da web.
9 - IoT Hub (Event Hub): acionado quando uma mensagem é enviada para um hub do IoT.
Exemplo de uso: monitorar sensores em um ambiente industrial.
10 - Kafka output: envia uma mensagem para um tópico do Apache Kafka.
Exemplo de uso: processar dados em tempo real de várias fontes.
11 - Kafka trigger: acionado quando uma mensagem é adicionada a um tópico do Apache Kafka.
Exemplo de uso: processar dados em tempo real de várias fontes.
12 - Azure Queue Storage trigger: acionado quando uma mensagem é adicionada a uma fila de armazenamento do Azure.
Exemplo de uso: processar pedidos em um sistema de comércio eletrônico.
13 - RabbitMQ trigger: acionado quando uma mensagem é adicionada a uma fila do RabbitMQ.
Exemplo de uso: processar pedidos em um sistema de comércio eletrônico.
14 - SendGrid: envia um e-mail usando o serviço SendGrid.
Exemplo de uso: enviar e-mails de confirmação após uma transação ser concluída.
15 - Azure Service Bus Queue trigger: acionado quando uma mensagem é adicionada a uma fila do Service Bus do Azure.
Exemplo de uso: processar pedidos em um sistema de comércio eletrônico.
16 - Azure Service Bus Topic trigger: acionado quando uma mensagem é adicionada a um tópico do Service Bus do Azure.
Exemplo de uso: enviar notificações quando um evento ocorre em um aplicativo.
17 - SignalR negotiate HTTP trigger: uma função que retorna um token de autenticação para um aplicativo da web usar com o SignalR.
Exemplo de uso: permitir que um aplicativo da web se conecte a um hub
SignalR.
18 - Timer trigger: acionado em intervalos regulares com base em uma programação definida.
Exemplo de uso: realizar uma limpeza de banco de dados diariamente.
Como pudemos ver, são muitas opções de gatilhos para automatização de tarefas.
Assim é quase irresistível gastarmos aquelas 5 horinhas criando um script para automatizar uma tarefa que toma 2 minutos do nosso tempo todos os dias, hahaha.
Mas agora falando sério, a criação destas Functions é simples. Os scripts podem ser criados localmente e depois enviados para o Azure. Uma opção é criá-los no VS Code e fazer o deploy através de uma extensão do Azure no próprio VS Code. É um processo bem prático e provavelmente será tema de um artigo futuro.
Além disso, o Azure Function App trata-se de um serviço altamente disponível, o que significa que suas funções estarão sempre “ON”, mesmo durante picos de tráfego. E ele gerencia automaticamente o dimensionamento e o balanceamento de carga para todas as Functions implantadas nele, garantindo que as funções sejam escalonadas de forma eficiente em resposta ao aumento ou diminuição da demanda.
Portanto, temos o Azure Function App como uma alternativa muito boa para automatizar tarefas e, em muitos casos, economizar custos com provisionamento e processamento, mantendo um bom nível de desempenho das aplicações.