ddd e restful soa

Post on 01-Nov-2014

461 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Apresentação para Talk no DNAD 2013

TRANSCRIPT

DDD e RESTful SOA

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

estilo arquitetural data-centric

Daniel Moreira YokoyamaSenior Software Architect

@dmyokomoreira.yokoyama@gmail.com

Agenda

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

SOA Pitfalls

SOAService-oriented

Architecture

!=Service-oriented

Design

SODSOA Pitfalls

SOA Pitfalls

Ask-Decision-SetVs

Tell-Don’t-Ask

SOASOA Pitfalls

overfocusing

Anemic-Domain ModelPode conduzir a um

SOA Pitfalls

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

SOA Pitfalls

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

Modelagem Estratégica com DDD

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

DDD#sóquenão

Modelagem Estratégica com DDD

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

DDDBuilding blocks

Modelagem Estratégica com DDD

Building blocks

Óculos escuros

Palito de Dente

Arma

Stallone nos anos 80

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

Modelagem Estratégica com DDD

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

Loja Virtual

Loja Virtual

Bounded Contexts

Bounded Contexts

Context Map

Anti-Corruption Layer

Design Estratégico

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

Bounded Contexts

Anti-Corruption Layer

Context Map

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

Published Language

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

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

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...

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

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.

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]

Obrigado

top related