Azure Durable Functions

Azure Set 29, 2019

Fala galera!

Uma das coisas que mais me chamou a atenção durante meu review do .NETConf foi entender finalmente o que eram as tais Durable Functions que tanto via passar pela minha timeline.

O Azure Functions é o serviço de serverless do Azure onde escrevemos pequenas funções orientadas a eventos para realizar tarefas bem específicas.

A vantagem de se usar Functions é o total desacoplamento de infraestrutura. Eu não sei quanto de máquina, qual máquina e quantas máquinas vão atender minha requisição. Eu não fico com uma máquina parada 24x7 esperando que eu envie uma requisição. Ao contrário, eu defino gatilhos que irão subir uma instância, executar meu código, aguardar um tempo para poder ser reaproveitada e morrer.

Apesar de parecer um pouco absurdo este modelo de processamento é muito útil em sistemas distribuídos, principalmente em arquiteturas de micros serviços onde criamos códigos especializados para as centenas de operaçõs reutilizáveis que mapeamos em nosso domínio de negócio.

O que são as Durable Functions

Uma das premissas é que por serem stateless o us de Functions nos leva a conhecer um pouco mais de infraestrutura como filas, publish / subscribe e a implementação de diferentes padrões arquiteturais para que  consigamos, por exemplo, executar sequencialmente um conjunto de Functions, ou monitorar o estado de uma operação de negócio para que então a Function seja iniciada, executar um conjunto de Functions em paralelo, ou acionar uma Function  a partir da ação de um usuário, em uma aprovação por exemplo.

As Durable Functions então são bibliotecas, desenvolvidas nas linguagens suportadas pelo Azure Functions, e que permitem, através de código, a definição destas orquestrações.

Atualmente as linguagens suportadas sÃo C#/F# e JavaSCript, mas as demais linguagens suportadas pelo runtime do Azure Functions já estão no roadmap.

Quais cenários são atendidos

No momento as Durable Functions Atendem os seguintes cenários:

  • Encadeamento de Funções;
  • Fun Out / Fun In
  • APIs asincronas;
  • Monitoramento;
  • Interação humana;
  • Agregador;

Uma melhor descrição de cada um dos cenários pode ser encontrada na documentação e recomendo muito a leitura, além é claro de navegar pelos repositórios de exemplo.

Resumo

Cada vez mais o modelo serverless será utilizado e ter a disposição ferramentas como as Durable Functions nos tira das costas grande parte do código de infraestrutura para manter resiliência, consistência dos dados e atuar em cenários mais complexos.

Além disto, citando apenas por aqui, o uso de serverless, se bem planejado pode refletir positivamente no consumo de nuvem de sua empresa, se tornando só nÃo estratégicamente recomendada no ponto de vista técnico, mas no ponto de vista financeiro também.

Até a próxima!

Alexandre Santos Costa

Desenvolvedor de software, atua na área de tecnologia há mais de 25 anos. Microsoft MVP em Visual Studio & Development Tools, palestra em diversos eventos pelo Brasil.