DDD - Cicatrizes de guerra

Preview:

Citation preview

DDD - CICATRIZES DE GUERRA

Fabrício Rissetto

CONTEXTO DO PROBLEMA

Diversos sistemas legados acessando diretamente uma única base

CONTEXTO DO PROBLEMAProcedures

9000+Tabelas

2000

+ Views, Functions

CONTEXTO DO PROBLEMARegras de negócio no banco de dados

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!

LET’S DO THIS

ENTITY FRAMEWORK

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

DOMAIN MODEL VS PERSISTENCE MODEL Persistence Model:

Fluent Mapping:

DOMAIN MODEL VS PERSISTENCE MODEL Dois em um:

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!

BOUNDED CONTEXTS

BOUNDED CONTEXTS

CQRS

CQRSE pra popular um dropdown?

CQRS

BOUNDED CONTEXTS EM MICROSERVICES

WS

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

CONTATOE-mail: fabriciorissetto@gmail.comBlog: fabriciorissetto.comObrigado!