SlideShare uma empresa Scribd logo
1 de 27
Domain Driven Design
&
Software Architecture
• Uma arquitetura define ESTRUTURA.
• Uma arquitetura define COMPORTAMENTO.
• Uma arquitetura balanceia NECESSIDADES DOS STAKEHOLDERS.
• Uma arquitetura pode seguir um ESTILO ARQUITETURAL.
• Uma arquitetura é influenciada pelo AMBIENTE.
• Uma arquitetura influencia a estrutura do TIME.
• TODO SOFTWARE TEM UMA ARQUITETURA.
• Decisões na arquitetura influenciam em custo, manutenibilidade,
performance, escalabilidade, etc.
Reflitamos sobre arquitetura de software
• Inclui todas as atividades que auxiliam na transformação da
especificação de requisitos na implementação. Os principais artefatos
do processo de design de software incluem:
• Especificação de Requisitos
• Design de Alto Nível
• Design Detalhado
Reflitamos sobre design de software
Arquitetura vs Design
• Camadas
• Microserviços
• Pipes and Filters
• Plugins
• Client/server
• Etc
Estilos Arquiteturais
• MVC
• CQRS
• Event Sourcing
• 3 camadas
• Onion
• Clean
• Hexagonal
• Etc...
Padrões Arquiteturais
E a arquitetura DDD?
NÃO EXISTE ARQUITETURA DDD!!!
Não mesmo? Mas todo mundo usa? Vi no
LinkedIn!
O que é DDD afinal?
14
2003
DDD – Domain Driven Design
• DDD não é sobre arquitetura, é
sobre design, é sobre como você
aborda o negócio para criação do
software!
• Indicado para aplicações
complexas com muitas entidades
e regras de negócio.
• “Simples” de entender, muito
difícil de aplicar.
• DDD é sobre negócio:
• Agrupar conhecimentos de negócio.
• Reconhecer e separar subdomínios.
• Desenhar modelo de domínio rico.
• DDD pode ser usado com qualquer estilo ou padrão arquitetural:
CQRS, estrutura em camadas, etc.
• DDD é uma abordagem de design (modelagem) de software, não é
tecnologia e poderia ser chamado de “filosofia”.
DDD – Domain Driven Design
Mas, e as camadas DDD? E os padrões DDD?
Precisamos de tudo isso?
Arquitetura em Camadas: Onion Architecture
• Batizada por Jeffrey Palermo.
• Dependência de fora para
dentro.
• "This architecture is not
appropriate for small
websites." (Palermo, J.)
Arquitetura em Camadas: Onion Architecture
• "I propose a new approach to
architecture. Honestly, it’s not
completely new, but I’m
proposing it as a named,
architectural pattern. Patterns are
useful because it gives software
professionals a common
vocabulary with which to
communicate. There are a lot of
aspects to the Onion Architecture,
and if we have a common term to
describe this approach, we can
communicate more
effectively." (Palermo, J.)
Arquitetura em Camadas: Onion Architecture
• "Hexagonal architecture and
Onion Architecture share the
following
premise: Externalize
infrastructure and write
adapter code so that the
infrastructure does not
become tightly coupled."
(Palermo, J.)
https://jeffreypalermo.com/2008/07
/the-onion-architecture-part-1/
Arquitetura em Camadas: Hexagonal Architecture
• Batizada por Alistair
Cockburn.
• Também conhecida como
"Ports and Adapters".
Arquitetura em Camadas: Clean Architecture
• Batizada por Robert
C. Martin – Uncle
Bob.
https://8thlight.com/blog/u
ncle-bob/2012/08/13/the-
clean-architecture.html
E por que não simplificar?
API API
API
O mais importante é a IoC e o baixo acoplamento do bloco de Business e não as camadas em si!
(Faraday, Gabriel)
• “Nos lugares onde os aspectos arquiteturais são levadas a sério como
imprescindíveis para o sucesso de qualquer projeto é cada vez mais
consenso de que a maneira tradicional de arquitetar sistemas não
está provendo todo o valor que deveria.” (Giovanni Bassi)
• Problemas do modelo tradicional:
• Código inútil
• Over-engineering
• Código embaraçoso
• Complexidade de manutenção
• Não tenha medo do refactoring!
Arquitetura Emergente
Arquitetura Emergente vs Agile Manifesto
http://agilemanifesto.org/iso/ptbr/manifesto.html
Arquitetura Emergente vs Agile Principles
• Mudanças nos requisitos são bem-vindas, mesmo tardiamente no
desenvolvimento.
• Software funcionando é a medida primária de progresso.
• Simplicidade--a arte de maximizar a quantidade de trabalho não
realizado--é essencial.
• As melhores arquiteturas, requisitos e designs emergem de equipes
auto organizáveis.
• Contínua atenção à excelência técnica e bom design aumenta a
agilidade.
http://agilemanifesto.org/iso/ptbr/principles.html
Obrigado!

Mais conteúdo relacionado

Semelhante a Ddd e software architecture

Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHHugo Ferreira
 
O uso de softwares na engenharia civil
O uso de softwares na engenharia civilO uso de softwares na engenharia civil
O uso de softwares na engenharia civildebvieir
 
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Renato Groff
 
Hexagonal Architecture
Hexagonal ArchitectureHexagonal Architecture
Hexagonal ArchitectureLucas Moura
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Renato Groffe
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAna Claudia Annunciação
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwarejamersonlima
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geralsergiocrespo
 
Introducao a Clean Architecture
Introducao a Clean ArchitectureIntroducao a Clean Architecture
Introducao a Clean ArchitectureRafael Capuano
 
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Orlando Junior
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Renato Groff
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Renato Groffe
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 

Semelhante a Ddd e software architecture (20)

Arquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BHArquitetura Limpa @ 32º CocoaTalks BH
Arquitetura Limpa @ 32º CocoaTalks BH
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
O uso de softwares na engenharia civil
O uso de softwares na engenharia civilO uso de softwares na engenharia civil
O uso de softwares na engenharia civil
 
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
Tecnologias Microsoft, Open Source, Linux, Docker e a Nuvem - WTT-2019 - Mack...
 
Hexagonal Architecture
Hexagonal ArchitectureHexagonal Architecture
Hexagonal Architecture
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
Azure Container Apps: visão geral e primeiros passos | Azure Weekend 2022 - P...
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Aula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertidoAula15 arquitetura software_01_introducao-convertido
Aula15 arquitetura software_01_introducao-convertido
 
Arquitetura de-software
Arquitetura de-softwareArquitetura de-software
Arquitetura de-software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Arquitetura de Software Visão Geral
Arquitetura de Software Visão GeralArquitetura de Software Visão Geral
Arquitetura de Software Visão Geral
 
Introducao a Clean Architecture
Introducao a Clean ArchitectureIntroducao a Clean Architecture
Introducao a Clean Architecture
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
Um estudo sobre práticas arquiteturais em metodologias ágeis de desenvolvimen...
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
Docker no Back e no Front - um exemplo com .NET Core e Angular - Campus Party...
 
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
Orquestrando processos de negócio com .NET + Azure Durable Functions | Cloud4...
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Ddd e software architecture

  • 2. • Uma arquitetura define ESTRUTURA. • Uma arquitetura define COMPORTAMENTO. • Uma arquitetura balanceia NECESSIDADES DOS STAKEHOLDERS. • Uma arquitetura pode seguir um ESTILO ARQUITETURAL. • Uma arquitetura é influenciada pelo AMBIENTE. • Uma arquitetura influencia a estrutura do TIME. • TODO SOFTWARE TEM UMA ARQUITETURA. • Decisões na arquitetura influenciam em custo, manutenibilidade, performance, escalabilidade, etc. Reflitamos sobre arquitetura de software
  • 3. • Inclui todas as atividades que auxiliam na transformação da especificação de requisitos na implementação. Os principais artefatos do processo de design de software incluem: • Especificação de Requisitos • Design de Alto Nível • Design Detalhado Reflitamos sobre design de software
  • 5. • Camadas • Microserviços • Pipes and Filters • Plugins • Client/server • Etc Estilos Arquiteturais
  • 6. • MVC • CQRS • Event Sourcing • 3 camadas • Onion • Clean • Hexagonal • Etc... Padrões Arquiteturais
  • 9. Não mesmo? Mas todo mundo usa? Vi no LinkedIn!
  • 10. O que é DDD afinal?
  • 12. DDD – Domain Driven Design • DDD não é sobre arquitetura, é sobre design, é sobre como você aborda o negócio para criação do software! • Indicado para aplicações complexas com muitas entidades e regras de negócio. • “Simples” de entender, muito difícil de aplicar.
  • 13. • DDD é sobre negócio: • Agrupar conhecimentos de negócio. • Reconhecer e separar subdomínios. • Desenhar modelo de domínio rico. • DDD pode ser usado com qualquer estilo ou padrão arquitetural: CQRS, estrutura em camadas, etc. • DDD é uma abordagem de design (modelagem) de software, não é tecnologia e poderia ser chamado de “filosofia”. DDD – Domain Driven Design
  • 14.
  • 15.
  • 16. Mas, e as camadas DDD? E os padrões DDD?
  • 18. Arquitetura em Camadas: Onion Architecture • Batizada por Jeffrey Palermo. • Dependência de fora para dentro. • "This architecture is not appropriate for small websites." (Palermo, J.)
  • 19. Arquitetura em Camadas: Onion Architecture • "I propose a new approach to architecture. Honestly, it’s not completely new, but I’m proposing it as a named, architectural pattern. Patterns are useful because it gives software professionals a common vocabulary with which to communicate. There are a lot of aspects to the Onion Architecture, and if we have a common term to describe this approach, we can communicate more effectively." (Palermo, J.)
  • 20. Arquitetura em Camadas: Onion Architecture • "Hexagonal architecture and Onion Architecture share the following premise: Externalize infrastructure and write adapter code so that the infrastructure does not become tightly coupled." (Palermo, J.) https://jeffreypalermo.com/2008/07 /the-onion-architecture-part-1/
  • 21. Arquitetura em Camadas: Hexagonal Architecture • Batizada por Alistair Cockburn. • Também conhecida como "Ports and Adapters".
  • 22. Arquitetura em Camadas: Clean Architecture • Batizada por Robert C. Martin – Uncle Bob. https://8thlight.com/blog/u ncle-bob/2012/08/13/the- clean-architecture.html
  • 23. E por que não simplificar? API API API O mais importante é a IoC e o baixo acoplamento do bloco de Business e não as camadas em si! (Faraday, Gabriel)
  • 24. • “Nos lugares onde os aspectos arquiteturais são levadas a sério como imprescindíveis para o sucesso de qualquer projeto é cada vez mais consenso de que a maneira tradicional de arquitetar sistemas não está provendo todo o valor que deveria.” (Giovanni Bassi) • Problemas do modelo tradicional: • Código inútil • Over-engineering • Código embaraçoso • Complexidade de manutenção • Não tenha medo do refactoring! Arquitetura Emergente
  • 25. Arquitetura Emergente vs Agile Manifesto http://agilemanifesto.org/iso/ptbr/manifesto.html
  • 26. Arquitetura Emergente vs Agile Principles • Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. • Software funcionando é a medida primária de progresso. • Simplicidade--a arte de maximizar a quantidade de trabalho não realizado--é essencial. • As melhores arquiteturas, requisitos e designs emergem de equipes auto organizáveis. • Contínua atenção à excelência técnica e bom design aumenta a agilidade. http://agilemanifesto.org/iso/ptbr/principles.html