SlideShare uma empresa Scribd logo
1 de 21
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Desenvolvendo Aplicações Altamente
Escaláveis com CQRS
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Aplicações Altamente Escaláveis
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
CQRS – Command and Query Responsibility Segregation
Event Sourcing and Event Stores
EDA – Event Driven Architecture
Aplicações Altamente Escaláveis
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
“A single model cannot be suitable to perform reports,
searches and transactional behaviors”.
Greg Young
Conceito CQRS
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Conceito CQRS
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Business Task
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Reporting
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Task/Reporting
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Necessidade de mecanismos de sincronização:
• Automático
• Eventual
• Controlada
• Sob demanda
CQRS Implica em
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
1. Mudanças de estado são feitas atráves de mensagens
2. Application Services aceita commandos da UI e dispara
Mensagens/Eventos
3. Data Source de Consulta e Relatórios são atualizados por eventos
4. Todas as consultas feitas pela UI são processadas diretamente pelo
Sistema de consulta
Fundamentos
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Fundamentos
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Fundamentos
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Escalabilidade
Performance
Conflitos de concorrência
Complexidade no desenvolvimento e manutenção
Soluções
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Mostrando um exemplo de Escrita e Leitura simples.
Demo
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Mostrando um exemplo completo
Demo
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Event Sourcing & Event Stores
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Event Sourcing & Event Store
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
EDA – Event Driven Architecture
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
When [something] has occurred, the system should
[something]…
EDA – Event Driven Architecture
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
EDA – Event Driven Architecture
São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul
Obrigado
Giovani Decusati
giovani@cwi.com.br

Mais conteúdo relacionado

Semelhante a DDD, CQRS, and Domain Events

Tecnologias para aplicativos híbridos
Tecnologias para aplicativos híbridosTecnologias para aplicativos híbridos
Tecnologias para aplicativos híbridosBen-Hur Santos Ott
 
Oracle solution for Gas & Oil Brazil
Oracle solution for Gas & Oil BrazilOracle solution for Gas & Oil Brazil
Oracle solution for Gas & Oil BrazilAlexandre Lukine
 
Business Model Generation Worksession
Business Model Generation WorksessionBusiness Model Generation Worksession
Business Model Generation WorksessionAndré Chapetta
 
Solução ETZ para Planejamento Financeiro
Solução ETZ para Planejamento FinanceiroSolução ETZ para Planejamento Financeiro
Solução ETZ para Planejamento FinanceiroUbiratan Mascarenhas
 
Ti na prática, tendências em desenvolvimento
Ti na prática, tendências em desenvolvimentoTi na prática, tendências em desenvolvimento
Ti na prática, tendências em desenvolvimentoMarcos Alves
 
Workshop Lean Inception - Novo Hamburgo
Workshop Lean Inception - Novo HamburgoWorkshop Lean Inception - Novo Hamburgo
Workshop Lean Inception - Novo HamburgoVinicius Nakamura
 
Introdução ao SAP ERP.pdf
Introdução ao SAP ERP.pdfIntrodução ao SAP ERP.pdf
Introdução ao SAP ERP.pdfLauraNunes54
 
Kubernetes: Orquestrando o maior e-commerce alimentar do Brasil
Kubernetes: Orquestrando o maior e-commerce alimentar do BrasilKubernetes: Orquestrando o maior e-commerce alimentar do Brasil
Kubernetes: Orquestrando o maior e-commerce alimentar do BrasilRodrigo Fior Kuntzer
 
Como agregar valor ao meu negócio com o Microsoft Power Apps?
Como agregar valor ao meu negócio com o Microsoft Power Apps?Como agregar valor ao meu negócio com o Microsoft Power Apps?
Como agregar valor ao meu negócio com o Microsoft Power Apps?Renato Romão
 
Influir Apresentação da empresa na disciplina fundamentos da computação
Influir   Apresentação da empresa na disciplina fundamentos da computaçãoInfluir   Apresentação da empresa na disciplina fundamentos da computação
Influir Apresentação da empresa na disciplina fundamentos da computaçãoRogerio P C do Nascimento
 
Formalização Eletrônica S-Works
Formalização Eletrônica S-Works Formalização Eletrônica S-Works
Formalização Eletrônica S-Works GrupoSimply
 
Application insights + ASP.NET Core
Application insights + ASP.NET CoreApplication insights + ASP.NET Core
Application insights + ASP.NET CoreLetticia Nicoli
 
Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo Salgado
 
Stratesys - Brochure Corporativo - BR
Stratesys - Brochure Corporativo - BRStratesys - Brochure Corporativo - BR
Stratesys - Brochure Corporativo - BRAlessandra Paes
 
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...Guilherme Motta
 

Semelhante a DDD, CQRS, and Domain Events (20)

Tecnologias para aplicativos híbridos
Tecnologias para aplicativos híbridosTecnologias para aplicativos híbridos
Tecnologias para aplicativos híbridos
 
DevOps pela visão de QA
DevOps pela visão de QADevOps pela visão de QA
DevOps pela visão de QA
 
Oracle solution for Gas & Oil Brazil
Oracle solution for Gas & Oil BrazilOracle solution for Gas & Oil Brazil
Oracle solution for Gas & Oil Brazil
 
Business Model Generation Worksession
Business Model Generation WorksessionBusiness Model Generation Worksession
Business Model Generation Worksession
 
Solução ETZ para Planejamento Financeiro
Solução ETZ para Planejamento FinanceiroSolução ETZ para Planejamento Financeiro
Solução ETZ para Planejamento Financeiro
 
Ti na prática, tendências em desenvolvimento
Ti na prática, tendências em desenvolvimentoTi na prática, tendências em desenvolvimento
Ti na prática, tendências em desenvolvimento
 
Workshop Lean Inception - Novo Hamburgo
Workshop Lean Inception - Novo HamburgoWorkshop Lean Inception - Novo Hamburgo
Workshop Lean Inception - Novo Hamburgo
 
Introdução ao SAP ERP.pdf
Introdução ao SAP ERP.pdfIntrodução ao SAP ERP.pdf
Introdução ao SAP ERP.pdf
 
Kubernetes: Orquestrando o maior e-commerce alimentar do Brasil
Kubernetes: Orquestrando o maior e-commerce alimentar do BrasilKubernetes: Orquestrando o maior e-commerce alimentar do Brasil
Kubernetes: Orquestrando o maior e-commerce alimentar do Brasil
 
Como agregar valor ao meu negócio com o Microsoft Power Apps?
Como agregar valor ao meu negócio com o Microsoft Power Apps?Como agregar valor ao meu negócio com o Microsoft Power Apps?
Como agregar valor ao meu negócio com o Microsoft Power Apps?
 
Paragon Tecnologia Ltda
Paragon Tecnologia LtdaParagon Tecnologia Ltda
Paragon Tecnologia Ltda
 
Influir Apresentação da empresa na disciplina fundamentos da computação
Influir   Apresentação da empresa na disciplina fundamentos da computaçãoInfluir   Apresentação da empresa na disciplina fundamentos da computação
Influir Apresentação da empresa na disciplina fundamentos da computação
 
Desenvolvimento web I - Introdução
Desenvolvimento web I - IntroduçãoDesenvolvimento web I - Introdução
Desenvolvimento web I - Introdução
 
Formalização Eletrônica S-Works
Formalização Eletrônica S-Works Formalização Eletrônica S-Works
Formalização Eletrônica S-Works
 
Application insights + ASP.NET Core
Application insights + ASP.NET CoreApplication insights + ASP.NET Core
Application insights + ASP.NET Core
 
CVitae- Sergio Della Nina
CVitae- Sergio Della Nina CVitae- Sergio Della Nina
CVitae- Sergio Della Nina
 
Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1Haroldo salgado araujo cv tp1
Haroldo salgado araujo cv tp1
 
2. migracao do seu website gov-edu-ngo
2. migracao do seu website   gov-edu-ngo2. migracao do seu website   gov-edu-ngo
2. migracao do seu website gov-edu-ngo
 
Stratesys - Brochure Corporativo - BR
Stratesys - Brochure Corporativo - BRStratesys - Brochure Corporativo - BR
Stratesys - Brochure Corporativo - BR
 
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...
[Palestra] Técnicas, cases e práticas ágeis para concepção de produtos e serv...
 

DDD, CQRS, and Domain Events

  • 1. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Desenvolvendo Aplicações Altamente Escaláveis com CQRS
  • 2. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Aplicações Altamente Escaláveis
  • 3. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul CQRS – Command and Query Responsibility Segregation Event Sourcing and Event Stores EDA – Event Driven Architecture Aplicações Altamente Escaláveis
  • 4. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul “A single model cannot be suitable to perform reports, searches and transactional behaviors”. Greg Young Conceito CQRS
  • 5. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Conceito CQRS
  • 6. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Business Task
  • 7. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Reporting
  • 8. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Task/Reporting
  • 9. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Necessidade de mecanismos de sincronização: • Automático • Eventual • Controlada • Sob demanda CQRS Implica em
  • 10. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul 1. Mudanças de estado são feitas atráves de mensagens 2. Application Services aceita commandos da UI e dispara Mensagens/Eventos 3. Data Source de Consulta e Relatórios são atualizados por eventos 4. Todas as consultas feitas pela UI são processadas diretamente pelo Sistema de consulta Fundamentos
  • 11. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Fundamentos
  • 12. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Fundamentos
  • 13. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Escalabilidade Performance Conflitos de concorrência Complexidade no desenvolvimento e manutenção Soluções
  • 14. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Mostrando um exemplo de Escrita e Leitura simples. Demo
  • 15. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Mostrando um exemplo completo Demo
  • 16. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Event Sourcing & Event Stores
  • 17. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Event Sourcing & Event Store
  • 18. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul EDA – Event Driven Architecture
  • 19. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul When [something] has occurred, the system should [something]… EDA – Event Driven Architecture
  • 20. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul EDA – Event Driven Architecture
  • 21. São Paulo - Rio de Janeiro - Porto Alegre - São Leopoldo - Caxias do Sul Obrigado Giovani Decusati giovani@cwi.com.br

Notas do Editor

  1. Podemos dizer que escalabilidade é capacidade de um sistema se adequar ao aumento da demanda; Isso quer dizer que se para 10 usuários o meu tempo de resposta médio é de 2s, ao dobrar o número de usuários a aplicação irá manter o meu tempo médio de resposta de 2s. Escalabilidade depende de uma série de fatores, e muitas vezes não é possível escalar uma aplicação pelo fato de o design utilizado na aplicação (arquitetura) não é mais o adequado. Podemos então definir uma aplicação escalável como sendo aquela que ao aumentarmos o número de usuários o tempo de resposta permanece linear. Existem muitos fatores que afetam o desempenho de uma aplicação, principalmente o design da aplicação. Referências: https://msdn.microsoft.com/en-us/library/aa292203(v=vs.71).aspx https://cloud.google.com/solutions/scalable-and-resilient-apps http://www.macoratti.net/net_apes.htm http://natishalom.typepad.com/nati_shaloms_blog/2007/07/the-true-meanin.html
  2. Referências: 1. Microsoft.N-Layered.Domain_Oriented_Architecture_Guide_with_ .NET_4.0, pag 469.
  3. The main concept proposed by CQRS is the concept of separation between query tasks and transactional/persistence tasks (edition/insertion/deletion, etc.). The following diagram shows the CQRS pattern in its simplest form:
  4. Referências: http://elemarjr.com/2016/04/11/uma-breve-revisao-de-cqrs/
  5. Escalável :: pois os comando são assíncronos, imperativos (FinalizarCompra) e suas respostas são tratados por eventos; Performance :: pois lê dados de uma base replicada, desnormalizada na maiorida das vezes; Evita locks :: pois os comandos tem uma única fila (túnel) de execução; Complexidade :: fica fácil identificar o que um comando faz, pois ele é responsável por uma única operação Referências: http://www.devmedia.com.br/cqrs-um-modelo-para-aplicacoes-escalaveis/29844 http://rnascimento.me/como_cqrs_ajudou_o_lucarino_a_escalar_seu_app/
  6. http://www.codeproject.com/KB/architecture/555855/Diary.CQRS.zip
  7. Referências: https://msdn.microsoft.com/en-us/library/dn589792.aspx
  8. Referências: http://radar.oreilly.com/2015/02/variations-in-event-driven-architecture.html https://msdn.microsoft.com/en-us/library/dd129913.aspx LER: http://martinfowler.com/eaaDev/EventNarrative.html
  9. http://pt.slideshare.net/wso2.org/soa-pattern-event-driven-messaging