Top Banner
© 2017 – Creditas Consultoria Financeira Ltda. Hanami & Domain-Driven Design Como o framework Hanami nos auxiliou a implementar DDD
22

Hanami & Domain-Driven Design

Jan 24, 2018

Download

Technology

Creditas
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hanami & Domain-Driven Design

© 2017 – Creditas Consultoria Financeira Ltda.

Hanami & Domain-Driven Design

Como o framework Hanami nos auxiliou a implementar DDD

Page 2: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda.

Introdução aoDDD1

Page 3: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 3

Uma forma diferente de escrever seu código!

O que é DDD?

Page 4: Hanami & Domain-Driven Design

© 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)

Page 5: Hanami & Domain-Driven Design

© 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

Page 6: Hanami & Domain-Driven Design

© 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

Page 7: Hanami & Domain-Driven Design

© 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

Page 8: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 8

• Domain Experts + Desenvolvedores = Conhecimento centralizado

Por que DDD?

Page 9: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 9

Por que DDD?

Page 10: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 10

Por que DDD?

• Escalabilidade e durabilidade

Page 11: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 11

Hmmm.. Nop!

DDD 4 ever & ever?

YEAH!

Page 12: Hanami & Domain-Driven Design

© 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)

Page 13: Hanami & Domain-Driven Design

© 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

Page 14: Hanami & Domain-Driven Design

© 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

Page 15: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda.

Hanami2 Hanami2

Page 16: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 16

O que é Hanami?

Versão atual: 1.0.0

Page 17: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 17

BETA AAAAAAAAAAAA AAA

Nossa primeira versão

em produção: 0.6

Page 18: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 18

Por que Hanami?

• Clean Architecture.

• Separação de responsabilidades.

• Core domain e mecanismos de entrega.

Page 19: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 19

Rails / MVC

Hanami vs. Rails

Hanami s2

Page 20: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 20

Modularização

Hanami official

documentation

Page 21: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 21

Para saber mais

Page 22: Hanami & Domain-Driven Design

© 2017 – Creditas Soluções Financeira Ltda. 22

That’s all, folks!Júlia Marczak Birkett

@birkettjulia