Power Automate and Azure Functions

No ecossistema Microsoft, o Power Automate reina como ferramenta low-code para automatizar tarefas. Mas, à medida que as necessidades crescem, muitos de nós na Torpedo.pt — desde a equipa de Vendas até ao Desenvolvimento — percebemos que determinados processos ficam morosos, caros ou difíceis de manter. 

Neste artigo mostramos porquê, apresentamos Azure Functions como alternativa flexível e escalável, e revelamos um caso prático que pode inspirar a próxima transformação digital da sua empresa.

Porque é que alguns fluxos no Power Automate se tornam um labirinto?

  • Limite de 500 ações por fluxo; acima disso a Microsoft recomenda dividir em child flows, aumentando a complexidade 1.
  • Profundidade de aninhamento máximo de 8 níveis, o que gera múltiplas condicionais difíceis de depurar 1.
  • Performance: loops “Apply to Each” sobre grandes conjuntos de dados podem multiplicar a duração em 20× 2.
  • Custo: conectores premium ou RPA não-assistido podem elevar a fatura para 150 $ por bot/mês 3 4.

Sintoma clássico

Um fluxo que começa simples — criar registos, enviar aprovações, atualizar CRM — acaba por conter dezenas de condições, loops e chamadas a APIs externas. Quando algo falha, localizar a etapa problemática pode ser tarefa de detetive digital.

Complex Power Automate workflow integrating Salesforce, Microsoft Dynamics, Teams, and SharePoint for sales document management and project collaboration
Complex Power Automate workflow integrating Salesforce, Microsoft Dynamics, Teams, and SharePoint for sales document management and project collaboration

 

Azure Functions: serverless, elástico e “pay-per-use”

Azure Functions permite executar código em C#, JavaScript, Python, PowerShell e mais, disparado por HTTP, filas, cron ou eventos na cloud. Paga-se apenas pela execução (primeiro 1 M execuções gratuitas/mês) 5.

Principais vantagens perante Power Automate:

  • Escalabilidade automática até centenas de instâncias sem esforço de administração 6 7.
  • Custos transparentes por consumo, sem licenças por utilizador ou conectores.
  • Código completo: liberdade para implementar lógicas avançadas, pacotes NuGet/NPM e testes unitários.
  • Latência reduzida e ausência de limites rígidos de ações ou profundidade.
  • Integração nativa com DevOps (CI/CD), Application Insights e IaC (Bicep/Terraform).

Resumo em bullet points SEO-friendly

  • Escalabilidade sob demanda sem servidor dedicado (serverless auto-scaling).
  • Pagamento por milissegundo de execução, com free tier inicial.
  • Suporte a múltiplas linguagens e bibliotecas de mercado.
  • Deploy contínuo via GitHub Actions ou Azure DevOps.
  • Monitorização detalhada com logs em tempo real e alertas.
  • Possibilidade de expor APIs REST seguras com Azure AD.
Architecture diagram showing a complex workflow implemented with Azure Functions integrating CosmosDB, Azure Queue, Azure Tables, BLOB Storage, SendGrid, and Twilio
Architecture diagram showing a complex workflow implemented with Azure Functions integrating CosmosDB, Azure Queue, Azure Tables, BLOB Storage, SendGrid, and Twilio

Caso prático: automatizar gestão de contratos


Desafio original em Power Automate

  1. Trigger: ficheiro PDF enviado para SharePoint “Contratos Pendentes”.
  2. 40+ passos:
    • Extração de metadados, loop pelos signatários, ramos condicionais por valor do contrato.
    • Envio de aprovações sequenciais em Teams.
    • Atualização de linhas em SQL Server e criação de pasta no OneDrive.
  3. Problemas sentidos:
    • 280 ações → manutenção difícil.
    • 3 min de execução média; picos acima do timeout de 120 s em chamadas HTTP externas.
    • Dependência de conector premium para SQL.

Reescrito em Azure Functions

  • Função HTTP “UploadHook” gera mensagem numa Azure Queue.
  • Função “ProcessContract” lê a fila, usa AI Builder via REST para extrair metadados e grava num Cosmos DB.
  • Orquestração com Durable Functions para enviar aprovações em paralelo e aguardar respostas.
  • Função “Finalize” atualiza SQL e envia notificação por SendGrid.
  • Resultado:
    • Tempo médio 15 s (cold start mitigado com Premium plan), custo estimado < 1 € por 10 000 contratos.
    • Código versionado em GitHub; CI/CD automático para produção.

Quando escolher cada um?

CritérioPower AutomateAzure Functions
Equipa sem devsIdealRequer competências de código
<500 ações, conectores 365Simples e rápidoOverkill
Alto volume/tempo-realPode estrangularEscala automaticamente 7
Custo previsível por utilizadorVariável por consumo
Lógica custom avançadaLimitado a expressõesCódigo livre e testes

Boas práticas de transição

  1. Mapear passos do fluxo para triggers e bindings de Functions (HTTP, Queue, Blob).
  2. Injetar configuração (connection strings, chaves) via Azure Key Vault.
  3. Automatizar deploy com pipelines YAML.
  4. Manter documentação no repositório e dashboards em Application Insights.

Conclusão

Power Automate continua imbatível para automação rápida e low-code, mas quando o seu workflow atinge limites de performance, escalabilidade ou custo, Azure Functions entra como super-poder. Combinar ambas as tecnologias permite prototipar depressa e escalar sem refazer tudo de raiz. Na torpedo.pt ajudamos a desenhar esta arquitetura híbrida, reduzindo time-to-market e poupando na fatura cloud.

Fale connosco e acelere a transformação digital da sua empresa!