estamos usando o chamado Modelo Rico, ou seja, trabalhamos com um modelo orientado a objetos e, como eu disse antes, nosso Domain e totalmente ignorante de detalhes de infraestrutura, ele so conhece as regras de negocio.Isolar o que o seu software E (a area de conhecimento que ele atende) de detalhes tecnicos, frameworks, databases, e uma otima pratica, sem duvidas. Digamos que isso seja implementar sua arquitetura de forma correta, como, ha decadas, explanado por diversos autores (vide Ports and Adapters, Onion Architecture, Clean Architecture e similares).E quem teve a ideia de utilizar DDD neste projeto?Nos mesmos (os devs)!E por que escolheram DDD?(Pensativo) Bom, vimos na comunidade que muita gente esta falando sobre o assunto, como uma boa pratica. Estamos pensando em iniciar outro projeto com DDD tambem.(Ficando preocupado) E do que se trata esse novo projeto?E um projeto ASP.NET Web API. Ja estamos estudando como usar DDD com ele.(Notando que o buraco esta ficando maior) Cara, estamos falando de muitas tecnologias e termos tecnicos, mas, ate o momento, nao citamos muitos conceitos cruciais do DDD, sabia? Voce ja leu o livro do Evans? Alguem do projeto tem alguma experiencia com DDD?(Confuso) Nao. Estou querendo comprar. Estamos seguindo alguns artigos e codigos de exemplo. E estamos todos aprendendo sobre o assunto neste projeto. Que pontos cruciais sao esses? Entao, voce ja sabia o que era DDD, ne espertinho?Sim. Estava te testando!! Faz 7 anos que estudo e pratico DDD. Aprendi bastante coisa e fiz inumeras bobagens tambem, entao, acho que sei um pouquinho sobre esse negocio.Sinta-se tomando a pilula vermelha, ok?OK!Vamos la! Tecnologias sao importantes (e podemos bater um papo sobre elas em outro momento), mas tenho notado que DDD tem sido mencionado na comunidade como uma especie de tecnologia Web API + DDD, ASP.NET + DDD, TDD + DDD e similares e as conversas sempre acabam indo para o lado de ferramentas (ORM), padroes (DI, Repository) e arquitetura (camada disso ou daquilo).Isso me deixa bem preocupado. Preocupo-me pela possibilidade de estarem usando DDD por estar na moda, esquecendo-se daqueles tais pontos cruciais que mencionei...Que seriam...?DDD e um conjunto de praticas com o objetivo de construir um software de qualidade, que atenda as necessidades do cliente. Junto dessas praticas, temos a importancia de trabalharmos proximos aos domain experts (pessoas da area de negocio que possam compartilhar conhecimento com os devs), entendendo a area de negocio do cliente e quebrando o problema em problemas menores.Nesse processo, identificamos o core business do cliente e sub-areas de negocio de menor importancia, e podemos dar maior foco ao core business.Foco no que importa mais para cliente -> Entregamos mais valor -> Melhor retorno sobre o investimento para o cliente!Temos, aqui, conceitos como Ubiquitous Language, Subdomains e Bounded Contexts e diversas praticas em nivel estrategico para trabalharmos com varios times, cada um atendendo uma parte do negocio.No DDD, o foco esta no dominio, que e a area de conhecimento para a qual voce esta criando uma solucao, e na abstracao deste dominio em 1 ou mais modelos, que resolvem problemas daquele dominio.Tudo que mencionei agora sao elementos