44
1 Giovanni Bassi [email protected] www.lambda3.com.br blog.lambda3.com.br

06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

  • Upload
    dnad

  • View
    1.675

  • Download
    5

Embed Size (px)

DESCRIPTION

Quem sabe alguma coisa costuma desenvolver em camadas, separar responsabilidades, normalizar o banco de dados, usar um ORM, entre outras práticas conhecidas e defendidas por boa parte da comunidade. Mas, por algum motivo, tais práticas, que deveriam estar tornando nosso trabalho mais simples, acabaram por torná-lo mais complexo. Nessa palestra veremos como a separação dos contextos de escrita (transacional) e leitura (consultas) podem deixar a arquitetura de uma aplicação cooperativa muito mais limpa, fácil de entender, escalável e robusta. Tudo isso, sem deixar pra trás um bom modelo rico de domínio.

Citation preview

Page 1: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

1

Giovanni Bassi

[email protected]

www.lambda3.com.br

blog.lambda3.com.br

Page 2: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 3: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 4: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 5: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

5

@GiovanniBassi

Page 6: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 7: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 8: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 9: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Status atual

Separando a

consulta

Cenário

colaborativo

Separando um

pouco mais

Oportunidades

Mudanças na

modelagem

Q&A

Page 10: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Interface gráfica

Infra

Serviços

Controller

View

Page 11: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

ORM

Page 12: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Page 13: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Repositório ordena??

Page 14: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representante Total de

vendas

Número de

clientes

% sobre a

meta

Gerente

Darth Vader 50.000 15 105% Imperador

Han Solo 23.000 10 90% Luke Skywalker

Page 15: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 16: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Consulta

Alteração

Page 17: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Consulta de

Representantes

SQL

Represen

tantes

Page 18: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Consulta de

Representantes

ORM

Represen

tantes

Page 19: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Sistema

Page 20: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Interface gráfica

Infra

Serviços

Controller

View Cache

Page 21: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Palestra de Cache Distribuído com o

Daibert em seguida!

Page 22: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 23: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 24: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 25: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

http://en.wikipedia.org/wiki/ACID

Page 26: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

http://en.wikipedia.org/wiki/Eventual_consistency

Page 27: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

http://bit.ly/captheorem

Page 28: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Consulta de

Representantes

SQL (em

banco

específico)

Represen

tantes

Page 29: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Banco de

Consulta

Banco de

Transações

Consulta de

Representantes

Page 30: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Banco de

Consulta

Banco de

Transações

Consulta de

Representantes Consulta

Comando

Page 31: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 32: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 33: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Banco de

Consulta

Banco de

Transações

Consulta de

Representantes

Page 34: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Consulta de

Representantes

Banco de

Transações

Banco de

Consulta

Page 35: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Consulta de

Representantes

Banco de

Transações

Banco de

Consulta

Page 36: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Representantes

Consulta de

Representantes

Banco de

Transações

Banco de

Consulta

Page 37: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Cliente

Nome

Email

EhEspecial

FaixaDeDesconto

EhValido()

Cliente

AtualizarDados(nome, email)

DarDesconto(percentual)

TornarEspecial()

Page 38: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Cliente

AtualizarDados(nome, email)

DarDesconto(percentual)

TornarEspecial()

AtualizaDadosCliente

IdCliente

Nome

Email

DarFaixaDeDescontoAoCliente

IdCliente

Percentual

TornarClienteEspecial

IdCliente

Page 39: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Cliente

AtualizarDados(nome, email)

DarDesconto(percentual)

TornarEspecial()

ClientesEspeciais

IdCliente

Nome

Email

Clientes

IdCliente

PercentualDesconto

PaginaAtual

NumeroDePaginas

Page 40: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 41: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

duplicação de dados: ok denormalização: ok dados na última camada: ok atomicidade: desnecessária consistência: em algum momento (não agora) exceções a regra: menos prioritárias fronteira transacional: menor que uma entidade entidades de domínio na UI: malignas camadas: menos... cache: banco NOSQL sem segurança banco relacional: provavelmente desnecessário em diversos pontos repositórios: não paginam nem ordenam

Rollback!

Page 42: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD
Page 43: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Obrigado! Giovanni Bassi

[email protected]

www.lambda3.com.br

blog.lambda3.com.br

Page 44: 06 - Giovanni Bassi - CQS, CQRS, DDD, DbC, DDDD

Giovanni Bassi [email protected]

www.lambda3.com.br

blog.lambda3.com.br