View
447
Download
1
Category
Preview:
DESCRIPTION
Apresentação para Talk no DNAD 2013
Citation preview
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
Recommended