Cenários do Azure Functions

Muitas vezes, criamos sistemas para reagir a uma série de eventos críticos. Se você estiver criando uma API Web, respondendo a alterações de banco de dados, processando fluxos de eventos ou mensagens, o Azure Functions pode ser usado para implementá-las.

Em muitos casos, uma função integra-se a uma matriz de serviços de nuvem para fornecer implementações ricas em recursos. Veja a seguir um conjunto comum (mas não exaustivo) de cenários para o Azure Functions.

Selecione sua linguagem de desenvolvimento na parte superior do artigo.

Processar uploads de arquivo

Há várias maneiras de usar funções para processar arquivos dentro ou fora de um contêiner de armazenamento de blobs. Para saber mais sobre as opções para disparar em um contêiner de blob, confira Trabalhando com blobs na documentação de melhores práticas.

Por exemplo, em uma solução de varejo, um sistema de parceiros pode enviar informações do catálogo de produtos como arquivos para o armazenamento de blobs. Você pode usar uma função disparada por blob para validar, transformar e processar os arquivos no sistema main conforme eles são carregados.

Diagrama de um processo de upload de arquivo usando o Azure Functions.

Os tutoriais a seguir usam um gatilho de Blob (baseado em Grade de Eventos) para processar arquivos em um contêiner de blob:

Por exemplo, usando o gatilho de blob com uma assinatura de evento em contêineres de blob:

[FunctionName("ProcessCatalogData")]
public static async Task Run([BlobTrigger("catalog-uploads/{name}", Source = BlobTriggerSource.EventGrid, Connection = "<NAMED_STORAGE_CONNECTION>")]Stream myCatalogData, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myCatalogData.Length} Bytes");

    using (var reader = new StreamReader(myCatalogData))
    {
        var catalogEntry = await reader.ReadLineAsync();
        while(catalogEntry !=null)
        {
            // Process the catalog entry
            // ...

            catalogEntry = await reader.ReadLineAsync();
        }
    }
}

Processamento de eventos e fluxo em tempo real

Muita telemetria é gerada e coletada de aplicativos em nuvem, dispositivos IoT e dispositivos de rede. O Azure Functions pode processar esses dados quase em tempo real como o caminho crítico e, em seguida, armazená-los no Azure Cosmos DB para uso em um painel de análise.

Suas funções também podem usar gatilhos de evento de baixa latência, como a Grade de Eventos, e saídas em tempo real, como o SignalR, para processar dados quase em tempo real.

Diagrama de um processo de fluxo em tempo real usando o Azure Functions.

Por exemplo, usando o gatilho de hubs de eventos para ler de um hub de eventos e a associação de saída para gravar em um hub de eventos depois de depurar e transformar os eventos:

[FunctionName("ProcessorFunction")]
public static async Task Run(
    [EventHubTrigger(
        "%Input_EH_Name%",
        Connection = "InputEventHubConnectionString",
        ConsumerGroup = "%Input_EH_ConsumerGroup%")] EventData[] inputMessages,
    [EventHub(
        "%Output_EH_Name%",
        Connection = "OutputEventHubConnectionString")] IAsyncCollector<SensorDataRecord> outputMessages,
    PartitionContext partitionContext,
    ILogger log)
{
    var debatcher = new Debatcher(log);
    var debatchedMessages = await debatcher.Debatch(inputMessages, partitionContext.PartitionId);

    var xformer = new Transformer(log);
    await xformer.Transform(debatchedMessages, partitionContext.PartitionId, outputMessages);
}

Machine learning e IA

Além do processamento de dados, o Azure Functions pode ser usados para inferir em modelos. A Aextensão de associação do Azure OpenAI permite integrar facilmente recursos e comportamentos do serviço Azure OpenAI em suas execuções de código de função.

As funções podem se conectar a recursos OpenAI para habilitar conclusões de texto e chat, usar assistentes e aproveitar inserções e pesquisa semântica.

Uma função também pode chamar um modelo TensorFlow ou serviços de IA do Azure para processar e classificar um fluxo de imagens.

Diagrama de um processo de aprendizado de máquina e IA usando o Azure Functions.

Executar tarefas agendadas

As funções permitem que você execute seu código com base em um agendamento cron definido.

Saiba como Criar uma função no portal do Azure executada segundo uma agenda.

Um banco de dados do cliente de serviços financeiros, por exemplo, pode ser analisado para entradas duplicadas a cada 15 minutos para evitar que várias comunicações saiam para o mesmo cliente.

Diagrama de uma tarefa agendada em que uma função limpa um banco de dados a cada 15 minutos, desduplicando as entradas com base na lógica de negócios.

[FunctionName("TimerTriggerCSharp")]
public static void Run([TimerTrigger("0 */15 * * * *")]TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

    // Perform the database deduplication
}

Criar uma API Web escalonável

Uma função disparada por HTTP define um ponto de extremidade HTTP. Esses pontos de extremidade executam código de função que pode se conectar a outros serviços diretamente ou usando extensões de associação. Você pode compor os pontos de extremidade em uma API baseada na Web.

Você também pode usar um ponto de extremidade de função disparada por HTTP como uma integração de webhook, como os webhooks do GitHub. Dessa forma, você pode criar funções que processam dados de eventos do GitHub. Para saber mais, confira Monitorar eventos do GitHub usando um webhook com o Azure Functions.

Diagrama de processamento de uma solicitação HTTP usando o Azure Functions.

Para obter exemplos, confira o seguinte:

[FunctionName("InsertName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
    [CosmosDB(
        databaseName: "my-database",
        collectionName: "my-container",
        ConnectionStringSetting = "CosmosDbConnectionString")]IAsyncCollector<dynamic> documentsOut,
    ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    string name = data?.name;

    if (name == null)
    {
        return new BadRequestObjectResult("Please pass a name in the request body json");
    }

    // Add a JSON document to the output container.
    await documentsOut.AddAsync(new
    {
        // create a random ID
        id = System.Guid.NewGuid().ToString(), 
        name = name
    });

    return new OkResult();
}

Criar um fluxo de trabalho sem servidor

As funções geralmente são o componente de computação em uma topologia de fluxo de trabalho sem servidor, como um fluxo de trabalho dos Aplicativos Lógicos. Você também pode criar orquestrações de execução longa usando a extensão Durable Functions. Para obter mais informações, confira Visão geral do Durable Functions.

Um diagrama de combinação de uma série de fluxos de trabalho sem servidor específicos usando o Azure Functions.

Responder a alterações no banco de dados

Há processos em que talvez seja necessário registrar, auditar ou executar alguma outra operação quando os dados armazenados forem alterados. Os gatilhos de funções fornecem uma boa maneira de ser notificado sobre alterações de dados para inicializar essa operação.

Diagrama de uma função usada para responder a alterações no banco de dados.

Considere os seguintes exemplos:

Criar sistemas de mensagens confiáveis

Você pode usar o Functions com os serviços de mensagens do Azure para criar soluções avançadas de mensagens controladas por eventos.

Por exemplo, você pode usar gatilhos em filas do Armazenamento do Microsoft Azure como uma maneira de encadear uma série de execuções de função. Ou use filas e gatilhos do barramento de serviço para um sistema de pedidos online.

Diagrama do Azure Functions em um sistema de mensagens confiável.

O artigo a seguir mostra como gravar a saída em uma fila de armazenamento.

E esses artigos mostram como disparar de uma fila ou tópico do Barramento de Serviço do Azure.

Próximas etapas