Este documento discute como combinar o design behavior-centric do Domain-Driven Design (DDD) com o estilo arquitetural data-centric do RESTful SOA. Ele descreve como o DDD pode ser usado para modelar estratégicamente o domínio de negócios e separá-lo em bounded contexts, e como técnicas como context maps, anti-corruption layers e open host services podem ajudar a integrar esses contextos de forma RESTful.
8. SOA Pitfalls
Service concern and responsibilities overload
• Services
• Transactions
• Security
• Transformation
• Representation
• Domain Logic
• Data Access
• Translation
• Integration
9. SOA Pitfalls
Service concern and responsibilities overload
• Services
• Transactions
• Security
• Transformation
• Representation
• Domain Logic
• Data Access
• Translation
• Integration
10. Modelagem Estratégica com DDD
• Entidades
• Objetos de Valor
• Serviços de Domínio
• Repositórios
• Factories
DDD#sóquenão
11. Modelagem Estratégica com DDD
• Entidades
• Objetos de Valor
• Serviços de Domínio
• Repositórios
• Factories
DDDBuilding blocks
12. Modelagem Estratégica com DDD
Building blocks
Óculos escuros
Palito de Dente
Arma
Stallone nos anos 80
13. 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
14. Modelagem Estratégica com DDD
• Bounded Contexts
• Context Map
• Anti-Corruption Layer
• Open Host Service
• Published Language
22. 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
23. Published Language
• Uma linguagem comum para ser usada para
tradução entre dois bounded-contexts
• Falando em REST: Mediatypes (xml, json, etc)
24. 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...
25. 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
26. 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.
27. 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]