Documenter le 'Pourquoi' : Le guide complet des Architecture Decision Records (ADR)
9 min publié le : 09/10/2025
On a déjà tous vécu cette situation. Vous êtes plongé dans un recoin ancien et critique d’un projet, une sorte de mission archéologique pour implémenter une nouvelle fonctionnalité.
Rapidement, une question angoissante émerge : “Pourquoi c’est construit comme ça ?” Le code est là, le quoi est visible, mais le pourquoi, lui, s’est évaporé avec le temps, emporté par les changements d’équipes.
Cette perte de contexte est l’une des formes les plus insidieuses de dette technique : la dette de connaissance.
C’est précisément pour combler ce vide que les Architecture Decision Records (ADR) ont été conçus. Ils sont un remède puissant et pragmatique à l’amnésie collective qui frappe les projets logiciels au long cours.
La dette de connaissance, un mal silencieux
La question “Pourquoi ça a été construit comme ça ?” n’est pas de la curiosité intellectuelle. C’est le symptôme d’un problème qui limite la vélocité, augmente les risques et frustre les développeurs.
Cette dette de connaissance, si elle n’est pas gérée, s’accumule silencieusement jusqu’à rendre le système quasi impossible à maintenir ou à faire évoluer.
Plusieurs facteurs expliquent cette érosion du savoir :
- La complexité croissante : Entre les architectures microservices, les écosystèmes cloud-natifs, les bus d’événements et la myriade d’outils SaaS, chaque décision architecturale est un compromis complexe entre des dizaines de variables. Le raisonnement derrière ces choix est tout sauf simple.
- Le mouvement perpétuel des équipes : Le turnover est une réalité. Les développeurs changent de projet ou d’entreprise, emportant avec eux une partie inestimable de l’historique du projet. Les nouveaux arrivants se retrouvent alors face à des choix techniques qu’ils ne peuvent ni comprendre ni contester de manière constructive.
- Les limites de la documentation traditionnelle : Les wikis et autres Confluence deviennent rapidement des cimetières de documents obsolètes. Les commentaires dans le code, quant à eux, expliquent comment fonctionne une ligne ou une fonction, mais rarement pourquoi tout un module a été structuré d’une certaine manière. Ils manquent de la perspective macro nécessaire pour les décisions d’architecture.
Imaginons un cas concret : une équipe doit intégrer un nouveau système de paiement.
Elle découvre que l’API d’authentification actuelle, choisie il y a trois ans, n’est pas compatible. Personne ne se souvient pourquoi cette API spécifique, et non une autre plus standard, avait été sélectionnée.
Après des jours de recherche et d’hésitations, un ancien développeur contacté par hasard se rappelle que ce choix était une solution de contournement temporaire pour une contrainte de performance sur un type d’utilisateur qui n’existe même plus aujourd’hui.
L’équipe a perdu une semaine à cause d’une information qui aurait dû être consignée. C’est ce gaspillage que les ADR permettent d’éviter.
Anatomie d’un ADR : au-delà du simple document
Pour être efficace, un ADR doit être plus qu’une simple note. Sa force réside dans sa structure, à la fois concise et riche en contexte. Il est crucial de comprendre qu’un ADR n’est ni un compte-rendu de réunion exhaustif, ni un document de conception de 50 pages. C’est un artefact ciblé qui cristallise le résultat d’une réflexion architecturale.
La plupart des ADR efficaces s’articulent autour des sections suivantes, popularisées notamment par le template de Michael Nygard :
-
Titre : Il doit être court et décrire la décision prise. Une bonne pratique est de le formuler de manière active. Par exemple, préférez “Adopter RabbitMQ pour la communication asynchrone” à un vague “Système de messagerie”.
-
Statut : Un ADR n’est pas gravé dans le marbre, il vit. Son statut reflète son cycle de vie. Les statuts courants sont :
Proposé: L’ADR est en cours de discussion.Accepté: La décision a été validée par l’équipe et représente l’état actuel de l’architecture.Remplacé par ADR-XXX: Une nouvelle décision a rendu celle-ci obsolète. On y lie le nouvel ADR pour maintenir une traçabilité claire.Obsolète: La décision n’est plus pertinente (ex: le service concerné a été décommissionné).
-
Contexte (Context) : C’est le cœur du “pourquoi”. Cette section décrit le problème, les contraintes et les forces en jeu. Le contexte peut inclure des exigences business (ex: “Nous devons réduire le temps de traitement des commandes de 50%”), des limitations techniques (ex: “Notre base de données actuelle ne supporte pas la charge”), ou des compétences spécifiques de l’équipe.
-
Décision (Decision) : C’est l’énoncé clair et direct de la solution choisie. Il doit être formulé sans ambiguïté. Par exemple : “Nous allons utiliser PostgreSQL comme base de données principale pour le nouveau service de facturation. Nous déploierons une instance managée sur AWS RDS.”
-
Conséquences (Consequences) : C’est sans doute la section la plus importante, car elle capture l’essence même du compromis architectural. C’est ici que le “pourquoi” prend tout son sens. Elle doit lister honnêtement :
- Les conséquences positives : Ce que nous gagnons. (ex: “Meilleure performance”, “Réduction des coûts de licence”, “Alignement avec les compétences de l’équipe”).
- Les conséquences négatives : Ce que nous perdons ou les nouveaux problèmes que nous créons. (ex: “Introduction d’une nouvelle technologie à maintenir”, “Augmentation de la complexité de déploiement”, “Ce choix rendra plus difficile l’implémentation de la fonctionnalité X à l’avenir”).
- Les compromis : Les options qui ont été considérées mais rejetées, et pourquoi. (ex: “Nous avons envisagé MongoDB, mais il a été écarté car nos données sont fortement relationnelles”).
En documentant explicitement les inconvénients et les alternatives rejetées, vous offrez un cadeau inestimable aux futurs développeurs. Vous leur évitez de ré-explorer les mêmes impasses et leur donnez le contexte nécessaire pour évaluer si les compromis d’hier sont toujours acceptables aujourd’hui.
Mettre en place le processus
Connaître l’anatomie d’un ADR est une chose, l’intégrer efficacement dans le flux de travail d’une équipe en est une autre. Pour réussir, le processus doit être léger, collaboratif et perçu comme une aide plutôt qu’un fardeau.
Quand rédiger un ADR ?
Le piège serait de vouloir tout documenter. Les ADR sont réservés aux décisions “architecturalement significatives”. Mais que signifie ce terme ? Voici une liste de questions pour vous aider à décider :
- La décision introduit-elle une nouvelle technologie, une librairie ou un framework majeur ?
- A-t-elle un impact notable sur la sécurité, la performance, ou la scalabilité du système ?
- Change-t-elle la manière dont les développeurs vont travailler ou construire des fonctionnalités ?
- Est-elle difficile et coûteuse à annuler ?
- Concerne-t-elle plusieurs équipes, services ou modules ?
Si vous répondez “oui” à une ou plusieurs de ces questions, un ADR est très probablement justifié.
Un processus collaboratif basé sur le code
La meilleure approche est de traiter les ADR comme du code. Intégrez-les à votre processus de revue existant :
- Brouillon : Un développeur rédige un ADR dans une nouvelle branche Git. Le statut est
Proposé. - Revue : Il ouvre une Pull Request (ou Merge Request). L’équipe discute de la proposition de manière asynchrone dans les commentaires de la PR. C’est le moment de challenger les hypothèses, de proposer des alternatives et d’enrichir la section “Conséquences”.
- Décision : Une fois le consensus atteint (ou la décision prise par le lead technique après discussion), le statut de l’ADR est mis à jour à
Accepté. - Fusion : La PR est fusionnée. La décision est maintenant officiellement enregistrée dans l’historique du projet.
Ce flux de travail garantit la transparence, la traçabilité et l’inclusivité. Chaque membre de l’équipe a une chance de contribuer.
Où stocker les ADR ?
La règle d’or est simple : les ADR vivent avec le code. Placez-les dans le même dépôt Git que le projet qu’ils concernent. Un dossier comme /docs/adrs ou /doc/architecture/decisions à la racine du projet est idéal. Pourquoi ?
- Ils sont versionnés en même temps que le code.
- Ils sont accessibles à quiconque clone le projet.
- Ils ne peuvent pas être perdus ou devenir obsolètes dans un wiki oublié.
- Quand vous consultez une ancienne version du code, vous pouvez aussi voir les décisions qui étaient en vigueur à ce moment-là.
L’outillage : simple avant tout
Nul besoin d’un système complexe. Vous pouvez commencer avec :
- Des fichiers Markdown.
- Une convention de nommage simple, par exemple
NNN-titre-de-la-decision.md(ex:001-adopter-postgresql.md).
Pour ceux qui aiment automatiser, des outils en ligne de commande comme adr-tools peuvent aider à créer, lier et gérer les ADR. Mais rappelez-vous : l’outil est secondaire, c’est la pratique qui compte.

The Pragmatic Programmer: Your Journey to Mastery, 20th Anniversary Edition
Cet ouvrage, véritable référence dans le domaine du développement logiciel, propose une approche pragmatique et holistique pour maîtriser l'art de la programmation.
Réactualisé à l'occasion de son 20e anniversaire, il offre de précieux conseils pratiques, des techniques éprouvées et une réflexion sur les meilleures pratiques à adopter pour exceller dans un environnement de développement en constante évolution.
Les bénéfices stratégiques à long terme
L’adoption des ADR demande un effort initial, mais les bénéfices dépassent de loin cet investissement.
-
Un onboarding sous stéroïdes : Pour un nouvel arrivant, le dossier des ADR est une mine d’or. En quelques heures de lecture, il peut comprendre l’évolution du projet, les choix structurants et les raisons qui les sous-tendent. C’est un accélérateur d’intégration bien plus efficace que n’importe quelle session de présentation.
-
Une machine à remonter le temps architecturale : Lorsqu’une nouvelle exigence business remet en question un choix passé, les ADR sont votre meilleure allié. Ils vous permettent de “rejouer” la décision avec tout le contexte d’origine. Les contraintes d’hier sont-elles toujours valables aujourd’hui ? Les compromis faits à l’époque sont-ils toujours acceptables ? Cela permet de prendre des décisions de refactoring sur des bases solides, et non sur des intuitions.
-
Réduction des risques et prise de décision éclairée : Le processus formel de rédaction et de revue d’un ADR force la clarté. Il oblige les équipes à verbaliser les avantages et les inconvénients, exposant les risques potentiels avant que la première ligne de code ne soit écrite. La discussion collective permet de déceler des problèmes qu’une seule personne n’aurait pas vus.
-
Briser les silos et favoriser l’alignement : Quand les décisions d’architecture sont prises à huis clos, elles créent de l’incompréhension. En rendant les ADR visibles de tous via des Pull Requests, vous démocratisez le processus. L’information circule et l’appropriation collective est renforcée.
Surmonter les obstacles et les idées reçues
Malgré ses avantages, l’introduction des ADR peut se heurter à une certaine résistance. Voici comment répondre aux objections les plus courantes.
-
“C’est trop de bureaucratie !” La véritable bureaucratie, ce sont les trois réunions et les deux jours d’archéologie nécessaires pour comprendre une décision prise six mois plus tôt. Un ADR est un investissement ponctuel qui rapporte des dividendes pendant des années. C’est un processus “juste suffisant” pour éviter le chaos.
-
“Nous allons trop vite pour ça.” Cette objection confond vitesse et précipitation. Les ADR ne ralentissent pas, ils permettent d’aller vite durablement. Ils évitent les erreurs architecturales coûteuses qui, des mois plus tard, paralyseront le projet et détruiront toute la vélocité de l’équipe.
-
“Mon équipe ne l’adoptera jamais.” N’essayez pas d’imposer un grand changement d’un seul coup. Commencez petit. Pour la prochaine décision significative, proposez de rédiger un ADR à titre d’expérimentation. Montrez l’exemple. Lorsque l’équipe constatera par elle-même la clarté que cela apporte, l’adoption suivra naturellement.
-
Le mythe de “l’ADR parfait” N’attendez pas d’avoir le template parfait ou le style littéraire d’un grand auteur. Un ADR imparfait qui capture 80% du contexte est infiniment plus précieux que pas d’ADR du tout. La perfection est l’ennemie du bien. L’objectif est la clarté, pas la perfection.
Communiquer avec le Futur
En fin de compte, les Architecture Decision Records ne sont pas une corvée de documentation. Ils sont un acte de communication délibéré avec les futurs membres de votre équipe, et avec votre “futur vous”. Ils préservent l’actif le plus précieux et le plus volatile d’un projet : le “pourquoi”.
Adopter les ADR est le signe d’une culture d’ingénierie mature, qui privilégie la maintenabilité à long terme et la connaissance partagée sur la vélocité à court terme. C’est un choix conscient pour construire des systèmes qui durent.
Alors, pour votre prochaine décision significative, ne vous contentez pas de la prendre. Documentez-la. Écrivez votre premier ADR.