L’application du Domain-Driven Style aux architectures de données: Vers une résolution de la dichotomie des données


Résumé

Au fil des ans, j’ ai vu une constante dans la conception des systèmes: la stress entre l’indépendance et le partage. Le Domain-Driven Style (DDD) brain a donné un vocabulaire et des outils pour gérer cette complexité pour le code. À mon sens, il est grand temps d’appliquer cette même rigueur aux architectures de données. Cet short article explore comment les principes fondamentaux du DDD, tels que le contexte délimité ( bounded context et le langage universal ( common language , peuvent nous aider à résoudre ce que j’ appelle la “dichotomie des données”. En traitant les données comme un produit au sein de leurs domaines, les organisations peuvent s’éloigner d’une design de données centralisée et monolithique put embrasser un écosystème décentralisé, active et fortement cohérent.

1 Le problème que nous ne parvenons pas à résoudre: La dichotomie des données

Le problème que nous rencontrons le plus souvent est la tension entre l’indépendance de nos services et le besoin de partager nos données. On a toujours cherché un équilibre.

  1. La base de données partagée: C’est une erreur classique. Une seule base de données centrale pour plusieurs solutions. C’est basic au launching, mais la simplicité se transforme vite en un enfer de couplage. Chaque modification dans la base de données affecte tous les solutions qui y sont connectés. La sainte indépendance des solutions est sacrifiée sur l’autel de la simplicité initiale.
  2. L’encapsulation stricte des données: À l’opposé, chaque service possède ses propres données, encapsulées et isolées. L’indépendance est maximale, mais la cooperation devient un calvaire. Obtenir des données d’un autre service, ne serait-ce que pour un relationship, demande de construire des API facilities ou des processus d’exportation lourds.

Les designs modernes, et en particulier les microservices, ont exacerbé ce dilemme. Sans un cadre de conception solide, on se retrouve avec un paysage de données fragmenté et incohérent. C’est pourquoi nous devons nous tourner vers une technique qui a déjà résolu des problèmes similaires: le DDD.

2 Les principes du DDD comme socle de nos architectures de données

Le DDD n’est pas un idea neuf, mais sa pertinence n’a fait que croître. Bien qu’il ait été initialement conçu pour le développement d’applications, je crois que ses principes sont universellement applicables à la perception de tout système complexe, y compris les architectures de données.

A. Penser en termes de Contextes Délimités

Un contexte délimité est la pierre angulaire de tout système bien conçu. Il définit une frontière logique et sémantique claire. À l’intérieur de cette frontière, un modèle de domaine spécifique et boy langage omniprésent s’appliquent. Pour nous, en tant qu’architectes de données, cela signifie que chaque domaine métier (ventes, advertising, logistique) est un contexte délimité, souverain et responsable de la modélisation et de la gestion de ses propres données. C’est la option directe à la quête d’indépendance.

B. La primauté du Langage Omniprésent

Un des plus grands défis de l’ingénierie est la communication. Le langage universal est le vocabulaire partagé par les développeurs et les professionals du domaine. Dans une design de données, cela signifie que nos modèles de données doivent refléter ce langage sans ambiguïté. Si les professionals du domaine parlent d’un” panier d’achat “, nos tables, nos colonnes et nos API de données doivent également parler de” paniers d’achat “. Sans cette cohérence, nous bâtissons sur du sable.

C. L’intégration the same level les Événements de Domaine

Les événements de domaine sont le ciment de nos systèmes distribués. Un événement de domaine n’est rien d’autre qu’un fait métier qui s’est produit. “Une commande a été passée.”” Un paiement a été traité.” En tant que source de vérité, ces événements permettent un découplage optimum. Un service peut émettre un événement sans savoir qui le consommera, et un autre service peut y réagir sans dépendre de l’implémentation du premier. C’est un moyen Sophisticated de partager des données sans les dangers d’une base de données partagée ou d’une API synchrone.

3 Du DDD au Data Mesh: Le Data Item comme pivot

Le Data Fit together n’est pas une design radicalement nouvelle, mais l’aboutissement logique des principes du DDD appliqués aux données. L’idée est simple, mais puissante: traiter les données non plus comme un sous-produit strategy, mais comme un produit métier à component entière.

Un Information Item n’est rien d’autre qu’un microservice de données au sein d’un contexte délimité.

  • Il est autonome et encapsulé: Promote comme un microservice classique, un Data Item est une entité qui possède ses propres données, sa logique de transformation (nettoyage, enrichissement) et ses interfaces de consommation. Il est le seul gardien de la vérité de boy domaine.
  • Il a une frontière claire: ses API de consommation sont kid interface publique, boy contrat de service. C’est la ligne de separation du contexte délimité Proclaim ce qui se trouve à l’intérieur est de la logique métier, tout ce qui en sort est une promesse de service documentée.
  • Il parle le langage omniprésent: Le Information Item garantit que les données qu’il subject sont dans un format et une sémantique qui ont du sens pour les consommateurs. L’équipe du domaine Marketing, par exemple, ne se contente pas de donner accès à ses logs bruts. Elle crée un Information Product “Performances de campagne” qui subject des métriques comme le cost_per_conversion , un terme que l’équipe commerciale et l’équipe de instructions comprennent et sur lequel elles peuvent compter.
  • Il résout la dichotomie: Ce modèle est la réponse élégante. Le domaine est propriétaire de ses données, garantissant l’ indépendance Le Data Item, through ses user interfaces claires et documentées, garantit l’ accessibilité sans créer de couplage ft.

Le Information Harmonize est l’architecture qui fédère ces Information Products. Ce n’est pas un système unique, mais une collection de domaines autonomes. Cela décharge l’équipe de données centrale d’un rôle de goulot d’étranglement et la positionne en tant que facilitatrice, construisant les plateformes et les outils qui permettent aux équipes de domaine de créer et de gérer leurs propres Information Products.

4 La cartographie des contextes: de la théorie à la pratique

La conception de Data Products autonomes n’est que la moitié du travail. L’autre moitié, souvent la plus complexe, est de gérer leurs dépendances. C’est là que la cartographie des contextes ( Context Map entre en jeu. La carte n’est pas un paper statique, mais une discussion proceed entre les équipes, une depiction visuelle des compromis que nous faisons.

Prenons un exemple concret dans l’industrie pharmaceutique, où la complexité est la norme.

  • Le Fournisseur/ Client (Vendor/ Consumer): Le “flux de valeur” clair

C’est la connection la plus saine. Une équipe, le Fournisseur , est la source de vérité put un specific type de données, et une autre équipe, le Customer , les consomme.

Exemple: L’équipe de la Sécurité des Sufferers est un contexte délimité. Elle est responsable de la capture et de la recognition des données sur les événements indésirables liés aux essais cliniques (les “Damaging Drug Reactions” ou ADR). Elle produit un Data Product AdverseEvent Stream L’équipe des Essais Cliniques a besoin de ces données pour surveiller la sécurité de ses individuals. Elle est le Customer Le Fournisseur promet un schéma de données secure et une sémantique claire. Le Customer, bien qu’il dépende du Fournisseur, peut s’y intégrer en toute confiance.

  • Le Conformiste (Conformist): Le “compromis pragmatique”

Parfois, la connection n’est pas égale. Un domaine doit adopter le modèle de données et le langage d’un autre domaine sans le changer. C’est un compromis.

Exemple: L’équipe des Essais Cliniques doit également consommer le Information Product ManufacturingBatch de l’équipe de Manufacturing des Médicaments La sémantique de cette équipe, optimisée put la manufacturing et la logistique, est très différente de celle utilisée en clinique. The same level exemple, un batch_id de manufacturing a une signification très spécifique. L’équipe des Essais Cliniques peut décider d’être conformiste et d’utiliser ce batch_id directement dans son modèle, acceptant de dépendre de l’équipe de manufacturing plutôt que de construire une couche de traduction complexe. C’est un choix pragmatique qui évite la complexité, mais qui rend l’équipe at risk aux changements du fournisseur.

  • La Couche Anti-Corruption (Anti-Corruption Layer– ACL): Le “bouclier protecteur”

C’est un modèle essentiel pour se protéger des systèmes extérieurs ou des domaines qui ne respectent pas nos normes. L’ACL est une couche de traduction qui convertit le modèle du Fournisseur en un modèle qui a du sens pour notre Contexte Délimité

Exemple: L’équipe d’ Analyse et de Recherche veut intégrer des données d’un fournisseur externe sur la Génétique des Patients Ce fournisseur utilise un modèle de données peu framework et avec un langage incohérent. Put éviter que ce disorder ne contamine notre propre modèle, nous construisons une ACL Cette couche traduit les termes du fournisseur (par exemple, “mutation_gene”) en notre propre langage omniprésent (“variant_adn”), garantissant que la pureté de notre modèle est préservée. C’est un investissement coûteux, mais nécessaire put maintenir l’intégrité de notre écosystème.

  • Le Noyau Partagé (Shared Kernel): L’entente “à dual tranchant”

C’est une connection à utiliser avec une grande carefulness. Elle se produit lorsque deux ou plusieurs contextes délimités partagent une partie de leur modèle de données et de code. Cela crée un couplage ft, mais peut être justifié pour des concepts fondamentaux sur lesquels proclaim le monde doit s’accorder.

Exemple: Les équipes de R&D et de Advertising doivent toutes deux utiliser la même définition d’un Produit Pharmaceutique Plutôt que de créer des définitions différentes et de les synchroniser, elles peuvent s’entendre pour maintenir une seule meaning centrale dans une bibliothèque ou un Information Product partagé. C’est efficace, mais cela exige une communication constante et une gouvernance très stricte. À mon sens, le suggestive de la aberration est toujours plus grand que la complexité d’une assimilation bien pensée.

5 Final thought

Au fil du temperatures, nous avons appris à découpler le code. Il est maintenant temperatures de le faire pour nos données. En embrassant le DDD comme notre guide de perception, et le Data Fit together comme notre design de recommendation, nous pouvons enfin résoudre cette dichotomie qui nous hante. L’avenir n’est pas dans un entrepôt de données monolithique, mais dans une fédération de Data Products autonomes, chacun géré par l’équipe qui comprend le mieux boy domaine.

Source link

Leave a Reply

Your email address will not be published. Required fields are marked *