ddd e restful soa

28
DDD e RESTful SOA Uma abordagem prática para combinar um design behavior- centric com um estilo arquitetural data-centric

Upload: daniel-moreira-yokoyama

Post on 01-Nov-2014

461 views

Category:

Technology


1 download

DESCRIPTION

Apresentação para Talk no DNAD 2013

TRANSCRIPT

Page 1: DDD e Restful SOA

DDD e RESTful SOA

Uma abordagem prática para combinar um design behavior-centric com um

estilo arquitetural data-centric

Page 2: DDD e Restful SOA

Daniel Moreira YokoyamaSenior Software Architect

@[email protected]

Page 3: DDD e Restful SOA

Agenda

• SOA Pitfalls• Modelagem Estratégica (DDD)• Bounded Contexts• Context Map• Anti-Corruption Layer• Open Host Service• Published Language• Conclusão

Page 4: DDD e Restful SOA

SOA Pitfalls

Page 5: DDD e Restful SOA

SOAService-oriented

Architecture

!=Service-oriented

Design

SODSOA Pitfalls

Page 6: DDD e Restful SOA

SOA Pitfalls

Ask-Decision-SetVs

Tell-Don’t-Ask

Page 7: DDD e Restful SOA

SOASOA Pitfalls

overfocusing

Anemic-Domain ModelPode conduzir a um

Page 8: DDD e Restful SOA

SOA Pitfalls

Service concern and responsibilities overload• Services• Transactions• Security• Transformation• Representation• Domain Logic• Data Access• Translation• Integration

Page 9: DDD e Restful SOA

SOA Pitfalls

Service concern and responsibilities overload• Services• Transactions• Security• Transformation• Representation• Domain Logic• Data Access• Translation• Integration

Page 10: DDD e Restful SOA

Modelagem Estratégica com DDD

• Entidades• Objetos de Valor• Serviços de Domínio• Repositórios• Factories

DDD#sóquenão

Page 11: DDD e Restful SOA

Modelagem Estratégica com DDD

• Entidades• Objetos de Valor• Serviços de Domínio• Repositórios• Factories

DDDBuilding blocks

Page 12: DDD e Restful SOA

Modelagem Estratégica com DDD

Building blocks

Óculos escuros

Palito de Dente

Arma

Stallone nos anos 80

Page 13: DDD e Restful SOA

Modelagem Estratégica com DDD

• DDD não é o uso dos building blocks (Entidades, Objeto de valor, etc)

• A aplicação do DDD está mais focada na modelagem estratégica

• DDD trata de modelagem do domínio do negócio em sua própria linguagem

Page 14: DDD e Restful SOA

Modelagem Estratégica com DDD

• Bounded Contexts• Context Map• Anti-Corruption Layer• Open Host Service• Published Language

Page 15: DDD e Restful SOA

Loja Virtual

Page 16: DDD e Restful SOA

Loja Virtual

Page 17: DDD e Restful SOA

Bounded Contexts

Page 18: DDD e Restful SOA

Bounded Contexts

Page 19: DDD e Restful SOA

Context Map

Page 20: DDD e Restful SOA

Anti-Corruption Layer

Page 21: DDD e Restful SOA

Design Estratégico

• Representation• Domain Logic• Data Access• Translation• Integration

Bounded Contexts

Anti-Corruption Layer

Context Map

Page 22: DDD e Restful SOA

Open Host Service

• Descreve um protocolo comum para acesso de uma aplicação.

• Expõe uma interface para o uso deste protocolo, e acesso às funcionalidades da aplicação.

• Falando em REST: HTTP e o WebHost da sua API

Page 23: DDD e Restful SOA

Published Language

• Uma linguagem comum para ser usada para tradução entre dois bounded-contexts

• Falando em REST: Mediatypes (xml, json, etc)

Page 24: DDD e Restful SOA

O Esquecido Building Block

• Domain Event é o building block mais importante na integração entre bounded contexts

• Falando em REST: RSS, Publish/Subscriber, Serviços de Infra-estrutura, etc...

Page 25: DDD e Restful SOA

Ainda haverão trade-offs

• Design Estratégico ajuda a minimizar os problemas de modelagem de serviços REST

• Mas não acaba com eles• Modele os serviços de acordo com os Casos

de Uso

Page 26: DDD e Restful SOA

Conclusão

• Design Estratégico do DDD guia a modelagem de como separar o domínio, e até mesmo modelar a distribuição.

• Foco no modelo do domínio, os serviços orientam a arquitetura, não o modelo.

Page 27: DDD e Restful SOA

Referência

• Domain-Driven Design (Evans)• RESTful SOA or Domain-Driven Design – A

Compromise? (Vaughn Vernon) [http://www.infoq.com/presentations/RESTful-SOA-DDD]

• Strategic Domain Driven Design with Context Mapping (Alberto Brandolini, Nov 2009)[http://www.infoq.com/articles/ddd-contextmapping]

Page 28: DDD e Restful SOA

Obrigado