Domain Driven Design : Pensando Fora da Caixa

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
1 de 25

Recomendados

DDD por
DDDDDD
DDDThiago Veiga
230 vistas35 diapositivas
Domain Driven Design por
Domain Driven DesignDomain Driven Design
Domain Driven DesignDaniel Everling
107 vistas48 diapositivas
Uma introdução ao Domain Driven Design por
Uma introdução ao Domain Driven DesignUma introdução ao Domain Driven Design
Uma introdução ao Domain Driven DesignLambda3
1K vistas39 diapositivas
xDD por
xDDxDD
xDDGerson Afonso Dias
298 vistas31 diapositivas
DDD – Domain Driven Design por
DDD – Domain Driven DesignDDD – Domain Driven Design
DDD – Domain Driven DesignÍtalo Bandeira
1.2K vistas47 diapositivas
Domain driven design - Visão Geral por
Domain driven design - Visão GeralDomain driven design - Visão Geral
Domain driven design - Visão GeralLorival Smolski Chapuis
1.1K vistas57 diapositivas

Más contenido relacionado

Similar a Domain Driven Design : Pensando Fora da Caixa

Iniciando com DDD por
Iniciando com DDDIniciando com DDD
Iniciando com DDDDouglas Aguiar
596 vistas18 diapositivas
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do... por
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
10 vistas64 diapositivas
Introdução a Modelagem por
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
866 vistas67 diapositivas
Webinar projetos e ti - business intelligence - como fazer por
Webinar   projetos e ti - business intelligence - como fazerWebinar   projetos e ti - business intelligence - como fazer
Webinar projetos e ti - business intelligence - como fazerProjetos e TI
487 vistas47 diapositivas
Muita gestão e pouca engenharia, por onde anda o XP? por
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
143 vistas31 diapositivas
Entendendo Domain-Driven Design por
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
8.4K vistas31 diapositivas

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

Indo além do técnico para desenvolver sistemas que evoluem na velocidade do... por Taller Negócio Digitais
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...
Webinar projetos e ti - business intelligence - como fazer por Projetos e TI
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 TI487 vistas
Muita gestão e pouca engenharia, por onde anda o XP? por Cristiano Schwening
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 Schwening143 vistas
Entendendo Domain-Driven Design por Rafael Ponte
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
Rafael Ponte8.4K vistas
Seja um desenvolvedor disruptivo, e se torne um grande DevOps por Valdomiro Bilharvas
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 por Rafael Coronel
Designer na sprint: um mal necessário Designer na sprint: um mal necessário
Designer na sprint: um mal necessário
Rafael Coronel420 vistas
Introdução ao Domain-Driven Design por André Borgonovo
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
André Borgonovo2.2K vistas
Domain Driven Design: como modelar uma aplicação em Node.js com DDD por Daniel Baptista Dias
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 Dias4.3K vistas
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI por DNAD
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
DNAD1.6K vistas
Encontrando equilíbrio do DDD enquanto sua aplicação cresce por Carolina Karklis
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 Karklis213 vistas
Introdução Domain-Driven-Design por Jorge Oleques
Introdução Domain-Driven-Design Introdução Domain-Driven-Design
Introdução Domain-Driven-Design
Jorge Oleques1.4K vistas
Utilizando BDD com Specflow e Selenium para testes Web MSP Tech Day Curitiba por Cleiton Felipe Moraes
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

Más de Thiago Bertuzzi

Secure Coding with OWASP & SSDLC.pptx por
Secure Coding with OWASP & SSDLC.pptxSecure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptxThiago Bertuzzi
34 vistas20 diapositivas
Cobertura de Código: Testes de Unidade por
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de UnidadeThiago Bertuzzi
13 vistas19 diapositivas
Código Seguro por
Código SeguroCódigo Seguro
Código SeguroThiago Bertuzzi
21 vistas28 diapositivas
MAUI + .NET 6: principais novidades por
MAUI + .NET 6: principais novidadesMAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidadesThiago Bertuzzi
73 vistas24 diapositivas
Criando Apps com .net: o Poder do Xamarin.Forms por
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.FormsThiago Bertuzzi
84 vistas18 diapositivas
Xamarin.Forms: estes pacotes vão salvar sua vida por
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 vidaThiago Bertuzzi
144 vistas15 diapositivas

Más de Thiago Bertuzzi(20)

Secure Coding with OWASP & SSDLC.pptx por Thiago Bertuzzi
Secure Coding with OWASP & SSDLC.pptxSecure Coding with OWASP & SSDLC.pptx
Secure Coding with OWASP & SSDLC.pptx
Thiago Bertuzzi34 vistas
Cobertura de Código: Testes de Unidade por Thiago Bertuzzi
Cobertura de Código: Testes de UnidadeCobertura de Código: Testes de Unidade
Cobertura de Código: Testes de Unidade
Thiago Bertuzzi13 vistas
MAUI + .NET 6: principais novidades por Thiago Bertuzzi
MAUI + .NET 6: principais novidadesMAUI + .NET 6: principais novidades
MAUI + .NET 6: principais novidades
Thiago Bertuzzi73 vistas
Criando Apps com .net: o Poder do Xamarin.Forms por Thiago Bertuzzi
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 Bertuzzi84 vistas
Xamarin.Forms: estes pacotes vão salvar sua vida por Thiago Bertuzzi
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 Bertuzzi144 vistas
Xamarin summit 2020 : Plugins e Controles para Xamarin.Forms  por 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 
Thiago Bertuzzi196 vistas
Do Azure Devops ao Github Actions, Caso Real por Thiago Bertuzzi
Do Azure Devops ao Github Actions, Caso RealDo Azure Devops ao Github Actions, Caso Real
Do Azure Devops ao Github Actions, Caso Real
Thiago Bertuzzi70 vistas
Plugins e Controles para Xamarin.Forms Canal.net DevWeek por Thiago Bertuzzi
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 Bertuzzi77 vistas
4 Apps que todo Desenvolvedor Xamarin deveria fazer e Plugins e Controles par... por 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...
Thiago Bertuzzi108 vistas
4 Apps que todo Desenvolvedor Xamarin deveria fazer por Thiago Bertuzzi
4 Apps que todo Desenvolvedor Xamarin deveria fazer4 Apps que todo Desenvolvedor Xamarin deveria fazer
4 Apps que todo Desenvolvedor Xamarin deveria fazer
Thiago Bertuzzi61 vistas
Novidades de Xamarin e Visual Studio for Mac no .Net Conf por 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
Thiago Bertuzzi59 vistas
Persistência e Bancos de Dados com Xamarin.Forms por Thiago Bertuzzi
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 Bertuzzi49 vistas
Azure Weekend : Desenvolvedor Mobile: Por que ainda não utiliza o Visual Stud... por 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...
Thiago Bertuzzi62 vistas
Boas Práticas com Xamarin Forms  por Thiago Bertuzzi
Boas Práticas com Xamarin Forms Boas Práticas com Xamarin Forms 
Boas Práticas com Xamarin Forms 
Thiago Bertuzzi175 vistas
Xamarin.Forms : O Poder do XAML, criando interfaces incríveis por Thiago Bertuzzi
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 Bertuzzi185 vistas
Novidades de Xamarin no Visual Studio 2019 e Microsoft Build 2019 por Thiago Bertuzzi
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 Bertuzzi60 vistas
Novidades de Xamarin, AppCenter e VisualStudio for Mac no Microsoft Build 2019 por Thiago Bertuzzi
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 Bertuzzi38 vistas
Novidades de Xamarin no VisualStudio 2019 e VisualStudio 8 For Mac por Thiago Bertuzzi
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 Bertuzzi41 vistas

Último

DevFest2023-Pragmatismo da Internet das Coisas por
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das CoisasWalter Coan
36 vistas40 diapositivas
ProxySQL no MySQL: Apenas um load balancer? por
ProxySQL no MySQL: Apenas um load balancer?ProxySQL no MySQL: Apenas um load balancer?
ProxySQL no MySQL: Apenas um load balancer?Roberto Garcia de Bem
6 vistas62 diapositivas
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023 por
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023
MAPA - SAÚDE - FUNDAMENTOS DE FARMACOLOGIA - 54/2023AcademicaDlaUnicesum
6 vistas3 diapositivas
TechConnection 2023 Floripa Azure Container Apps por
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container AppsWalter Coan
6 vistas14 diapositivas
Shift left DevOps Experience por
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps ExperienceWalter Coan
5 vistas19 diapositivas
Conheça agora o UiPath Autopilot™ para o Studio.pdf por
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdfBrunaCavalcanti29
14 vistas8 diapositivas

Último(8)

DevFest2023-Pragmatismo da Internet das Coisas por Walter Coan
DevFest2023-Pragmatismo da Internet das CoisasDevFest2023-Pragmatismo da Internet das Coisas
DevFest2023-Pragmatismo da Internet das Coisas
Walter Coan36 vistas
TechConnection 2023 Floripa Azure Container Apps por Walter Coan
TechConnection 2023 Floripa Azure Container AppsTechConnection 2023 Floripa Azure Container Apps
TechConnection 2023 Floripa Azure Container Apps
Walter Coan6 vistas
Shift left DevOps Experience por Walter Coan
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps Experience
Walter Coan5 vistas
Conheça agora o UiPath Autopilot™ para o Studio.pdf por BrunaCavalcanti29
Conheça agora o UiPath Autopilot™ para o Studio.pdfConheça agora o UiPath Autopilot™ para o Studio.pdf
Conheça agora o UiPath Autopilot™ para o Studio.pdf
BrunaCavalcanti2914 vistas

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