Implementação do Azure Functions

Resumo de gatilhos/associações do Functions, padrões do Durable Functions e comparação de planos de hospedagem.

Para o exame AZ-204, voce precisa distinguir claramente entre os conceitos de triggers e bindings no Azure Functions, as diferencas entre planos de hospedagem e os padroes do Durable Functions.

 

O que e o Azure Functions?

Imagine uma maquina de vendas automatica. Uma bebida sai apenas quando voce insere uma moeda (um evento), e nada funciona enquanto voce esta esperando. O Azure Functions funciona da mesma forma. O codigo e executado apenas quando um evento ocorre, e nenhum custo e incorrido no restante do tempo. Essa abordagem e chamada de sem servidor (serverless).

Sem servidor nao significa que nao ha servidores. Significa que os desenvolvedores nao precisam gerenciar servidores diretamente. O Azure prepara, executa e gerencia os servidores em seu nome.

 

Triggers

Um trigger e um evento que faz uma funcao ser executada. Cada funcao deve ter exatamente um trigger. Pense em uma campainha. Alguem deve pressionar a campainha (trigger) para que o som toque dentro de casa (execucao da funcao). Assim como duas campainhas nao podem estar conectadas a uma casa ao mesmo tempo, apenas um trigger e permitido por funcao.

| Trigger | Descricao | Exemplo de uso | |---------|-----------|----------------| | HTTP | Dispara quando uma solicitacao HTTP chega | API REST, tratamento de webhooks | | Timer | Dispara em um horario definido (expressao cron) | Gerar relatorios a meia-noite todos os dias | | Blob Storage | Dispara quando um arquivo Blob e carregado ou modificado | Redimensionar imagem apos upload | | Queue Storage | Dispara quando uma mensagem entra na fila | Processar itens de trabalho assincronos | | Event Grid | Dispara quando ocorre um evento do Event Grid | Responder a varios eventos do Azure | | Service Bus | Dispara quando uma mensagem do Service Bus chega | Processamento de mensagens empresariais | | Cosmos DB | Dispara no feed de alteracoes do Cosmos DB | Processar alteracoes do BD em tempo real |

Regra fundamental: Apenas um trigger por funcao.

 

Bindings

Os bindings sao como uma funcao le ou escreve em outros servicos sem escrever codigo SDK ou de biblioteca de cliente. Como um carregador USB, voce nao precisa entender circuitos eletricos complexos — voce apenas conecta e funciona.

Binding de entrada (Input Binding): Le automaticamente dados externos quando a funcao comeca Binding de saida (Output Binding): Escreve automaticamente o resultado da funcao em um servico externo

Exemplo: Receber uma solicitacao via trigger HTTP, ler dados com um binding de entrada do Cosmos DB, enviar resultados para uma fila com um binding de saida do Queue Storage. Em nenhum momento voce precisa inicializar um SDK ou gerenciar conexoes manualmente.

| Tipo | Descricao | Exemplo | |------|-----------|---------| | Trigger | O que faz a funcao ser executada (exatamente um obrigatorio) | Solicitacao HTTP, chegada de mensagem na fila | | Binding de entrada | Ler dados durante a execucao da funcao (multiplos permitidos) | Ler arquivo Blob, consultar documento Cosmos DB | | Binding de saida | Escrever dados apos a execucao da funcao (multiplos permitidos) | Enviar mensagem para fila, salvar arquivo Blob |

 

Planos de Hospedagem (Hosting Plans)

Isso determina como sua funcao e executada. Voce deve escolher uma das tres opcoes.

Plano de Consumo (Consumption Plan)

A opcao serverless mais basica. E como um cartao de transporte pre-pago onde voce paga apenas quando viaja — nenhum dinheiro sai enquanto espera, apenas quando embarca no onibus (quando a funcao e executada).

Cobrado por numero de execucoes e duracao da execucao Escalonamento automatico: Escala instancias automaticamente conforme o trafego aumenta Pode ocorrer inicio a frio (cold start): Se uma funcao nao e usada por um tempo, a primeira execucao pode ter um atraso Tempo limite de execucao: Maximo 10 minutos (padrao 5 minutos)

Plano Premium (Premium Plan)

Uma versao melhorada do Plano de Consumo que elimina os inicios a frio. Instancias pre-aquecidas estao sempre em espera, permitindo execucao imediata.

Sem inicio a frio: Instancias pre-aquecidas estao sempre prontas Integracao VNet: Acesso a recursos em redes privadas Duracao de execucao ilimitada Opcoes de CPU e memoria mais potentes

Plano Dedicado (Dedicated Plan / App Service Plan)

Executa funcoes em cima de um App Service Plan existente. Util quando voce ja tem um App Service Plan e quer executar funcoes sem custo adicional.

Sempre em execucao: Instancias estao sempre ativas Pode aproveitar o App Service Plan existente Custos previsiveis

| Plano | Inicio a frio | Modelo de faturamento | Suporte VNet | |-------|--------------|----------------------|-------------| | Consumption | Sim | Baseado em execucao | Nao | | Premium | Nao | Sempre ativo + baseado em execucao | Sim | | Dedicated | Nao | Taxa do App Service Plan | Sim |

!3 planos de hospedagem do Azure Functions

Durable Functions

As Functions regulares sao ideais para tarefas unicas. Mas e se voce precisar executar varios passos em sequencia, ou executar varias tarefas em paralelo e esperar ate que todas terminem? O Durable Functions lida com esses fluxos de trabalho complexos mantendo o estado.

Padroes do Durable Functions

Encadeamento de funcoes (Function Chaining)

Executa multiplas funcoes em sequencia. Como uma receita culinaria com passo 1, passo 2, passo 3 em ordem — o resultado de cada passo e passado para o proximo.

Exemplo de uso: Upload de arquivo, verificacao de virus, conversao de imagem, salvar

Distribuicao e coleta (Fan-out / Fan-in)

Executa multiplas tarefas em paralelo, espera que todas terminem e depois agrega os resultados. Como contatar multiplas pessoas simultaneamente ao preparar uma reuniao e aguardar ate que todos respondam.

Exemplo de uso: Consultar dados meteorologicos de multiplas regioes simultaneamente e depois agregar resultados

API HTTP assincrona (Async HTTP API)

Inicia uma tarefa de longa duracao e permite ao cliente verificar o status mais tarde. Semelhante ao rastreamento de pacotes — voce nao fica na porta esperando imediatamente apos o envio, mas verifica o status mais tarde com o numero de rastreamento.

Monitor

Verifica repetidamente ate que uma determinada condicao seja atendida. Como verificar repetidamente o painel de partidas em um aeroporto enquanto espera o seu voo.

Interacao humana (Human Interaction)

Um fluxo de trabalho que aguarda a aprovacao de uma pessoa. Como uma cadeia de aprovacao, uma pessoa deve aprovar manualmente antes que o fluxo de trabalho avance para o proximo passo. Se nenhuma aprovacao chegar dentro de um limite de tempo, um processo alternativo (escalonamento) prossegue automaticamente.

| Padrao | Caracteristica principal | Exemplo de uso | |--------|------------------------|----------------| | Encadeamento | Execucao sequencial, passa resultado anterior para o proximo passo | Pipeline de dados | | Fan-out / Fan-in | Execucao paralela e depois agregar | Chamar multiplas APIs simultaneamente | | API HTTP assincrona | Rastrear progresso de tarefa de longa duracao | Processamento de arquivos grandes | | Monitor | Verificar repetidamente ate atender condicao | Sondagem de status | | Interacao humana | Aguardar aprovacao humana | Fluxo de trabalho de aprovacao |

 

Pontos-chave do exame

"O evento que faz uma funcao ser executada, exatamente um permitido" -- Trigger

"Ler dados sem escrever codigo SDK" -- Binding de entrada (Input Binding)

"Escrever dados sem escrever codigo SDK" -- Binding de saida (Output Binding)

"Pagar apenas quando executado, possiveis inicios a frio" -- Plano de Consumo (Consumption Plan)

"Sem inicio a frio, instancias sempre prontas" -- Plano Premium (Premium Plan)

"Executar em cima do App Service Plan existente" -- Plano Dedicado (Dedicated Plan)

"Executar multiplas funcoes em sequencia" -- Durable Functions Encadeamento

"Executar tarefas em paralelo e esperar que todas completem" -- Durable Functions Fan-out / Fan-in

"Rastrear o status de uma tarefa de longa duracao" -- Durable Functions API HTTP assincrona

"Fluxo de trabalho que aguarda a aprovacao de uma pessoa" -- Durable Functions Interacao humana

"Trigger que dispara em um horario programado" -- Trigger de temporizador (expressao cron)

"Dispara automaticamente quando um Blob e carregado" -- Trigger de Blob Storage

Voltar à lista do blog