Traduction à relire. Cette version française est une traduction automatique qui n’a pas encore été relue par un locuteur natif. Elle peut contenir des tournures maladroites ou des termes techniques inexacts. En cas de doute, la version anglaise fait référence.

← Toutes les études

ÉTUDE D’ARCHITECTURE · Dérive

Configurer un grand parc de sites sans dérive

Ceci est une étude de conception personnelle. Ce n'est pas un travail livré à un client, et elle ne contient aucun nom ni chiffre de client. Elle généralise un travail réel : j'ai proposé et conçu une méthode standard et répétable pour déployer une fonctionnalité de fidélité sur un grand parc Salesforce Commerce Cloud, ce qui a réduit l'effort de mise en place sur un nouveau site d'environ huit semaines à environ quatre jours. Cette étude reprend l'idée sous-jacente et la traite comme un problème d'architecture.

Pourquoi c'est important

Quand chaque site est configuré à la main, de petites différences apparaissent. Avec le temps, aucun site n'est configuré comme un autre. Un correctif ne peut alors plus être déployé avec confiance, et chaque incident devient une enquête particulière. Le délai de lancement est le coût visible. Les écarts sont le coût réel.

La décision — Tenir une configuration écrite et versionnée pour chaque site. La considérer comme la vérité. L'appliquer par une étape que l'on peut relancer sans risque.

Ce que cela apporte — Lancer un nouveau site, ou une nouvelle fonctionnalité sur un site existant, passe de plusieurs semaines à quelques jours. L'effort cesse de croître avec la taille du parc : le centième site coûte bien moins que le premier.

Le risque évité — Des écarts de configuration qui se répandent sur une centaine de sites, ce qui rend les changements risqués et les incidents lents à traiter.

En une phrase : un parc configuré à la main dérive. Un parc configuré à partir d'une description écrite, appliquée par une étape que l'on peut relancer sans risque, reste cohérent. Le second lance de nouveaux marchés en quelques jours au lieu de plusieurs semaines, et devient moins cher à exploiter en grandissant.


Le problème

Imaginez un parc d'environ une centaine de sites de commerce sur une plateforme partagée. Chaque nouveau site a été mis en place à la main à partir d'une référence que tout le monde suivait à peu près. En configurer un prend plusieurs semaines de temps spécialisé.

Le coût que l'on remarque est le délai. Le coût qui fait vraiment mal, c'est la dérive : parce que chaque site est assemblé à la main, aucun n'est configuré exactement comme un autre. Un réglage change ici. Une étape est oubliée là. Un correctif est appliqué à un marché et pas aux autres. Six mois plus tard, il n'y a plus une plateforme, mais une centaine de plateformes légèrement différentes.

La dérive coûte cher de manières qui n'apparaissent pas dans un rapport de lancement.

Le véritable objectif n'est donc pas « lancer un site plus vite ». C'est empêcher le parc de se fragmenter en grandissant, car le coût d'une centaine de sites différents dépasse largement celui d'un lancement.

La question qui structure la conception

Posez une seule question : quelle est la source de vérité pour la configuration attendue d'un site ?

Aujourd'hui la réponse est « ce qui tourne actuellement, plus ce dont les gens se souviennent ». C'est là le problème. Tout le reste découle du fait de répondre autrement : une description écrite et versionnée est la vérité, et le site en production n'en est qu'une copie à un instant donné.

C'est le même changement que derrière le déploiement de fidélité réel. Au lieu de construire la fonctionnalité site par site, nous avons défini une manière standard de décrire ce dont un site avait besoin, et une manière répétable de l'appliquer. Déployer la fonctionnalité sur un nouveau site est devenu un travail de configuration plutôt qu'un petit projet.

La conception

Quatre parties.

  1. La configuration comme source de vérité. Une description écrite par site, conservée dans un dépôt versionné. Elle indique quelles fonctionnalités sont actives, quelles intégrations sont branchées, et quelles différences de marque et de marché s'appliquent. Sur Commerce Cloud, cela correspond à des éléments concrets : les réglages du site, l'ordre des couches de code, et les catalogues, listes de prix et listes de clients utilisés. Les personnes modifient cette description, et seulement elle.
  2. Une étape qui l'applique et que l'on peut relancer sans risque. Elle lit la description et met le site en conformité. Idéalement elle est idempotente — un mot qui mérite une explication, car il porte toute l'idée. Une étape idempotente peut être relancée plusieurs fois et le résultat est le même qu'une seule exécution. Elle affirme ce qui doit être vrai (« ce réglage vaut X ; cette fonctionnalité est active ») au lieu d'exécuter des actions ponctuelles (« créer X »). La relancer ne change donc rien, ou corrige discrètement un écart.
  3. Un modèle en couches. Une base partagée, avec les différences appliquées dans un ordre prévisible. L'essentiel d'un site vient de la base. La description ne consigne que les différences réelles.
  4. Une vérification ensuite. Une fois appliquée, on compare le site à sa description. En cas de désaccord, c'est une dérive, signalée immédiatement plutôt que découverte pendant un incident.

La propriété qui fait fonctionner tout cela est l'étape répétable. Un script ponctuel fait des choses, donc le relancer échoue ou applique deux fois le changement. Une étape répétable affirme des choses, donc la relancer est sans risque. Cette seule propriété transforme la mise en place d'un événement risqué en quelque chose que l'on peut exécuter à tout moment pour confirmer qu'un site est toujours correct.

Options envisagées

OptionDécisionRaisonnement
La configuration comme vérité, appliquée par une étape répétableRetenueC'est l'option la plus coûteuse au départ, et elle demande à l'équipe de décrire l'état final plutôt que les étapes. En retour, elle supprime la dérive et empêche l'effort de croître avec le parc. Le coût est payé une fois. Le bénéfice augmente avec chaque nouveau site. C'est la forme du déploiement réel passé de plusieurs semaines à quelques jours.
Une procédure manuelle écriteRejetéeLa moins chère à mettre en place et rassurante à rédiger. Mais elle améliore un lancement, pas les cent suivants. La dérive revient dès qu'une personne saute une étape ou l'interprète autrement. Elle traite un problème de système comme un problème de discipline.
Reconstruire le parc en une seule instance partagéeRejetée pour l'instantL'état final le plus propre : une plateforme plutôt qu'une centaine de configurations. Mais c'est une migration de plusieurs trimestres sur du chiffre d'affaires en production. Non écartée — l'approche par configuration est un pas dans cette direction.
Un outil tiers de création de sitesRejetéeRapide à démarrer. Mais il ne pouvait pas exprimer les règles réelles d'intégration et de conformité du parc sans de nombreuses exceptions, ce qui recrée le même problème dans l'outil de quelqu'un d'autre.

Les options rejetées comptent autant que celle retenue. Deux d'entre elles sont les options qui semblent peu coûteuses, et nommer précisément pourquoi elles échouent est l'essentiel. La troisième est la plus propre, et la discipline consiste à savoir quand le meilleur état final ne vaut pas encore le risque de mise en œuvre.

Ce que je surveillerais en production

Ce que cela apporte

Rien de tout cela ne vient d'un outil astucieux. Cela vient d'une seule décision — faire de la configuration la vérité, et rendre son application sûre à relancer — tenue face à toutes les raisons de le faire à la main juste cette fois.


Décisions liées : ADR-03 (traiter les événements de commande après le paiement) et ADR-02 (vitrine découplée plutôt qu'intégrée) accompagnent celle-ci. Problèmes différents, même réflexe : rendre les frontières visibles, et préférer des conceptions qu'une équipe peut comprendre sous pression.