Post on 24-Jan-2018
© 2017 – Creditas Consultoria Financeira Ltda.
Hanami & Domain-Driven Design
Como o framework Hanami nos auxiliou a implementar DDD
© 2017 – Creditas Soluções Financeira Ltda. 3
Uma forma diferente de escrever seu código!
O que é DDD?
© 2017 – Creditas Soluções Financeira Ltda. 4
• Design de código guiado pelo Core Domain;
• Ubiquitous Language;
• Complexidade do negócio refletida no código;
Ew, Getters and Setters!
Implementing Domain-Driven Design, Vaughn Vernon
(2013)
© 2017 – Creditas Soluções Financeira Ltda. 5
Hmmm... Nop!
Esclarecendo
YEAH!
Driver: um usuário oferecendo serviço de
motorista.
Rider Passenger: um usuário buscando uma
corrida para uma localização específica.
Exemplo:
user.request_trip => passenger.hail_driver
© 2017 – Creditas Soluções Financeira Ltda. 6
Hmmm... Nop!
Esclarecendo
YEAH!
Driver: um usuário oferecendo serviço de
motorista.
Rider Passenger: um usuário buscando uma
corrida para uma localização específica.
Exemplo:
user.request_trip => passenger.hail_driver
© 2017 – Creditas Soluções Financeira Ltda. 7
Hmmm... Nop!
Esclarecendo
YEAH!
Driver: um usuário oferecendo serviço de
motorista.
Rider Passenger: um usuário buscando uma
corrida para uma localização específica.
Exemplo:
user.request_trip => passenger.hail_driver
© 2017 – Creditas Soluções Financeira Ltda. 8
• Domain Experts + Desenvolvedores = Conhecimento centralizado
Por que DDD?
© 2017 – Creditas Soluções Financeira Ltda. 12
• Strategy Patterns (Estratégicos)• Ubiquitous Language;
• Bounded Contexts;
• Context mapping;
• Tactical Patterns (Táticos)• Entities;
• Repositories;
• Value Objects;
• Aggregates;
• Services;
• Domain Events;
• Modules;
• Factories;
• Application;
DDD Patterns
Domain-Driven Design, Eric Evans
(2003)
© 2017 – Creditas Soluções Financeira Ltda. 13
• Identidade;
• Core da sua aplicação;
• Lógica do domínio, regras do negócio;
• Comportamento específico e coerente.
Objeto de valor / Value object
• Não há identidade;
• Comparação por valores.
Conceitos
Entidade / Entity
© 2017 – Creditas Soluções Financeira Ltda. 14
• Mediador entre objeto de domínio e a camada de persistência;
• Query & Commands;
• Independente de infraestrutura.
Conceitos
Repositório / Repository
© 2017 – Creditas Soluções Financeira Ltda. 17
BETA AAAAAAAAAAAA AAA
Nossa primeira versão
em produção: 0.6
© 2017 – Creditas Soluções Financeira Ltda. 18
Por que Hanami?
• Clean Architecture.
• Separação de responsabilidades.
• Core domain e mecanismos de entrega.