Vous cherchez des suggestions sur la façon d'aborder ce problème et de comprendre si Domain Driven Design est vraiment le meilleur modèle ici.DDD à l'échelle de l'entreprise?
Mon client est en train de re-architecturer sa pile d'outils et de services presque obsolète. Le client est un e-marchand en expansion rapide. Son produit principal est son grand site Web de commerce électronique. Autour de ce site, le client dispose d'une variété de flux de données qu'il expose à ses partenaires. Une foule d'applications internes pour aider dans le marketing, les ventes, les rapports, etc. Une foule d'applications de soutien aux utilisateurs et de soutien aux partenaires. Une bonne quantité de différentes synchronisations de données, travaux ETL, etc ... Vous obtenez l'image.
Les magasins de données et les fournisseurs de données sont également nombreux. Le stockage méga-évolutif basé sur le nuage NOSQL fournit la plupart des choses sur le site Web public. Les serveurs SQL avec un certain nombre de bases de données fournissent des données aux applications internes. Il existe également des serveurs spéciaux de recherche uniquement pour fournir des capacités de recherche mégascalables, ainsi que d'autres flux que les applications consomment auprès de divers fournisseurs tiers. Si DDD est adopté, le plan consisterait à hériter de différents groupes d'objets de référentiel à partir de classes de base de référentiel spécifiques à un magasin de données
Le client a exécuté un exercice dans lequel il a cartographié la plupart de ses entités métier sur une base de données. niveau "générique": noms et relations d'entités. En dehors de ce niveau "générique", il y a une quantité décente de réutilisation de divers objets concrets à travers les applications ainsi qu'une quantité décente d'entités qui différeraient dans leur implémentation, en fonction d'une application.
Par exemple: entité Commander sur un site de commerce électronique peut ressembler à X, alors que pour une application qui gère les appels de soutien tels que Y, et de plus pour quelqu'un de faire une analyse de la fraude comme Z.
Je cherche des suggestions sur comment adapter DDD ou un autre modèle architectural pour gérer ce désordre géant: avoir une stratégie d'entreprise solide qui facilite la réutilisation et permet la séparation de la logique si nécessaire. En plus des critères habituels (évolutifs, flexibles, adaptables, unit-testables, simples, etc.).
En raison de différents magasins de données, la structure des DTO est très différente de celle du magasin de données au magasin de données. En raison de divers besoins commerciaux, diverses applications ont besoin de différentes versions de certaines entités, et comme l'entreprise est en pleine expansion, l'avenir est très instable et la flexibilité est primordiale. Je suppose que mon plus gros problème est de trouver un moyen de séparer le modèle d'affaires à différents domaines et de le maintenir ensemble quand il y a beaucoup de partage ou de réutilisation, tout en étant capable d'adopter un niveau élevé de changement.
Merci pour toutes vos suggestions
P.S. La boutique est un magasin Microsoft. VS2010/.NET/SQL/Azure
+1 "DDD consiste à isoler votre logique métier". @Igorek, L'échelle de ce que vous regardez va au-delà de cela. (Mais je suppose que vous pensiez déjà) –
@Igorek RE: "Je suppose que mon plus gros problème ..." Par tous les moyens essayer et "modèle" (comprendre) l'image plus grande, mais je serais très très hésitant à effectivement mettre en œuvre implémentation unique "Modèle". Essayez de garder les choses simples, et n'oubliez pas les bons vieux principes OO (comme la séparation des préoccupations), car ils s'appliquent toujours au niveau macro. –