SlideShare uma empresa Scribd logo
1 de 28
Fabiano Guizellini Modos
Arquite de Software - HBSIS
@fmodos
 Não vou falar sobre Servless e FAAS
 2014 – Real Time Java com Node.js
Cargo: Hipster Lider Técnico de uma Startup com poucos usuários
 2018 – Architecting For Resilience
Cargo: Arquiteto de Software reponsável por projetos que podem afetar
faturamento, pagamento e transporte de uma das maiores empresas do Brasil
 Banco de Dados
 Message Queue
 NoSQL
 Aplicação
 Fornecedor Cloud/Datacenter
 Hardware/Network
 Outros...
O SISTEMA NÃO PODE PARAR
NUNCA.
Redundância
Load Balancer
VM
APP
VM
APP
VM
APP
VM
APP
VM
APP
VM
APP
CLUSTER
Banco de Dados
CLUSTER
Message Queue
CLUSTER
NOSQL
ERP
FILIAL 1
ERP
FILIAL 2 ERP
FILIAL 1 FILIAL 2
AS IS TO BE
ABB – Architectual Building Blocks
“Stable Abstractions... Never mention the name of anything concrete and volatile”
Livro: Clean Architecture by Uncle Bob
Cluster
BD
Aplicação
LB
Technology
Architecture
Business
Architecture
Aplicação
Datacenter
Information
Architecture
CRM Users
SBB – Solutions Building Blocks
TicketID Content Status SLA ServiceI
D
Tickets
TicketID Typ
e
Content Statu
s
ServiceID
Events
TicketID: 425-877-
243
TicketID Content Status SLA ServiceI
D
425-877-243 {Dados NFe} PENDING 1 minuto Mensageria1
TicketID Typ
e
Content Statu
s
ServiceID
425-877-243 XML {Dados Nfe} PENDI
NG
MensageriaN-
ABC
TicketID Typ
e
Content Statu
s
ServiceID
425-877-243 XML {Dados Nfe} FINISH
ED
MensageriaN-
ABC
425-877-243 ENV {XML ASSINADO} PENDI
NG
MensageriaN-
ABC
TicketID Typ
e
Content Statu
s
ServiceID
425-877-243 XML {Dados Nfe} FINISH
ED
MensageriaN-
ABC
425-877-243 ENV {XML ASSINADO} FINISH
ED
MensageriaN-
ABC
425-877-243 RET {Numero Lote} PENDI
NG
MensageriaN-
ABC
TicketID Content Status SLA ServiceI
D
425-877-243 {Dados NFe} AUTORIZAD
O
1 minuto Mensageria1
TicketID Typ
e
Content Statu
s
ServiceID
425-877-243 XML {Dados Nfe} FINISH
ED
MensageriaN-
ABC
425-877-243 ENV {XML ASSINADO} FINISH
ED
MensageriaN-
ABC
425-877-243 RET {Numero Lote} FINISH
ED
MensageriaN-
ABC
425-877-243 ERP {XML Distribuição} PENDI
NG
MensageriaN-
ABC
425-877-243 HTTP {XML Distribuição} PENDI
NG
MensageriaN-
ABC
425-877-243 E-
Mail
{XML Distribuição} PENDI
NG
MensageriaN-
ABC
425-877-243 Portal {XML Distribuição} PENDI
NG
MensageriaN-
ABC
TicketID Typ
e
Content Statu
s
ServiceID
425-877-243 XML {Dados Nfe} FINISH
ED
MensageriaN-
ABC
425-877-243 ENV {XML ASSINADO} FINISH
ED
MensageriaN-
ABC
425-877-243 RET {Numero Lote} FINISH
ED
MensageriaN-
ABC
425-877-243 ERP {XML Distribuição} FINISH
ED
MensageriaN-
ABC
425-877-243 HTTP {XML Distribuição} FINISH
ED
MensageriaN-
ABC
425-877-243 E-
Mail
{XML Distribuição} FINISH
ED
MensageriaN-
ABC
425-877-243 Portal {XML Distribuição} FINISH
ED
MensageriaN-
ABC
 SRP (Single Responsability Principle)
“The SRP says to separate the code that different actor depends on”
Livro Clean Architecture by Uncle Bob
Evento
“Compra
Aprovada”
Diretor(a) de
Marketing
Diretor(a)
Financeiro
 Regra de negócio com Input e Output bem definidos
 Funções “imutáveis”
“The purpose of a procedure is more important than its implementation”
Livro: Timeless Law Of Software Development
Evento
“Celular
Adicionado
Carrinho”
Calcula Valor
Carrinho
Evento
“Valor
Carrinho
Alterado”
INPUT OUTPUT
Cart: 5,
Produto: Celular,
Valor: 20,00
Cart: 5,
Valor: 30,00
 Isolar ações que acessam camada de infraestrutura
Evento
“Compra
Aprovada”
Atualizar
Histórico de
Compras no
BD
Enviar E-
mail
Confirmação
Citação no livro SRE: Minimal APIs
“perfection is finally attained no when there is no longer more to add, but
when there is no longer anything to take away” by Antoine Saint Expéry
Infraestrutura: “Fornece recursos técnicos genéricos
que suportam as camadas mais altas: envio de
mensagem para o aplicativo, persistência de domínio...”
by Eric Evans
Regras de Negócio
EventManager
Infraestrutura
Gerenciador de Eventos
• Definido Interface IEventManager com métodos para se
registrar e submeter eventos
• Implementação básica da IEventManager com threads e
controle de fila em memória.
Gerenciador de Eventos
Regra de Negócio
• Desenvolvido o MVP do sistema orientado a eventos
• Definido interface de IRepository para modelos de dados
• Implementação concreta de IRepository com persistência em Memória
ou MongoDB devido praticidade
Gerenciador de Eventos
Regra de Negócio
Persistência
• Desenvolvimento da camada de persistência a partir das
interfaces de IRepository que criamos para atender o MVP
Gerenciador de Eventos
Regra de Negócio
Escalabilidade
Persistência
• Implementação da IEventManager para troca de eventos
via RabbitMQ
Gerenciador de Eventos
Resiliência
Regra de Negócio
Escalabilidade
Persistência
• Utilizamos Hystrix Framework para controle de Timeout ou
Exception ao se comunicar com a camada de infraestrutura.
• Message Queue: Evoluimos a implementação do IEventManager em
Memória e utilizamos ele como contingência.
• NoSQL: Algumas informações são armazenadas no BD Relacional
• BD Relacional: Utilizamos o H2 como contingência
• Aplicamos Resiliência somente nas funcionalidades do MVP
Gerenciador de Eventos
Resiliência
Regras de Negócio
Escalabilidade
Persistência
Camada Infraestrutura
 Código de resiliência é código, grandes chances de bug.
 Sistemas distribuidos e orientados a eventos são complexos.
 Desenhe a solução inicial baseada em ABB e não SBB: Mais foco na necessidade
do negócio.
 Solução Orientada a Eventos: Crie Regras de Negócios que são iniciadas a partir
de eventos e possuem responsabilidade única (SRP)
 Clean Architecture: Respeite as camadas, acesso a camadas de infraestrutura
somente via Abstração/Interface
 MVP possui as funcionalidades mais importante do sistema: leve isso em
consideração nas rotinas de resiliência.
 Não foi em Cobol
NEGÓCIO > TECNOLOGIA
Fabiano Guizellini Modos
@fmodos

Mais conteúdo relacionado

Semelhante a Arquitetura orientada a eventos para resiliência em sistemas distribuídos

AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAmazon Web Services LATAM
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Tiago Marchetti Dolphine
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoEdgar Silva
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...Amazon Web Services
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambMicrosoft Brasil
 
Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0Andre Bretas
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAmazon Web Services LATAM
 
Riverbed SteelHead WAN Optimization (Otmização de WAN)
Riverbed SteelHead WAN Optimization (Otmização de WAN)Riverbed SteelHead WAN Optimization (Otmização de WAN)
Riverbed SteelHead WAN Optimization (Otmização de WAN)Bravo Tecnologia
 
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDER
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDERO BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDER
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDERFernando Rizzato
 
Segurança na Nuvem da Amazon Web Services - Keynote Técnico
Segurança na Nuvem da Amazon Web Services - Keynote TécnicoSegurança na Nuvem da Amazon Web Services - Keynote Técnico
Segurança na Nuvem da Amazon Web Services - Keynote TécnicoAmazon Web Services LATAM
 
Apresentação IaaS SaaS PaaS CorpFlex
Apresentação IaaS SaaS PaaS CorpFlexApresentação IaaS SaaS PaaS CorpFlex
Apresentação IaaS SaaS PaaS CorpFlexJoao_Alfredo
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesMarkus Christen
 
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SagePentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SageVinicius Elyseu
 
Apresentando o Windows Server 2008 R2
Apresentando o Windows Server 2008 R2Apresentando o Windows Server 2008 R2
Apresentando o Windows Server 2008 R2Rodrigo Immaginario
 

Semelhante a Arquitetura orientada a eventos para resiliência em sistemas distribuídos (20)

AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWSAWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
AWS Webinar Series Brasil: Modernize seus Workloads Windows na AWS
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
IoT Frameworks
IoT FrameworksIoT Frameworks
IoT Frameworks
 
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da TransformaçãoWSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
WSO2 Enterprise Integrator 6.1 - Integração na Era da Transformação
 
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS -  ARC201 - ...
Arquiteturas e Estratégias para Criar Aplicações Modernas na AWS - ARC201 - ...
 
AAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcambAAB301 - Rich Internet Application - wcamb
AAB301 - Rich Internet Application - wcamb
 
Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0Roadshow TOTVS RM 2010 v.11.0
Roadshow TOTVS RM 2010 v.11.0
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
Mobile Back end as a Service na AWS
Mobile Back end as a Service na AWSMobile Back end as a Service na AWS
Mobile Back end as a Service na AWS
 
Riverbed SteelHead WAN Optimization (Otmização de WAN)
Riverbed SteelHead WAN Optimization (Otmização de WAN)Riverbed SteelHead WAN Optimization (Otmização de WAN)
Riverbed SteelHead WAN Optimization (Otmização de WAN)
 
Keynote AWS RoadShow Belo Horizonte 2013
Keynote AWS RoadShow Belo Horizonte 2013Keynote AWS RoadShow Belo Horizonte 2013
Keynote AWS RoadShow Belo Horizonte 2013
 
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDER
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDERO BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDER
O BACK-END PERFEITO PARA APLICAÇÕES DELPHI E C++ BUILDER
 
Segurança na Nuvem da Amazon Web Services - Keynote Técnico
Segurança na Nuvem da Amazon Web Services - Keynote TécnicoSegurança na Nuvem da Amazon Web Services - Keynote Técnico
Segurança na Nuvem da Amazon Web Services - Keynote Técnico
 
Apresentação IaaS SaaS PaaS CorpFlex
Apresentação IaaS SaaS PaaS CorpFlexApresentação IaaS SaaS PaaS CorpFlex
Apresentação IaaS SaaS PaaS CorpFlex
 
Rodando SAP na AWS
Rodando SAP na AWSRodando SAP na AWS
Rodando SAP na AWS
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de Aplicações
 
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na SagePentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
Pentaho Day 2015 - Universidade Positivo - Multi Tenancy com Pentaho na Sage
 
Apresentando o Windows Server 2008 R2
Apresentando o Windows Server 2008 R2Apresentando o Windows Server 2008 R2
Apresentando o Windows Server 2008 R2
 

Mais de Fabiano Modos

Arquitetura Orientada a Atores
Arquitetura Orientada a AtoresArquitetura Orientada a Atores
Arquitetura Orientada a AtoresFabiano Modos
 
Akka: Arquitetura Orientada a Atores
Akka: Arquitetura Orientada a AtoresAkka: Arquitetura Orientada a Atores
Akka: Arquitetura Orientada a AtoresFabiano Modos
 
Akka: Brincando com Atores
Akka: Brincando com AtoresAkka: Brincando com Atores
Akka: Brincando com AtoresFabiano Modos
 
Arquitetando com buzzwords
Arquitetando com buzzwordsArquitetando com buzzwords
Arquitetando com buzzwordsFabiano Modos
 
Arquiteturaentregacontinuav2 160513025436
Arquiteturaentregacontinuav2 160513025436Arquiteturaentregacontinuav2 160513025436
Arquiteturaentregacontinuav2 160513025436Fabiano Modos
 
Real time com java e Node.Js
Real time com java e Node.JsReal time com java e Node.Js
Real time com java e Node.JsFabiano Modos
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb javaFabiano Modos
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDBFabiano Modos
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDBFabiano Modos
 

Mais de Fabiano Modos (10)

Arquitetura Orientada a Atores
Arquitetura Orientada a AtoresArquitetura Orientada a Atores
Arquitetura Orientada a Atores
 
Akka: Arquitetura Orientada a Atores
Akka: Arquitetura Orientada a AtoresAkka: Arquitetura Orientada a Atores
Akka: Arquitetura Orientada a Atores
 
Akka: Brincando com Atores
Akka: Brincando com AtoresAkka: Brincando com Atores
Akka: Brincando com Atores
 
Arquitetando com buzzwords
Arquitetando com buzzwordsArquitetando com buzzwords
Arquitetando com buzzwords
 
Arquiteturaentregacontinuav2 160513025436
Arquiteturaentregacontinuav2 160513025436Arquiteturaentregacontinuav2 160513025436
Arquiteturaentregacontinuav2 160513025436
 
Real time com java e Node.Js
Real time com java e Node.JsReal time com java e Node.Js
Real time com java e Node.Js
 
Introdução no sql mongodb java
Introdução no sql mongodb javaIntrodução no sql mongodb java
Introdução no sql mongodb java
 
Lições Aprendidas MongoDB
Lições Aprendidas MongoDBLições Aprendidas MongoDB
Lições Aprendidas MongoDB
 
Spring Data com MongoDB
Spring Data com MongoDBSpring Data com MongoDB
Spring Data com MongoDB
 
Arquitetura Reativa
Arquitetura ReativaArquitetura Reativa
Arquitetura Reativa
 

Arquitetura orientada a eventos para resiliência em sistemas distribuídos

  • 1. Fabiano Guizellini Modos Arquite de Software - HBSIS @fmodos
  • 2.  Não vou falar sobre Servless e FAAS
  • 3.  2014 – Real Time Java com Node.js Cargo: Hipster Lider Técnico de uma Startup com poucos usuários  2018 – Architecting For Resilience Cargo: Arquiteto de Software reponsável por projetos que podem afetar faturamento, pagamento e transporte de uma das maiores empresas do Brasil
  • 4.  Banco de Dados  Message Queue  NoSQL  Aplicação  Fornecedor Cloud/Datacenter  Hardware/Network  Outros...
  • 5. O SISTEMA NÃO PODE PARAR NUNCA.
  • 7.
  • 8.
  • 9. ERP FILIAL 1 ERP FILIAL 2 ERP FILIAL 1 FILIAL 2 AS IS TO BE
  • 10. ABB – Architectual Building Blocks “Stable Abstractions... Never mention the name of anything concrete and volatile” Livro: Clean Architecture by Uncle Bob Cluster BD Aplicação LB Technology Architecture Business Architecture Aplicação Datacenter Information Architecture CRM Users
  • 11. SBB – Solutions Building Blocks
  • 12. TicketID Content Status SLA ServiceI D Tickets TicketID Typ e Content Statu s ServiceID Events TicketID: 425-877- 243 TicketID Content Status SLA ServiceI D 425-877-243 {Dados NFe} PENDING 1 minuto Mensageria1 TicketID Typ e Content Statu s ServiceID 425-877-243 XML {Dados Nfe} PENDI NG MensageriaN- ABC TicketID Typ e Content Statu s ServiceID 425-877-243 XML {Dados Nfe} FINISH ED MensageriaN- ABC 425-877-243 ENV {XML ASSINADO} PENDI NG MensageriaN- ABC TicketID Typ e Content Statu s ServiceID 425-877-243 XML {Dados Nfe} FINISH ED MensageriaN- ABC 425-877-243 ENV {XML ASSINADO} FINISH ED MensageriaN- ABC 425-877-243 RET {Numero Lote} PENDI NG MensageriaN- ABC TicketID Content Status SLA ServiceI D 425-877-243 {Dados NFe} AUTORIZAD O 1 minuto Mensageria1 TicketID Typ e Content Statu s ServiceID 425-877-243 XML {Dados Nfe} FINISH ED MensageriaN- ABC 425-877-243 ENV {XML ASSINADO} FINISH ED MensageriaN- ABC 425-877-243 RET {Numero Lote} FINISH ED MensageriaN- ABC 425-877-243 ERP {XML Distribuição} PENDI NG MensageriaN- ABC 425-877-243 HTTP {XML Distribuição} PENDI NG MensageriaN- ABC 425-877-243 E- Mail {XML Distribuição} PENDI NG MensageriaN- ABC 425-877-243 Portal {XML Distribuição} PENDI NG MensageriaN- ABC TicketID Typ e Content Statu s ServiceID 425-877-243 XML {Dados Nfe} FINISH ED MensageriaN- ABC 425-877-243 ENV {XML ASSINADO} FINISH ED MensageriaN- ABC 425-877-243 RET {Numero Lote} FINISH ED MensageriaN- ABC 425-877-243 ERP {XML Distribuição} FINISH ED MensageriaN- ABC 425-877-243 HTTP {XML Distribuição} FINISH ED MensageriaN- ABC 425-877-243 E- Mail {XML Distribuição} FINISH ED MensageriaN- ABC 425-877-243 Portal {XML Distribuição} FINISH ED MensageriaN- ABC
  • 13.  SRP (Single Responsability Principle) “The SRP says to separate the code that different actor depends on” Livro Clean Architecture by Uncle Bob Evento “Compra Aprovada” Diretor(a) de Marketing Diretor(a) Financeiro
  • 14.  Regra de negócio com Input e Output bem definidos  Funções “imutáveis” “The purpose of a procedure is more important than its implementation” Livro: Timeless Law Of Software Development Evento “Celular Adicionado Carrinho” Calcula Valor Carrinho Evento “Valor Carrinho Alterado” INPUT OUTPUT Cart: 5, Produto: Celular, Valor: 20,00 Cart: 5, Valor: 30,00
  • 15.  Isolar ações que acessam camada de infraestrutura Evento “Compra Aprovada” Atualizar Histórico de Compras no BD Enviar E- mail Confirmação Citação no livro SRE: Minimal APIs “perfection is finally attained no when there is no longer more to add, but when there is no longer anything to take away” by Antoine Saint Expéry
  • 16. Infraestrutura: “Fornece recursos técnicos genéricos que suportam as camadas mais altas: envio de mensagem para o aplicativo, persistência de domínio...” by Eric Evans
  • 18. Gerenciador de Eventos • Definido Interface IEventManager com métodos para se registrar e submeter eventos • Implementação básica da IEventManager com threads e controle de fila em memória.
  • 19. Gerenciador de Eventos Regra de Negócio • Desenvolvido o MVP do sistema orientado a eventos • Definido interface de IRepository para modelos de dados • Implementação concreta de IRepository com persistência em Memória ou MongoDB devido praticidade
  • 20. Gerenciador de Eventos Regra de Negócio Persistência • Desenvolvimento da camada de persistência a partir das interfaces de IRepository que criamos para atender o MVP
  • 21. Gerenciador de Eventos Regra de Negócio Escalabilidade Persistência • Implementação da IEventManager para troca de eventos via RabbitMQ
  • 22. Gerenciador de Eventos Resiliência Regra de Negócio Escalabilidade Persistência • Utilizamos Hystrix Framework para controle de Timeout ou Exception ao se comunicar com a camada de infraestrutura. • Message Queue: Evoluimos a implementação do IEventManager em Memória e utilizamos ele como contingência. • NoSQL: Algumas informações são armazenadas no BD Relacional • BD Relacional: Utilizamos o H2 como contingência • Aplicamos Resiliência somente nas funcionalidades do MVP
  • 23. Gerenciador de Eventos Resiliência Regras de Negócio Escalabilidade Persistência Camada Infraestrutura
  • 24.
  • 25.  Código de resiliência é código, grandes chances de bug.  Sistemas distribuidos e orientados a eventos são complexos.
  • 26.  Desenhe a solução inicial baseada em ABB e não SBB: Mais foco na necessidade do negócio.  Solução Orientada a Eventos: Crie Regras de Negócios que são iniciadas a partir de eventos e possuem responsabilidade única (SRP)  Clean Architecture: Respeite as camadas, acesso a camadas de infraestrutura somente via Abstração/Interface  MVP possui as funcionalidades mais importante do sistema: leve isso em consideração nas rotinas de resiliência.
  • 27.  Não foi em Cobol NEGÓCIO > TECNOLOGIA