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

Hanami & Domain-Driven Design

Embed Size (px)

Citation preview

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

© 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