CQRS (Command Query Responsibility Segregation) é uma abordagem para construir software altamente eficiente, escalável e de fácil manutenção. No entanto, os primeiros passos neste conceito não são fáceis.
DDD, Event Sourcing, Cache, Eventual Consistency ou Service Bus são apenas alguns exemplos de conceitos que nos são sugeridos sempre que pesquisamos sobre CQRS. Toda esta avalanche de informação contribui para que seja difícil adotar este conceito.
Mas CQRS será realmente tudo isto? É preciso dominar todos estes conceitos para o implementar?
Esta sessão vai ajudar-te a encontrar uma resposta para estas perguntas, a ter uma noção mais clara de quando se aplica e de como podes dar os primeiros passos para implementar este principio.
15. CQRS é…
• Abordagem
• Conjunto de práticas comuns
• Domínio Colaborativo
• Single Responsibility
• Workload Managment
• Mais leituras do que escritas
• Software de fácil manutenção a longo prazo
• Eficiência!
16. CQRS não é…
• Um padrão
• Uma receita
• “Don’t write a CQRS framework” by Greg Young
24. Base de Dados
• “Transações ACID são para bases de dados e não para sistemas” by
Paulo Gandra de Sousa
• 3ª Forma Normal
• Mas as Listagens não estão na 3FN
• ORM
• Será mesmo preciso?
25. Base de Dados
• View Model
• Tabelas simples, desnormalizadas
• O mundo não é só SQL
• Single source of truth is dead
• Cache
• Cache de Entidades vs Cache de Views
26. Eventual Consistency
• Dados não precisam de ser consistentes em todos os momentos
• Eventual Consistency !== Dados errados
• Stale data/Dados antigos
• Dados datados
27. Query Side: Resumindo…
• Não precisas de muito para começar
• Keep it Simple
• É uma cache e não uma BD
29. O que são Comandos?
• Regista a intenção do utilizador
• Nome no imperativo
• Pré-validação
• Business Rules
• Taxa de sucesso elevada
• Gere o Domain Model
30. Task Based UI
• Utilizadores não pensam em “modo CRUD”
• Captura a intenção do utilizador
• Uma página = Uma tarefa principal
38. O que é o Event Sourcing?
• O que mudou e quando mudou
• Nomes no passado
• Não há deletes
• View Model atualizado por eventos
• Eventos gerados pelos comandos
• Por oposição a Cache Invalidation
• Permite reprocessamento/playing back
40. Event Sourcing Architecture
View Model Data Layer
Business Layer
Service Layer
DB
Presentation Layer
Command
Query
Cache EventHandlers
41. Event Sourcing: Resumindo…
• O que aconteceu e quando aconteceu
• Permite um Audit Trail de tudo o que aconteceu no sistema
• Atualiza o View Model
44. Bounded Contexts
• Dividir um grande sistema em pequenas partes
• Domain Model independente
• Comunica com outros Bounded Contexts através de Eventos
• CQRS só nos Bounded Contexts em que precisas
• Não te lembra nada?
• Micro Serviços
45.
46. Resumindo…
1. Keep It Simple, start simple.
2. Escolhe um Domínio Colaborativo
• CQRS não é “Tudo ou Nada”
3. Separa as Queries dos Comandos
4. Simplifica o teu Query Side
47. Resumindo…
5. Implementa uma Base de Dados para o teu View Model
6. Captura a intenção do teu utilizador
7. Gere a carga de trabalho com processamento assíncrono
8. Implementa Event Sourcing
9. Evangeliza o negócio
Survs ajuda com os inqueritos e Nucleo de Estudantes de Informática do ISEP que nos ajudaram e apoiaram na divulgação e na organização
Para quem puder ir preenchendo, assim não chateio mais logo
É importante para recebermos nós feedback, e para darmos feedback aos nossos oradores
http://goqr.me/