Revues d'architecture — ATAM¶
Évaluer les compromis architecturaux de manière structurée — ATAM pour les décisions structurantes, lightweight reviews pour le quotidien.
Pourquoi des revues d'architecture¶
Les fitness functions automatisent la vérification des propriétés connues. Mais certaines questions echappent à l'automatisation : est-ce que ce trade-off est le bon ? Est-ce que cette hypothèse tient encore ? Est-ce que le système peut absorber les exigences a venir ?
Les revues d'architecture apportent le regard humain sur ces questions. Elles ne sont pas un audit punitif — elles sont un outil d'apprentissage collectif. L'objectif est d'identifier les risques et les trade-offs, pas de juger les choix passes.
ATAM — Architecture Tradeoff Analysis Method¶
ATAM est un processus formel développé au Software Engineering Institute (SEI) de Carnegie Mellon. Il structure l'évaluation d'une architecture autour des compromis entre attributs qualité.
Les quatre phases¶
flowchart LR
P1["Phase 1\nPresentation"] --text--> P2["Phase 2\nScenarios qualite"]
P2 --text--> P3["Phase 3\nAnalyse des\ntrade-offs"]
P3 --text--> P4["Phase 4\nIdentification\ndes risques"] Phase 1 — Présentation de l'architecture. L'architecte présente les choix structurants, les drivers qualité, les contraintes techniques et organisationnelles. Les participants decouvrent le contexte sans jugement.
Phase 2 — Identification des scenarios qualité. Les parties prenantes formulent les scenarios qui comptent pour elles. Chaque scenario est un triplet : stimulus (quoi), environnement (dans quelles conditions), réponse attendue (quel résultat). On priorise collectivement.
Exemples de scenarios :
- "Quand le trafic triple pendant les soldes (stimulus), le système en production (environnement) maintient un p99 < 500ms (réponse)"
- "Quand un développeur modifie le module Payment (stimulus), en conditions normales (environnement), aucun test du module Order ne casse (réponse)"
- "Quand un attaquant tente une injection SQL (stimulus), sur l'API publique (environnement), la requête est bloquee et loguee (réponse)"
Phase 3 — Analyse des trade-offs. Pour chaque scenario prioritaire, on identifié quels attributs qualité sont favorises et lesquels sont sacrifies. Un trade-off n'est pas un défaut — c'est une décision explicite. Le problème, c'est quand le trade-off est implicite.
Phase 4 — Identification des risques. On pointe les zones d'incertitude, les hypothèses non validees, les dépendances critiques. Chaque risque est documente avec son impact potentiel et les actions de mitigation possibles.
Artefacts produits par ATAM¶
| Artefact | Description |
|---|---|
| Arbre de qualité | Hiérarchie des attributs qualité priorises |
| Tableau des trade-offs | Décision, attributs favorises, attributs sacrifies |
| Liste des risques | Risques identifiés, probabilite, impact, mitigation |
| Liste des non-risques | Hypothèses validees pendant la revue |
| Points de sensibilité | Parametres dont la modification affecte plusieurs qualites |
| Actions de suivi | Décisions a prendre, investigations a mener |
Exemple : tableau de trade-offs¶
Un ATAM sur un système e-commerce multi-tenant pourrait produire le tableau suivant :
| Décision | Favorise | Sacrifie | Risque residuel |
|---|---|---|---|
| Monolithe modulaire | Simplicité opérationnelle, coût | Scalabilité indépendante | Couplage involontaire |
| RLS PostgreSQL pour isolation | Simplicité, performance | Isolation physique complète | Bug RLS = fuite de données |
| RabbitMQ pour les events | Simplicité, maturité | Replay, rétention longue | Perte de messages si crash |
| Cache Redis par tenant | Performance, isolation | Coût mémoire | Invalidation complexe |
Ce tableau est l'artefact le plus precieux d'un ATAM. Il rend les compromis explicites et permet de les revisiter quand le contexte change.
Quand utiliser ATAM¶
ATAM est coûteux : 2-3 jours de préparation, 1-2 jours de session, 5-15 participants. On le réservé pour :
- Les projets critiques (système financier, plateforme core)
- Les changements structurants (migration vers microservices, nouveau store de données)
- Les audits externes ou les revues de gouvernance
- Les systèmes avec des trade-offs complexes entre sécurité, performance et coût
ATAM simplifie¶
Pour les organisations qui trouvent ATAM trop lourd mais qui ont besoin de plus qu'une revue légère, une version simplifiée en demi-journée fonctionne :
- 30 min : présentation de l'architecture et des drivers qualité
- 30 min : identification des 5 scenarios qualité prioritaires (vote par points)
- 1h : analyse des trade-offs sur les 3 scenarios les plus votes
- 30 min : identification des risques et actions de suivi
Ce format couvre 80% de la valeur d'un ATAM complet pour 20% du coût. Il convient aux décisions importantes mais pas critiques — typiquement l'introduction d'un nouveau composant technique ou le choix d'un pattern de communication.
Warning
ATAM sans préparation est du theatre. L'architecte doit arriver avec une présentation claire des drivers qualité et des décisions structurantes. Les participants doivent connaître le contexte. Une session ATAM mal préparée produit des opinions plutôt que des analyses.
Lightweight architecture review¶
Pour les revues courantes — une nouvelle feature qui touche à l'architecture, un ADR en cours de rédaction, un changement de dépendance — ATAM est disproportionne. On utilisé une revue légère.
Format¶
- Durée : 30 minutes a 1 heure
- Participants : 2-4 personnes (l'auteur, 1-2 pairs, optionnellement un architecte senior)
- Déclencheur : PR avec un ADR, changement dans les fitness functions, nouveau module, nouvelle dépendance externe
Checklist de revue légère¶
## Architecture Review Checklist
### Coherence
- [ ] Les ADR sont-ils a jour et refletent-ils les decisions recentes ?
- [ ] Les bounded contexts sont-ils respectes dans le code et les deployments ?
- [ ] Le changement est-il coherent avec la vision architecturale documentee ?
### Qualite
- [ ] Les SLO sont-ils definis, instrumentes et mesures en production ?
- [ ] Les fitness functions passent-elles en CI ?
- [ ] La couverture de tests est-elle suffisante pour les chemins critiques ?
### Securite
- [ ] Les security boundaries sont-elles documentees et appliquees ?
- [ ] Le modele de menace a-t-il ete mis a jour si necessaire ?
- [ ] Les secrets sont-ils geres via un vault (pas en clair) ?
### Operabilite
- [ ] L'observabilite est-elle en place (metriques, logs, traces) ?
- [ ] Le rollback est-il possible et documente ?
- [ ] Les dependances externes sont-elles identifiees et leur SLA connu ?
Résultat¶
La revue légère produit trois résultats possibles :
- Approuve — le changement est cohérent, les risques sont acceptables
- Approuve avec conditions — ok sous réservé de modifications spécifiques
- Bloque — risque identifié qui nécessité une investigation avant de continuer
Note
La revue légère n'est pas une code review. On ne regarde pas le style ou les bugs — on regarde les décisions architecturales et leurs conséquences. Un code propre peut cacher une mauvaise décision architecturale.
Architecture Review Board¶
Pour les organisations avec plusieurs équipes, un Architecture Review Board (ARB) formalise le processus de revue à l'échelle.
Composition¶
| Rôle | Nombre | Responsabilité |
|---|---|---|
| Architecte principal | 1 | Preside, assure la cohérence avec la vision globale |
| Architectes domaine | 2-4 | Expertise par domaine (data, sécurité, infra, applicatif) |
| Tech leads | 2-3 | Représentent les équipes de développement |
| Staff engineers | 1-2 | Vision transverse, expérience terrain |
| Invites | Variable | Parties prenantes selon le sujet |
Cadence et fonctionnement¶
Le board se reunit a cadence fixe — typiquement bi-hebdomadaire ou mensuelle selon le volume de décisions. Les demandes de revue sont soumises à l'avance avec un template standardise.
flowchart TD
REQ["Demande de revue\n(RFC / ADR draft)"] --text--> TRIAGE["Triage par\nl'architecte principal"]
TRIAGE --"leger"--> LIGHT["Revue legere\n(pair a pair)"]
TRIAGE --"structurant"--> ARB["Architecture\nReview Board"]
TRIAGE --"critique"--> ATAM["Session ATAM\ndediee"]
LIGHT --text--> DECISION["Decision\ndocumentee (ADR)"]
ARB --text--> DECISION
ATAM --text--> DECISION Critères de triage¶
| Critère | Revue légère | ARB | ATAM |
|---|---|---|---|
| Impact sur un seul module | Oui | ||
| Impact sur 2+ modules | Oui | ||
| Changement d'infrastructure | Oui | ||
| Nouvelle dépendance externe critique | Oui | ||
| Migration structurante | Oui | ||
| Changement de paradigme | Oui | ||
| Budget > seuil défini | Oui | Oui |
Peer reviews architecturales¶
Au-delà du board formel, les revues entre pairs sont le mécanisme le plus frequent et le plus efficace pour maintenir la qualité architecturale au quotidien.
Architecture Décision Records en PR¶
Quand un changement implique une décision architecturale, on inclut un ADR dans la pull request. Les reviewers evaluent la décision en même temps que le code. C'est le moment le plus naturel pour la revue : le contexte est frais, le code est la, les alternatives ont été evaluees.
Le reviewer d'un ADR en PR doit se poser ces questions :
- Le contexte est-il clair et complet ? Un lecteur externe comprendrait-il pourquoi cette décision est nécessaire ?
- Les alternatives rejetees sont-elles documentees avec leur raison de rejet ?
- Les conséquences sont-elles honnetes — y compris les coûts et les risques acceptes ?
- La décision est-elle réversible ? Si oui, quel est le critère de révision ?
- Les fitness functions nécessaires sont-elles identifiées ?
Design docs légers¶
Pour les changements plus importants qui ne justifient pas un ATAM complet, un design doc léger (1-2 pages) permet de recueillir les retours avant de coder. Le format minimal :
- Problème — qu'est-ce qu'on résout ?
- Contraintes — qu'est-ce qui limite les options ?
- Options evaluees — qu'est-ce qu'on a considéré et pourquoi ?
- Décision — qu'est-ce qu'on fait et pourquoi ?
- Risques — qu'est-ce qui peut mal tourner ?
Fréquence recommandee¶
| Type de revue | Fréquence | Effort |
|---|---|---|
| ADR en PR | À chaque PR concernee | 15-30 min |
| Design doc léger | Avant chaque feature structurante | 1-2 heures |
| Revue légère | Bi-hebdomadaire | 30-60 min |
| ARB | Mensuelle | 2 heures |
| ATAM | 1-2 fois par an | 2-3 jours |
Anti-patterns des revues d'architecture¶
| Anti-pattern | Symptome | Remede |
|---|---|---|
| Le board qui dit non | Les équipes contournent le processus | Proposer des alternatives, pas des refus |
| La revue post-mortem | On revoit après que tout est code | Déclencher la revue au stade design doc |
| Le bottleneck architecte | Une seule personne bloque toutes les décisions | Déléguer via des ADR templates et des critères clairs |
| La revue cosmétique | On discute des noms, pas des trade-offs | Checklist focalisee sur les décisions architecturales |
| L'absence de suivi | Les actions identifiées ne sont jamais réalisées | Tracker les actions dans un backlog visible |
Construire une culture de revue¶
Les processus de revue ne fonctionnent que si la culture les soutient. Quelques principes pour y arriver :
Normaliser la critique constructive. Une revue qui ne trouve rien est suspecte. L'objectif est d'améliorer, pas de valider. Les reviewers doivent être encourages a poser des questions difficiles — et les auteurs doivent les accueillir comme des contributions plutôt que comme des attaques.
Rendre les revues visibles. Les comptes-rendus de revue sont publies et accessibles a tous. Les décisions qui en decoulent sont tracees dans des ADR. La transparence construit la confiance dans le processus.
Mesurer et ajuster. Combien de revues par trimestre ? Quel est le lead time moyen entre demande et décision ? Combien de décisions de revue ont été revisees dans les 6 mois ? Ces métriques permettent d'ajuster le processus.
Former les reviewers. La revue d'architecture est une compétence — elle s'apprend. Les architectes juniors participent d'abord en observateurs, puis en co-reviewers, avant de mener des revues en autonomie. La guild d'architecture (chapitre 05) est le lieu naturel de cette formation.
Tip
La meilleure revue d'architecture est celle qui arrive au bon moment — assez tôt pour influencer les décisions, assez tard pour avoir du contenu concret a évaluer. Le design doc avant le code est ce sweet spot.
Chapitre suivant : Dette technique — identifier, classifier et gérer la dette technique de manière strategique.