SlideShare uma empresa Scribd logo
Domain Driven-Design
Pensando Fora da Caixa
Thiago Bertuzzi
It´s-a me Bertuzzi
• Thiago Bertuzzi é desenvolvedor .net há 15 anos participando
de projetos Desktop, Services, Web e Mobile utilizando
Xamarin.
• É Microsoft MVP em Developer Technologies
• É Líder técnico / Arquiteto Mobile e .Net na NESS
• Contribui para comunidade Xamarin escrevendo artigos,
compartilhando códigos, palestrando e criando pacotes Nuget.
O que é Domain-Driven Design (DDD)?
• DDD
• Desenvolvimento guiado pelo domínio
• É uma abordagem de modelagem de software destinada para
auxiliar no tratamento de regras e resolução de problemas
complexos do negócio.
O que é Domain-Driven Design (DDD)?
Idealizado por Eric
Evans, no famoso “Blue
book”
Domain-Driven Design
Atacando as
complexidades no
coração do software
Disclaimer
• Sou a favor da utilização consciente!
• DDD é uma abordagem valiosa e por isso deve ser usada com
propósito!
• Essa palestra trata de erros comuns na escolha dessa abordagem,
motivadas pela falta de conhecimento real sobre o assunto.
Mas que erros?
Vou construir meu projeto com uma
arquitetura DDD!
X
Design
Arquitetura
Arquitetura
É o planejamento da solução,
contendo a definição dos
componentes e a interação entre
eles
Design
Design
É a forma (padrões e práticas)
como os componentes são
implementados
Na minha empresa de prestação de
serviços, o time de negócio se refere ao
serviço realizado como “Produto”, mas no
meu código, vou chamá-lo de “Serviço”
mesmo.
Linguagem Ubíqua
Há diversas áreas na minha empresa, mas eles
falam sobre o Cliente de forma diferente e
alguns requisitos e regras de uma área são
diferentes da outra área. Vou mesclar as
necessidades e resolver de uma vez só!
Bounded Contexts (Contextos Delimitados)
Big Ball of Mud (Grande bola de lama)
•Vou começar a implementar o meu
projeto com DDD, usando um template e
criando todas as camadas e patterns
Modelagem Tática
• Lembre-se, DDD antes de tudo é sobre resolver problemas do negócio. Ele
que vai demandar o que você precisa ou não;
• Os patterns não são específicos do DDD, mas foram agrupados para compor
essa abordagem. Não utilizar todos eles, não significa abandonar o conceito;
• Cuidado ao criar complexidade desnecessária. Não implemente padrões ou
camadas que não fazem sentido para o seu cenário;
• Templates de demonstração dessas abordagens são válidos para estudar e
compreender, porém não deve ser replicado em produção (Copia-Cola).
Representação
Representação
Quando devo utilizar o DDD?
• Cenários onde o negócio por si só já é complexo;
• Quando há granularidade e complexidade das regras de negócio;
• Quando as suas necessidades estão centradas nas operações do
negócio e não exclusivamente em dados;
• Você possui diversos contextos que por mais que funcionem
independentemente, precisam compartilhar informações entre si.
Quando não devo utilizar o DDD?
• Quando sua aplicação é centrada em dados (aplicações contendo
apenas CRUDs) ou regras simples;
• Apenas pelo desejo de adotar a abordagem na aplicação, mesmo
ela sendo simples;
• Quando não se tem conhecimento do negócio. Essa análise
devera ser feita com um Domain Expert;
• Se você não tem ampla compreensão do que é e o que não é
DDD.
Livros Recomendados
Obrigado / Duvidas?
• “Toda vez que alguém fala “Vou construir meu projeto com uma
arquitetura DDD”,Deus mata um panda”
• twitter.com/tbertuzzi
• github.com/tbertuzzi
• nuget.org/profiles/Bertuzzi
• medium.com/@bertuzzi
• bertuzzi.dev

Mais conteúdo relacionado

Semelhante a Domain Driven Design : Pensando Fora da Caixa

Iniciando com DDD
Iniciando com DDDIniciando com DDD
Iniciando com DDD
Douglas Aguiar
 
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Taller Negócio Digitais
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
Webinar projetos e ti - business intelligence - como fazer
Webinar   projetos e ti - business intelligence - como fazerWebinar   projetos e ti - business intelligence - como fazer
Webinar projetos e ti - business intelligence - como fazer
Projetos e TI
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
Cristiano Schwening
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
Felipe Do Nascimento
 
Domain driven-design
Domain driven-designDomain driven-design
Domain driven-design
Maicon Carlos Pereira
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Valdomiro Bilharvas
 
Designer na sprint: um mal necessário
Designer na sprint: um mal necessário Designer na sprint: um mal necessário
Designer na sprint: um mal necessário
Rafael Coronel
 
Levando a Estratégia para as Nuvens v2.0
Levando a Estratégia para as Nuvens v2.0Levando a Estratégia para as Nuvens v2.0
Levando a Estratégia para as Nuvens v2.0AEA Brazil Chapter
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDomain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Daniel Baptista Dias
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
Universidade Federal de Minas Gerais
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrões
Joao Paulo Oliveira dos Santos
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
DNAD
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Carolina Karklis
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
Jorge Oleques
 
Domain Driven Design - Uma introdução
Domain Driven Design - Uma introduçãoDomain Driven Design - Uma introdução
Domain Driven Design - Uma introdução
Daniel Baptista Dias
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Cleiton Felipe Moraes
 

Semelhante a Domain Driven Design : Pensando Fora da Caixa (20)

Iniciando com DDD
Iniciando com DDDIniciando com DDD
Iniciando com DDD
 
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
Webinar projetos e ti - business intelligence - como fazer
Webinar   projetos e ti - business intelligence - como fazerWebinar   projetos e ti - business intelligence - como fazer
Webinar projetos e ti - business intelligence - como fazer
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
Design Patterns - Com Java
Design Patterns  - Com JavaDesign Patterns  - Com Java
Design Patterns - Com Java
 
Domain driven-design
Domain driven-designDomain driven-design
Domain driven-design
 
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOpsSeja um desenvolvedor disruptivo, e se torne um grande DevOps
Seja um desenvolvedor disruptivo, e se torne um grande DevOps
 
Designer na sprint: um mal necessário
Designer na sprint: um mal necessário Designer na sprint: um mal necessário
Designer na sprint: um mal necessário
 
Levando a Estratégia para as Nuvens v2.0
Levando a Estratégia para as Nuvens v2.0Levando a Estratégia para as Nuvens v2.0
Levando a Estratégia para as Nuvens v2.0
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDDDomain Driven Design: como modelar uma aplicação em Node.js com DDD
Domain Driven Design: como modelar uma aplicação em Node.js com DDD
 
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto[CEFETMG][ESw] Aula 6 - Conceitos de projeto
[CEFETMG][ESw] Aula 6 - Conceitos de projeto
 
Domain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrõesDomain Driven Design - Aplicando estrategias e padrões
Domain Driven Design - Aplicando estrategias e padrões
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Introdução Domain-Driven-Design
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
 
Domain Driven Design - Uma introdução
Domain Driven Design - Uma introduçãoDomain Driven Design - Uma introdução
Domain Driven Design - Uma introdução
 
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day CuritibaUtilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba
 

Mais de Thiago Bertuzzi

Secure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptxSecure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptx
Thiago Bertuzzi
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
Thiago Bertuzzi
 
Código Seguro
Código SeguroCódigo Seguro
Código Seguro
Thiago Bertuzzi
 
MAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidadesMAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidades
Thiago Bertuzzi
 
Criando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.FormsCriando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.Forms
Thiago Bertuzzi
 
Xamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vidaXamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vida
Thiago Bertuzzi
 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Thiago Bertuzzi
 
Do Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso RealDo Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso Real
Thiago Bertuzzi
 
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeekPlugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
Thiago Bertuzzi
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
Thiago Bertuzzi
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer
Thiago Bertuzzi
 
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
 Novidades de Xamarin e Visual Studio for Mac no .Net Conf Novidades de Xamarin e Visual Studio for Mac no .Net Conf
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
Thiago Bertuzzi
 
Persistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.FormsPersistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.Forms
Thiago Bertuzzi
 
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Thiago Bertuzzi
 
Boas Práticas com Xamarin Forms 
Boas Práticas com Xamarin Forms Boas Práticas com Xamarin Forms 
Boas Práticas com Xamarin Forms 
Thiago Bertuzzi
 
Armazenando Dados com Xamarin
Armazenando Dados com XamarinArmazenando Dados com Xamarin
Armazenando Dados com Xamarin
Thiago Bertuzzi
 
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveisXamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
Thiago Bertuzzi
 
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Thiago Bertuzzi
 
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Thiago Bertuzzi
 
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For MacNovidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Thiago Bertuzzi
 

Mais de Thiago Bertuzzi (20)

Secure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptxSecure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptx
 
Cobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
 
Código Seguro
Código SeguroCódigo Seguro
Código Seguro
 
MAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidadesMAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidades
 
Criando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.FormsCriando Apps com .net: o Poder do Xamarin.Forms
Criando Apps com .net: o Poder do Xamarin.Forms
 
Xamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vidaXamarin.Forms: estes pacotes vão salvar sua vida
Xamarin.Forms: estes pacotes vão salvar sua vida
 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms 
 
Do Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso RealDo Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso Real
 
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeekPlugins e Controles para Xamarin.Forms Canal.net DevWeek
Plugins e Controles para Xamarin.Forms Canal.net DevWeek
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par...
 
4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer
 
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
 Novidades de Xamarin e Visual Studio for Mac no .Net Conf Novidades de Xamarin e Visual Studio for Mac no .Net Conf
Novidades de Xamarin e Visual Studio for Mac no .Net Conf
 
Persistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.FormsPersistência e Bancos de Dados com Xamarin.Forms
Persistência e Bancos de Dados com Xamarin.Forms
 
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud...
 
Boas Práticas com Xamarin Forms 
Boas Práticas com Xamarin Forms Boas Práticas com Xamarin Forms 
Boas Práticas com Xamarin Forms 
 
Armazenando Dados com Xamarin
Armazenando Dados com XamarinArmazenando Dados com Xamarin
Armazenando Dados com Xamarin
 
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveisXamarin.Forms : O Poder do XAML, criando interfaces incríveis
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis
 
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019
 
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019
 
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For MacNovidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac
 

Domain Driven Design : Pensando Fora da Caixa

  • 1. Domain Driven-Design Pensando Fora da Caixa Thiago Bertuzzi
  • 2. It´s-a me Bertuzzi • Thiago Bertuzzi é desenvolvedor .net há 15 anos participando de projetos Desktop, Services, Web e Mobile utilizando Xamarin. • É Microsoft MVP em Developer Technologies • É Líder técnico / Arquiteto Mobile e .Net na NESS • Contribui para comunidade Xamarin escrevendo artigos, compartilhando códigos, palestrando e criando pacotes Nuget.
  • 3. O que é Domain-Driven Design (DDD)? • DDD • Desenvolvimento guiado pelo domínio • É uma abordagem de modelagem de software destinada para auxiliar no tratamento de regras e resolução de problemas complexos do negócio.
  • 4. O que é Domain-Driven Design (DDD)? Idealizado por Eric Evans, no famoso “Blue book” Domain-Driven Design Atacando as complexidades no coração do software
  • 5. Disclaimer • Sou a favor da utilização consciente! • DDD é uma abordagem valiosa e por isso deve ser usada com propósito! • Essa palestra trata de erros comuns na escolha dessa abordagem, motivadas pela falta de conhecimento real sobre o assunto.
  • 7. Vou construir meu projeto com uma arquitetura DDD!
  • 10. Arquitetura É o planejamento da solução, contendo a definição dos componentes e a interação entre eles
  • 12. Design É a forma (padrões e práticas) como os componentes são implementados
  • 13. Na minha empresa de prestação de serviços, o time de negócio se refere ao serviço realizado como “Produto”, mas no meu código, vou chamá-lo de “Serviço” mesmo.
  • 15. Há diversas áreas na minha empresa, mas eles falam sobre o Cliente de forma diferente e alguns requisitos e regras de uma área são diferentes da outra área. Vou mesclar as necessidades e resolver de uma vez só!
  • 17. Big Ball of Mud (Grande bola de lama)
  • 18. •Vou começar a implementar o meu projeto com DDD, usando um template e criando todas as camadas e patterns
  • 19. Modelagem Tática • Lembre-se, DDD antes de tudo é sobre resolver problemas do negócio. Ele que vai demandar o que você precisa ou não; • Os patterns não são específicos do DDD, mas foram agrupados para compor essa abordagem. Não utilizar todos eles, não significa abandonar o conceito; • Cuidado ao criar complexidade desnecessária. Não implemente padrões ou camadas que não fazem sentido para o seu cenário; • Templates de demonstração dessas abordagens são válidos para estudar e compreender, porém não deve ser replicado em produção (Copia-Cola).
  • 22. Quando devo utilizar o DDD? • Cenários onde o negócio por si só já é complexo; • Quando há granularidade e complexidade das regras de negócio; • Quando as suas necessidades estão centradas nas operações do negócio e não exclusivamente em dados; • Você possui diversos contextos que por mais que funcionem independentemente, precisam compartilhar informações entre si.
  • 23. Quando não devo utilizar o DDD? • Quando sua aplicação é centrada em dados (aplicações contendo apenas CRUDs) ou regras simples; • Apenas pelo desejo de adotar a abordagem na aplicação, mesmo ela sendo simples; • Quando não se tem conhecimento do negócio. Essa análise devera ser feita com um Domain Expert; • Se você não tem ampla compreensão do que é e o que não é DDD.
  • 25. Obrigado / Duvidas? • “Toda vez que alguém fala “Vou construir meu projeto com uma arquitetura DDD”,Deus mata um panda” • twitter.com/tbertuzzi • github.com/tbertuzzi • nuget.org/profiles/Bertuzzi • medium.com/@bertuzzi • bertuzzi.dev