SlideShare uma empresa Scribd logo
1 de 23
Azure Durable Functions
Ítalo Bruno Duarte da Luz
Senior Software Engineer - XP Inc
italo.luz@xpi.com.br
O que são “Durable Functions”
É uma extensão para
Azure Functions
Escrever funções
com estado em um
ambiente serverless
Definir workflows em
código
O que são Azure Functions?
Functions as a Service
(FaaS)
Triggers
Timer
HTTP Request
Queue Message
Languages
C#, F#, Java,
JavaScript,
TypeScript, Python,
PowerShell, Go e
Rust
Bindings
SendGrid
EventHub
RabbitMQ
O que é “Serverless”?
Deploy sem precisar
se preocupar com
infraestrutura
Auto scaling
Modelo de
precificação
baseado em
consumo
Porque usar Durable Function?
Encadeamento
de Funções
Workflow
Fan-out
Fan-in
Workflow
Noções Básicas de Durable Functions
Defina fluxos de trabalho no código
- Execução paralela
- Tratamento de erros
- Controle em um único ponto através da “Orquestrator Function”
Suporta vários padrões de fluxos de trabalho
- Fan Out/Fan In, Monitors, etc.
Resolve o problema do estado
- Acompanha o progresso do fluxo de trabalho
Benefícios
Durable
Functions
1. Defina fluxos de trabalho no código
- Fluidez no entendimento do quadro geral
- Ótima separação de responsabilidades
2. Fluxos de trabalho complexos fáceis de implementar
- Encadeamento de Funções
- Fan-Out e Fan-In
- Monitoramento
3. Consolidação do tratamento de exceções
4. Verifique o progresso ou cancele os fluxos de trabalho
5. Gerencia o estado para você
Conceitos Chave Durable Function
Orquestration Function
- Define o fluxo de trabalho
- Aciona as funções de atividade
- Dorme durante as atividades
Activity Function
- Executa uma única etapa em um fluxo de trabalho
- Pode receber e/ou retornar dados
Starting "Orquestrations"
- DurableClient Binding
Exemplo Durable Function Workflow
Durable
Client
Activity
Function 1
Activity
Function 2
Activity
Function 3
Event Hub Trigger
Azure Function
Orquestrator
Function
Armazenamento de Estado Durable Functions
Filas de armazenamento
- Mensagens para acionar a próxima função
Tabelas de armazenamento
- Armazene o estado das orquestrações
Event Sourcing
- Nunca atualiza linhas, apenas acrescenta novas
- Armazene o histórico de execução completo
Durable Functions usam o armazenamento do Azure
Exemplo Event Sourcing
Orquestrador
Iniciado
Atividade 1
Agendada
Orquestrador
Dorme
Atividade 1
Concluída
Orquestrador
Concluído
Orquestrador
Acorda
Atividade 2
Agendada
Orquestrador
Dorme
Atividade 2
Concluída
Orquestrador
Acorda
Conta de armazenamento Durable Functions
Você fornece a string de conexão
- Veja os detalhes com o Azure Storage Explorer
"Task Hub"
- O armazenamento usado por funções duráveis
- Você pode usar vários hubs de tarefas
- Eles podem compartilhar uma conta de armazenamento
Desenvolvimento Durable Functions
Portal Azure
Ótimo para experimentar
Linha de Comando
Ótimo para uso em CI/CD
Visual Studio
Ótimo para desenvolvedores
Demo
Criar um aplicativo com Azure Functions
Habilitar Durable Functions
Encadeamento de funções
Nenhum lugar para ver todo o fluxo de trabalho
Encadeamento de funções
Orquestrator Function
Activity
Function 1
Activity
Function 2
Activity
Function 3
Demo
Criar um fluxo de trabalho
- DurableClient binding
- Dados de entrada do Orchestrator
- CreateCheckStatusResponse
- ActivityTrigger
- Recebendo dados de entrada
- Retornando dados de saída
Regras do Orchestrator Function
Deve ser determinista
- Toda a função será “repetida"
Não
- Usar data e hora atual
- Gerar números aleatórios ou guids
- Acessar armazenamentos de dados (por exemplo, banco
de dados, configuração)
Fazer
- Use IDurableOrchestrationContext.CurrentUtcDateTime
- Passe a configuração em sua função de orquestrador
- Recuperar dados em funções de atividade
Regras do Orchestrator Function
Não pode ser bloqueante
- Sem E/S para o disco ou rede
Não inicie operações assíncronas
- Exceto na API IDurableOrchestrationContext
- Sem Task.Run, Task.Delay, HttpClient.SendAsync
Não criar loops infinitos
- O histórico do evento precisa ser reproduzível
- ContinueAsNew deve ser usado em seu lugar
- Sem Thread.Sleep
Padrão fan-out/fan-in
Function 1 Function 2 Function 3
Map Reduce Sub-Orchestration
Demo Implementar fan-out/fan-in
- A primeira função de atividade executa
algum processamento de entrada de dados.
- A função do orquestrador chama as funções
de atividade em paralelo.
- O orquestrador espera que todas as
atividade sejam concluídas, para chamar a
última função de atividade, concluindo assim
o fluxo.
Implantando Durable Functions
Passo 1: Deploy infraestrutura
Passo 2: Publicar o código
App Service Plan
Function App
Storage Account
Application Insights
Database
Deploy manual via Visual Studio
Deploy automático
- Azure CLI
- Azure Functions Core Tools
Demo Deploy
- Criar um Function App
- Habilitar Durable Functions

Mais conteúdo relacionado

Semelhante a Apresentação ítalo 17.09.21

Azure Functions e Logic Apps
Azure Functions e Logic AppsAzure Functions e Logic Apps
Azure Functions e Logic AppsResource IT
 
Azure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoAzure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoArmando Junior
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
TechNet Wiki Summit 2015 - DevOps
TechNet Wiki Summit 2015 - DevOpsTechNet Wiki Summit 2015 - DevOps
TechNet Wiki Summit 2015 - DevOpsAlan Carlos
 
Windows Server 2008 R2 Overview Brz
Windows Server 2008 R2 Overview BrzWindows Server 2008 R2 Overview Brz
Windows Server 2008 R2 Overview BrzBruno Silva
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverCristian Mathias
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfRodrigo Kono
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...tdc-globalcode
 
12b windows server-2008_r2_overview-brz - julio
12b   windows server-2008_r2_overview-brz - julio12b   windows server-2008_r2_overview-brz - julio
12b windows server-2008_r2_overview-brz - julioProf Anderson Favaro
 
Win server 2008_r2_visao_geral
Win server 2008_r2_visao_geralWin server 2008_r2_visao_geral
Win server 2008_r2_visao_geralReginaldo Santos
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Renato Groffe
 

Semelhante a Apresentação ítalo 17.09.21 (20)

Azure Functions e Logic Apps
Azure Functions e Logic AppsAzure Functions e Logic Apps
Azure Functions e Logic Apps
 
Azure DevOps - Um case de sucesso
Azure DevOps - Um case de sucessoAzure DevOps - Um case de sucesso
Azure DevOps - Um case de sucesso
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 
Gradle spring-hateoas-Lombok
Gradle spring-hateoas-LombokGradle spring-hateoas-Lombok
Gradle spring-hateoas-Lombok
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
TechNet Wiki Summit 2015 - DevOps
TechNet Wiki Summit 2015 - DevOpsTechNet Wiki Summit 2015 - DevOps
TechNet Wiki Summit 2015 - DevOps
 
Windows Server 2008 R2 Overview Brz
Windows Server 2008 R2 Overview BrzWindows Server 2008 R2 Overview Brz
Windows Server 2008 R2 Overview Brz
 
BDD com specflow e selenium webdriver
BDD com specflow e selenium webdriverBDD com specflow e selenium webdriver
BDD com specflow e selenium webdriver
 
ASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconfASP.NET Core 2.1 #dotnetconf
ASP.NET Core 2.1 #dotnetconf
 
Apresentacao dev ops
Apresentacao dev opsApresentacao dev ops
Apresentacao dev ops
 
Escalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com BeanstalkEscalando sua aplicação Web com Beanstalk
Escalando sua aplicação Web com Beanstalk
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
 
12b windows server-2008_r2_overview-brz - julio
12b   windows server-2008_r2_overview-brz - julio12b   windows server-2008_r2_overview-brz - julio
12b windows server-2008_r2_overview-brz - julio
 
Win server 2008_r2_visao_geral
Win server 2008_r2_visao_geralWin server 2008_r2_visao_geral
Win server 2008_r2_visao_geral
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
 

Apresentação ítalo 17.09.21

  • 1. Azure Durable Functions Ítalo Bruno Duarte da Luz Senior Software Engineer - XP Inc italo.luz@xpi.com.br
  • 2. O que são “Durable Functions” É uma extensão para Azure Functions Escrever funções com estado em um ambiente serverless Definir workflows em código
  • 3. O que são Azure Functions? Functions as a Service (FaaS) Triggers Timer HTTP Request Queue Message Languages C#, F#, Java, JavaScript, TypeScript, Python, PowerShell, Go e Rust Bindings SendGrid EventHub RabbitMQ
  • 4. O que é “Serverless”? Deploy sem precisar se preocupar com infraestrutura Auto scaling Modelo de precificação baseado em consumo
  • 5. Porque usar Durable Function? Encadeamento de Funções Workflow Fan-out Fan-in Workflow
  • 6. Noções Básicas de Durable Functions Defina fluxos de trabalho no código - Execução paralela - Tratamento de erros - Controle em um único ponto através da “Orquestrator Function” Suporta vários padrões de fluxos de trabalho - Fan Out/Fan In, Monitors, etc. Resolve o problema do estado - Acompanha o progresso do fluxo de trabalho
  • 7. Benefícios Durable Functions 1. Defina fluxos de trabalho no código - Fluidez no entendimento do quadro geral - Ótima separação de responsabilidades 2. Fluxos de trabalho complexos fáceis de implementar - Encadeamento de Funções - Fan-Out e Fan-In - Monitoramento 3. Consolidação do tratamento de exceções 4. Verifique o progresso ou cancele os fluxos de trabalho 5. Gerencia o estado para você
  • 8. Conceitos Chave Durable Function Orquestration Function - Define o fluxo de trabalho - Aciona as funções de atividade - Dorme durante as atividades Activity Function - Executa uma única etapa em um fluxo de trabalho - Pode receber e/ou retornar dados Starting "Orquestrations" - DurableClient Binding
  • 9. Exemplo Durable Function Workflow Durable Client Activity Function 1 Activity Function 2 Activity Function 3 Event Hub Trigger Azure Function Orquestrator Function
  • 10. Armazenamento de Estado Durable Functions Filas de armazenamento - Mensagens para acionar a próxima função Tabelas de armazenamento - Armazene o estado das orquestrações Event Sourcing - Nunca atualiza linhas, apenas acrescenta novas - Armazene o histórico de execução completo Durable Functions usam o armazenamento do Azure
  • 11. Exemplo Event Sourcing Orquestrador Iniciado Atividade 1 Agendada Orquestrador Dorme Atividade 1 Concluída Orquestrador Concluído Orquestrador Acorda Atividade 2 Agendada Orquestrador Dorme Atividade 2 Concluída Orquestrador Acorda
  • 12. Conta de armazenamento Durable Functions Você fornece a string de conexão - Veja os detalhes com o Azure Storage Explorer "Task Hub" - O armazenamento usado por funções duráveis - Você pode usar vários hubs de tarefas - Eles podem compartilhar uma conta de armazenamento
  • 13. Desenvolvimento Durable Functions Portal Azure Ótimo para experimentar Linha de Comando Ótimo para uso em CI/CD Visual Studio Ótimo para desenvolvedores
  • 14. Demo Criar um aplicativo com Azure Functions Habilitar Durable Functions
  • 15. Encadeamento de funções Nenhum lugar para ver todo o fluxo de trabalho
  • 16. Encadeamento de funções Orquestrator Function Activity Function 1 Activity Function 2 Activity Function 3
  • 17. Demo Criar um fluxo de trabalho - DurableClient binding - Dados de entrada do Orchestrator - CreateCheckStatusResponse - ActivityTrigger - Recebendo dados de entrada - Retornando dados de saída
  • 18. Regras do Orchestrator Function Deve ser determinista - Toda a função será “repetida" Não - Usar data e hora atual - Gerar números aleatórios ou guids - Acessar armazenamentos de dados (por exemplo, banco de dados, configuração) Fazer - Use IDurableOrchestrationContext.CurrentUtcDateTime - Passe a configuração em sua função de orquestrador - Recuperar dados em funções de atividade
  • 19. Regras do Orchestrator Function Não pode ser bloqueante - Sem E/S para o disco ou rede Não inicie operações assíncronas - Exceto na API IDurableOrchestrationContext - Sem Task.Run, Task.Delay, HttpClient.SendAsync Não criar loops infinitos - O histórico do evento precisa ser reproduzível - ContinueAsNew deve ser usado em seu lugar - Sem Thread.Sleep
  • 20. Padrão fan-out/fan-in Function 1 Function 2 Function 3 Map Reduce Sub-Orchestration
  • 21. Demo Implementar fan-out/fan-in - A primeira função de atividade executa algum processamento de entrada de dados. - A função do orquestrador chama as funções de atividade em paralelo. - O orquestrador espera que todas as atividade sejam concluídas, para chamar a última função de atividade, concluindo assim o fluxo.
  • 22. Implantando Durable Functions Passo 1: Deploy infraestrutura Passo 2: Publicar o código App Service Plan Function App Storage Account Application Insights Database Deploy manual via Visual Studio Deploy automático - Azure CLI - Azure Functions Core Tools
  • 23. Demo Deploy - Criar um Function App - Habilitar Durable Functions