Aller au contenu

Projection

Une Projection est une représentation préparée des données métier pour un usage de lecture précis.

Pourquoi les projections existent

Le frontend ne doit pas refaire toute la logique métier à chaque chargement de page. Les données sont donc préparées en amont sous une forme adaptée à leur consommation.

Exemple simplifié :

Données canoniques + offres
          ↓
Construction de projection
          ↓
Projection produit / navigation / homepage
          ↓
Frontend

La projection permet notamment d'obtenir des lectures plus simples, plus rapides et plus prévisibles.

Exemple concret

Pour afficher une fiche produit, le frontend peut avoir besoin du nom, de l'image principale, des caractéristiques préparées et des offres disponibles.

Ces informations peuvent être regroupées dans une projection au lieu de demander au frontend de recalculer l'identité, choisir l'image ou reclasser les données marchands.

Une projection n'est pas la vérité d'origine

Une projection est dérivée des données métier autoritatives.

Elle ne doit donc pas :

  • inventer une nouvelle identité ;
  • résoudre un conflit métier ;
  • remplacer une donnée inconnue par une certitude arbitraire ;
  • devenir l'endroit où l'on corrige manuellement une erreur métier.

Lorsque la source est corrigée, la bonne démarche consiste généralement à reconstruire la projection.

Pourquoi c'est important pour la maintenance

Si une information affichée est mauvaise, il faut déterminer si :

  1. la source métier est déjà incorrecte ;
  2. la projection a été construite avec une mauvaise règle ;
  3. la projection n'a pas été reconstruite après une correction ;
  4. le frontend affiche mal une projection pourtant correcte.

Ces quatre causes sont différentes et ne se corrigent pas au même endroit.

Règle pratique

Ne modifie pas directement une projection persistée uniquement pour faire disparaître un symptôme visuel. Identifie d'abord la source responsable, corrige-la, puis utilise le mécanisme officiel de reconstruction lorsque cela est nécessaire.

Voir aussi : Domain Core — Projection et Projections.