SlideShare uma empresa Scribd logo
© 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

Mais conteúdo relacionado

Semelhante a Hanami & Domain-Driven Design

A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
Isaac de Souza
 
Apresentação mandaii
Apresentação mandaiiApresentação mandaii
Apresentação mandaii
Javier Yera
 
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
David Maia
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
Jorge Oleques
 
Domain driven design - Visão Geral
Domain driven design - Visão GeralDomain driven design - Visão Geral
Domain driven design - Visão Geral
Lorival Smolski Chapuis
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)
Ivan Paulovich
 
Dream 02
Dream 02Dream 02
Branding & Performance 2017 - Adobe
Branding & Performance 2017 - AdobeBranding & Performance 2017 - Adobe
Branding & Performance 2017 - Adobe
IAB Brasil
 
Dream 02
Dream 02Dream 02
Dream 02
Anderson Maciel
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
Mauricio Cesar Santos da Purificação
 
DDD e Restful SOA
DDD e Restful SOADDD e Restful SOA
DDD e Restful SOA
Daniel Moreira Yokoyama
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Isaac de Souza
 
Desenvolvimento Distribuído de Software
Desenvolvimento Distribuído de SoftwareDesenvolvimento Distribuído de Software
Desenvolvimento Distribuído de Software
Rafael Vivian
 
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
EBAI
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
armeniocardoso
 
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
ThoughtWorks Brasil
 
Case de utilização do SAP BO
Case de utilização do SAP BOCase de utilização do SAP BO
Case de utilização do SAP BO
GATI - Tecnologia da informação
 
Desenvolvimento Distribuído de Software
Desenvolvimento Distribuído de SoftwareDesenvolvimento Distribuído de Software
Desenvolvimento Distribuído de Software
Rafael Vivian
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrões
Joao Paulo Oliveira dos Santos
 
Estratégias e governança para decisão e adoção de cloudy
Estratégias e governança para decisão e adoção de cloudyEstratégias e governança para decisão e adoção de cloudy
Estratégias e governança para decisão e adoção de cloudy
Priscila Stuani
 

Semelhante a Hanami & Domain-Driven Design (20)

A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!A importância de DDD e o Domain Model na construção de APIs!
A importância de DDD e o Domain Model na construção de APIs!
 
Apresentação mandaii
Apresentação mandaiiApresentação mandaii
Apresentação mandaii
 
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
Planejamento de Capacidade Dirigido a Negócios para Aplicações SaaS de Comérc...
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
 
Domain driven design - Visão Geral
Domain driven design - Visão GeralDomain driven design - Visão Geral
Domain driven design - Visão Geral
 
Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)Introdução ao Domain-Driven-Design (DDD)
Introdução ao Domain-Driven-Design (DDD)
 
Dream 02
Dream 02Dream 02
Dream 02
 
Branding & Performance 2017 - Adobe
Branding & Performance 2017 - AdobeBranding & Performance 2017 - Adobe
Branding & Performance 2017 - Adobe
 
Dream 02
Dream 02Dream 02
Dream 02
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
DDD e Restful SOA
DDD e Restful SOADDD e Restful SOA
DDD e Restful SOA
 
Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...Como DDD e principalmente Domain Model contribuem na construção de microservi...
Como DDD e principalmente Domain Model contribuem na construção de microservi...
 
Desenvolvimento Distribuído de Software
Desenvolvimento Distribuído de SoftwareDesenvolvimento Distribuído de Software
Desenvolvimento Distribuído de Software
 
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
Experiência Empírica de Trabalho Comercial no Segmento de Pesquisa e Design C...
 
Domain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem IntrodutóriaDomain-Driven Design - Uma Abordagem Introdutória
Domain-Driven Design - Uma Abordagem Introdutória
 
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
[XConf Brasil 2020] Ajudando a Natura a escalar usando modularização do app
 
Case de utilização do SAP BO
Case de utilização do SAP BOCase de utilização do SAP BO
Case de utilização do SAP BO
 
Desenvolvimento Distribuído de Software
Desenvolvimento Distribuído de SoftwareDesenvolvimento Distribuído de Software
Desenvolvimento Distribuído de Software
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrões
 
Estratégias e governança para decisão e adoção de cloudy
Estratégias e governança para decisão e adoção de cloudyEstratégias e governança para decisão e adoção de cloudy
Estratégias e governança para decisão e adoção de cloudy
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 

Último (8)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 

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