ddd - cicatrizes de guerra
TRANSCRIPT
![Page 1: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/1.jpg)
DDD - CICATRIZES DE GUERRA
Fabrício Rissetto
![Page 2: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/2.jpg)
CONTEXTO DO PROBLEMA
Diversos sistemas legados acessando diretamente uma única base
![Page 3: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/3.jpg)
CONTEXTO DO PROBLEMAProcedures
9000+Tabelas
2000
+ Views, Functions
![Page 4: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/4.jpg)
CONTEXTO DO PROBLEMARegras de negócio no banco de dados
![Page 5: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/5.jpg)
SOLUÇÃO Criar uma aplicação para
centralizar essas regras expondo dados via Web API
Mapeamento das tabelas usando EF
SDK Muitos testes unitários!
![Page 6: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/6.jpg)
LET’S DO THIS
![Page 7: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/7.jpg)
ENTITY FRAMEWORK
![Page 8: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/8.jpg)
DOMAIN MODEL VS PERSISTENCE MODEL Domain Model:
Private Set!
Construtor evidenciando
regras de inicialização
Construtor pro que faz
sentidoConstrutor pro que faz
sentido
Métodos que revelam
intenção e encapsulam
regras de negócio
![Page 9: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/9.jpg)
DOMAIN MODEL VS PERSISTENCE MODEL Persistence Model:
Fluent Mapping:
![Page 10: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/10.jpg)
DOMAIN MODEL VS PERSISTENCE MODEL Dois em um:
![Page 11: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/11.jpg)
DOMAIN MODEL VS PERSISTENCE MODEL Juntas Vantagens:
Boost no desenvolvimento Desvantagens:
Quanto maior a diferença maior a dificuldade
Medo de refactorings
Separadas Vantagens:
Liberdade para modelar o domínio Prontos para Bounded Contexts
Desvantagens: Maior esforço em conversões Perda das vantagens de utilizar
ORM
Dapper.NET!
![Page 12: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/12.jpg)
BOUNDED CONTEXTS
![Page 13: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/13.jpg)
BOUNDED CONTEXTS
![Page 14: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/14.jpg)
CQRS
![Page 15: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/15.jpg)
CQRSE pra popular um dropdown?
![Page 16: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/16.jpg)
CQRS
![Page 17: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/17.jpg)
BOUNDED CONTEXTS EM MICROSERVICES
WS
![Page 18: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/18.jpg)
THOUGHTSDDD não é bala de prata
SmartUI as vezes é mais adequado Domínio simples (crud intensive) Equipe inexperiente Foco é o prazo
Avaliar uso de ORMAvaliar separação Command/Query
![Page 19: DDD - Cicatrizes de guerra](https://reader030.vdocuments.pub/reader030/viewer/2022020714/58770af21a28ab890e8b66ed/html5/thumbnails/19.jpg)
CONTATOE-mail: [email protected]: fabriciorissetto.comObrigado!