© 2017 – Creditas Consultoria Financeira Ltda.
Hanami & Domain-Driven Design
Como o framework Hanami nos auxiliou a implementar DDD
© 2017 – Creditas Soluções Financeira Ltda.
Introdução ao
DDD1
© 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. 9
Por que DDD?
© 2017 – Creditas Soluções Financeira Ltda. 10
Por que DDD?
• Escalabilidade e durabilidade
© 2017 – Creditas Soluções Financeira Ltda. 11
Hmmm.. Nop!
DDD 4 ever & ever?
YEAH!
© 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.
Hanami2 Hanami2
© 2017 – Creditas Soluções Financeira Ltda. 16
O que é Hanami?
Versão atual: 1.0.0
© 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.
© 2017 – Creditas Soluções Financeira Ltda. 19
Rails / MVC
Hanami vs. Rails
Hanami s2
© 2017 – Creditas Soluções Financeira Ltda. 20
Modularização
Hanami official
documentation
© 2017 – Creditas Soluções Financeira Ltda. 21
Para saber mais
© 2017 – Creditas Soluções Financeira Ltda. 22
That’s all, folks!
Júlia Marczak Birkett
@birkettjulia

Hanami & Domain-Driven Design

  • 1.
    © 2017 –Creditas Consultoria Financeira Ltda. Hanami & Domain-Driven Design Como o framework Hanami nos auxiliou a implementar DDD
  • 2.
    © 2017 –Creditas Soluções Financeira Ltda. Introdução ao DDD1
  • 3.
    © 2017 –Creditas Soluções Financeira Ltda. 3 Uma forma diferente de escrever seu código! O que é DDD?
  • 4.
    © 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)
  • 5.
    © 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
  • 6.
    © 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
  • 7.
    © 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
  • 8.
    © 2017 –Creditas Soluções Financeira Ltda. 8 • Domain Experts + Desenvolvedores = Conhecimento centralizado Por que DDD?
  • 9.
    © 2017 –Creditas Soluções Financeira Ltda. 9 Por que DDD?
  • 10.
    © 2017 –Creditas Soluções Financeira Ltda. 10 Por que DDD? • Escalabilidade e durabilidade
  • 11.
    © 2017 –Creditas Soluções Financeira Ltda. 11 Hmmm.. Nop! DDD 4 ever & ever? YEAH!
  • 12.
    © 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)
  • 13.
    © 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
  • 14.
    © 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
  • 15.
    © 2017 –Creditas Soluções Financeira Ltda. Hanami2 Hanami2
  • 16.
    © 2017 –Creditas Soluções Financeira Ltda. 16 O que é Hanami? Versão atual: 1.0.0
  • 17.
    © 2017 –Creditas Soluções Financeira Ltda. 17 BETA AAAAAAAAAAAA AAA Nossa primeira versão em produção: 0.6
  • 18.
    © 2017 –Creditas Soluções Financeira Ltda. 18 Por que Hanami? • Clean Architecture. • Separação de responsabilidades. • Core domain e mecanismos de entrega.
  • 19.
    © 2017 –Creditas Soluções Financeira Ltda. 19 Rails / MVC Hanami vs. Rails Hanami s2
  • 20.
    © 2017 –Creditas Soluções Financeira Ltda. 20 Modularização Hanami official documentation
  • 21.
    © 2017 –Creditas Soluções Financeira Ltda. 21 Para saber mais
  • 22.
    © 2017 –Creditas Soluções Financeira Ltda. 22 That’s all, folks! Júlia Marczak Birkett @birkettjulia