SlideShare una empresa de Scribd logo
1 de 28
DDD e RESTful SOA
Uma abordagem prática para combinar
um design behavior-centric com um
estilo arquitetural data-centric
Daniel Moreira Yokoyama
Senior Software Architect
@dmyoko
moreira.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
SOD
SOA Pitfalls
SOA Pitfalls
Ask-Decision-Set
Vs
Tell-Don’t-Ask
SOA
SOA Pitfalls
overfocusing
Anemic-Domain Model
Pode 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

Más contenido relacionado

Similar a DDD e Restful SOA

Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescer
Guilherme
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
renanwb
 
Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturas
rafaslide
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
DNAD
 

Similar a DDD e Restful SOA (20)

NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
NoSQL para Desenvolvedores .NET - Developers-SP - Setembro-2017
 
Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018Azure Cosmos DB - Campinas .NET - Janeiro-2018
Azure Cosmos DB - Campinas .NET - Janeiro-2018
 
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017Azure Cosmos DB - Azure Weekend SP - Outubro/2017
Azure Cosmos DB - Azure Weekend SP - Outubro/2017
 
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
Azure Cosmos DB para Desenvolvedores - From Zero to Hero - Março-2018
 
Palestra ror edted
Palestra ror edtedPalestra ror edted
Palestra ror edted
 
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BRJBoss Fuse Service Works - O Fuse além da integração - PT-BR
JBoss Fuse Service Works - O Fuse além da integração - PT-BR
 
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
Tecnologias de bancos de dados no Azure: conhecendo as opções relacionais e N...
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NETArquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
Arquitetura de Serviços - SOA, REST, Microservices e a plataforma .NET
 
Php Conf08 Enterprise Patterns
Php Conf08 Enterprise PatternsPhp Conf08 Enterprise Patterns
Php Conf08 Enterprise Patterns
 
Introdução a Web Services
Introdução a Web ServicesIntrodução a Web Services
Introdução a Web Services
 
Desafio de crescer
Desafio de crescerDesafio de crescer
Desafio de crescer
 
Lidando com fluxos complexos com o uso de Sagas, NServiceBus e RabbitMQ
Lidando com fluxos complexos com o uso de Sagas, NServiceBus e RabbitMQLidando com fluxos complexos com o uso de Sagas, NServiceBus e RabbitMQ
Lidando com fluxos complexos com o uso de Sagas, NServiceBus e RabbitMQ
 
Service Oriented Architecture
Service Oriented ArchitectureService Oriented Architecture
Service Oriented Architecture
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 
Vida longa para SOA com microservices
Vida longa para SOA com microservicesVida longa para SOA com microservices
Vida longa para SOA com microservices
 
Soa – Woa Rest Arquiteturas
Soa – Woa   Rest ArquiteturasSoa – Woa   Rest Arquiteturas
Soa – Woa Rest Arquiteturas
 
04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)04 - Felipe Oliveira - Think Decoupled! (SOA)
04 - Felipe Oliveira - Think Decoupled! (SOA)
 
Service Oriented Architecture - SOA
Service Oriented Architecture - SOAService Oriented Architecture - SOA
Service Oriented Architecture - SOA
 
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
Esquenta TDC - Como DDD e principalmente Domain Model contribuem na construçã...
 

DDD e Restful SOA