Aller au contenu

Gouvernance continue

Maintenir la cohérence architecturale dans la durée — comite, processus de décision, guardrails automatises et communauté de pratique.


Gouvernance n'est pas bureaucratie

La gouvernance architecturale a mauvaise reputation. Dans beaucoup d'organisations, elle evoque un comite qui dit non, des gates qui bloquent, des documents que personne ne lit. Cette gouvernance-la est effectivement inutile — et les équipes la contournent.

La gouvernance qui fonctionne est invisible au quotidien. Elle s'appuie sur des standards clairs, des guardrails automatises, et un processus de décision léger. Les équipes prennent des décisions architecturales en autonomie dans un cadre défini. Le comite n'intervient que sur les décisions structurantes qui depassent le périmètre d'une équipe.


Comite d'architecture

Rôle

Le comite d'architecture est le gardien de la cohérence globale. Il ne prend pas toutes les décisions — il s'assure que les décisions sont prises de manière cohérente et documentee.

Ses responsabilités :

  • Valider les ADR structurants — décisions qui impactent plusieurs équipes ou domaines
  • Maintenir le Technology Radar — approbation des mouvements entre anneaux
  • Arbitrer les conflits — quand deux équipes font des choix incompatibles
  • Réviser les standards — mise à jour des patterns et technologies approuves
  • Superviser la dette technique — priorisation du remboursement à l'échelle

Composition

Rôle Nombre Profil
Architecte principal 1 Preside, vision globale, lien avec la stratégie
Architectes domaine 2-4 Expertise : data, sécurité, infra, applicatif
Tech leads 2-3 Représentent les équipes, ancrage terrain
Staff engineers 1-2 Vision transverse, expérience des grands systèmes
Product representative 0-1 Perspective métier, priorisation business

Le comite ne doit pas dépasser 8-10 personnes. Au-delà, les discussions deviennent inefficaces et les décisions prennent trop de temps.

Cadence

Format Fréquence Durée Objectif
Revue des RFC en cours Bi-hebdomadaire 1 heure Feedback sur les propositions
Session d'architecture Mensuelle 2 heures ADR structurants, radar, dette
Rétrospective architecture Trimestrielle 3 heures Bilan, ajustement du processus

Note

La cadence fixe est essentielle. Un comite qui ne se reunit que "quand il y a un sujet" finit par ne jamais se réunir — ou par se réunir en urgence sur des sujets qui auraient du être traites plus tôt.


Processus de décision : RFC, review, ADR

Le processus de décision architecturale suit un flux en trois étapes. L'objectif est de maximiser la qualité des décisions tout en minimisant le délai.

flowchart LR
    RFC["RFC\n(Request for Comments)"] --text--> REVIEW["Review\n(pair ou comite)"]
    REVIEW --"approuve"--> ADR["ADR\n(decision documentee)"]
    REVIEW --"modifie"--> RFC
    REVIEW --"rejete"--> CLOSE["Cloture\n(avec justification)"]

Phase 1 : RFC (Request for Comments)

L'auteur redige une proposition structurée :

# RFC-042 : Migration du message broker de RabbitMQ vers Kafka

## Contexte
Le volume d'events a depasse 10 000/seconde. RabbitMQ montre
des signes de saturation. Plusieurs equipes ont besoin de replay.

## Proposition
Migrer les flux asynchrones de RabbitMQ vers Kafka.
Migration progressive par bounded context (strangler fig).

## Alternatives evaluees
1. Scale-up RabbitMQ (streams) — ne resout pas le replay
2. NATS JetStream — moins mature, ecosysteme plus petit
3. Kafka — replay natif, ecosysteme large, expertise disponible

## Impact
- Equipes concernees : Order, Notification, Analytics
- Timeline estimee : 3 mois
- Risques : complexite operationnelle Kafka, formation equipes

## Decision demandee
Approbation du comite pour lancer un POC de 2 semaines.

La RFC est publiee (PR, wiki, outil dédié) et ouverte aux commentaires pendant une periode définie — typiquement 1 a 2 semaines.

Phase 2 : Review

Selon l'impact de la décision (critères de triage vus au chapitre 02), la review est :

  • Pair a pair : 2-3 personnes, asynchrone via commentaires sur la PR
  • Comite : discussion en session dédiée, décision collective
  • ATAM : session formelle pour les décisions les plus structurantes

Phase 3 : ADR

La décision est documentee dans un ADR numerate et immutable. L'ADR capture le contexte, la décision, les alternatives rejetees et les conséquences acceptees. Il est commite dans le repo et fait partie de l'historique du projet.


Évolution des ADR

Les ADR ne sont pas des documents statiques dans un monde statique. Le contexte change, les hypothèses sont invalidees, de meilleures options emergent.

Statuts d'un ADR

stateDiagram-v2
    [*] --> Proposed
    Proposed --> Accepted
    Proposed --> Rejected
    Accepted --> Superseded
    Accepted --> Deprecated
    Rejected --> [*]
    Superseded --> [*]
    Deprecated --> [*]
Statut Signification
Proposed En cours de discussion, pas encore décidé
Accepted Décision prise et active
Rejected Décision rejetee après évaluation
Superseded Remplacé par un nouvel ADR (référence croisee obligatoire)
Deprecated Plus pertinent mais pas remplacé — contexte a change

Triggers de révision

Un ADR doit être revisite quand :

  • Le contexte a change — nouvelles contraintes, nouveau volume, nouvelle reglementation
  • L'hypothèse est invalidee — le trade-off accepte se révélé plus coûteux que prévu
  • Une meilleure option emerge — nouvelle technologie, nouveau pattern, retour d'expérience
  • La dette technique associee est devenue critique — la conséquence acceptee dans l'ADR est devenue un problème

Superseding

Quand un ADR est remplacé, le nouvel ADR :

  1. Référence l'ancien ADR explicitement : "Supersedes ADR-012"
  2. Explique pourquoi le contexte a change
  3. Documente ce qui est différent dans la nouvelle décision
  4. L'ancien ADR est marque Status: Superseded by ADR-042

Architecture guild et communauté de pratique

Le comite d'architecture est un organe de décision. La guild (ou communauté de pratique) est un espace d'apprentissage et de partage.

Différence comite vs guild

Aspect Comite d'architecture Architecture guild
Objectif Décider Apprendre et partager
Composition Fixes, nommes Ouverte, volontaire
Cadence Bi-hebdomadaire / mensuelle Hebdomadaire ou bi-hebdomadaire
Format Revue de RFC, décisions Talks, demos, discussions
Artefact ADR, comptes-rendus Notes, articles internes
Autorité Pouvoir de décision Influence, recommandation

Formats de guild

  • Lightning talks (15 min) : un membre présente un pattern, un outil, un retour d'expérience
  • Architecture kata (1h) : exercice collaboratif de conception (scenario fictif ou simplifie)
  • Book club (bi-mensuel) : lecture et discussion d'un chapitre de livre d'architecture
  • Post-mortem architecture (ad hoc) : analyse d'un incident ou d'une décision qui n'a pas fonctionne

Inner source

La guild facilite l'inner source — la contribution entre équipes sur les composants partages. Les patterns, les libraries internes, les templates de configuration sont maintenus en mode open-source interne. Toute équipe peut proposer une amélioration via PR, et la guild assure la revue et la cohérence.


Guardrails vs gates

La distinction entre guardrails et gates est fondamentale pour une gouvernance qui fonctionne.

Gates

Les gates sont des points de contrôle binaires : on passe ou on ne passe pas. Elles bloquent le flux si les critères ne sont pas remplis.

Exemples : approbation du comite pour un ADR structurant, validation sécurité avant mise en production, revue de conformité reglementaire.

Quand les utiliser : décisions irreversibles, exigences reglementaires, risques élevées.

Guardrails

Les guardrails sont des mécanismes automatises qui empêchent les dérivés sans bloquer le flux. Elles guident plutôt qu'elles ne bloquent.

Exemples : fitness functions en CI, linters d'architecture, policy as code, templates standardises.

Quand les utiliser : décisions réversibles, pratiques quotidiennes, prevention de la dette.

Équilibre

flowchart TD
    DEC["Decision architecturale"] --text--> EVAL["Evaluation\nde l'impact"]
    EVAL --"reversible\nfaible impact"--> GUARD["Guardrail\n(automatise)"]
    EVAL --"irreversible\nfort impact"--> GATE["Gate\n(humain)"]
    GUARD --text--> PROD["Production"]
    GATE --"approuve"--> PROD
    GATE --"refuse"--> BACK["Retour\na la conception"]
Critère Guardrail Gate
Automatisation Oui Non (jugement humain)
Délai Millisecondes (CI) Jours / semaines
Scalabilité Illimitée Limitee par le comite
Décisions couvertes Réversibles, connues Irreversibles, complexes
Coût de maintenance Code Temps humain

Warning

Trop de gates paralyse. Trop peu de guardrails laisse dériver. L'objectif est d'avoir un maximum de guardrails automatises et un minimum de gates humaines. Les gates sont réservées aux décisions qui meritent vraiment l'attention du comite.


Niveaux de maturité de la gouvernance

Niveau Caractéristiques Indicateurs
Ad hoc Pas de processus, décisions informelles, pas de documentation Zero ADR, pas de standards documentes
Initial ADR ponctuels, standards dans un wiki, revues ad hoc Quelques ADR, wiki partiellement à jour
Défini Processus RFC/ADR en place, comite régulier, radar publie > 80% des décisions documentees
Géré Fitness functions en CI, guardrails automatises, guild active < 5% de violations non détectées
Optimise Métriques de gouvernance, boucle d'amélioration continue Temps de décision < 2 semaines, drift < 1%

Progression

On ne passe pas de "Ad hoc" a "Optimise" en un trimestre. La progression est graduelle et chaque niveau doit être stabilise avant de passer au suivant. Le piege classique : implémenter les outils du niveau "Optimise" sans avoir les pratiques du niveau "Défini".


Métriques de gouvernance

Pour piloter la gouvernance, on mesure :

  • Lead time des décisions : temps entre la soumission d'un RFC et la publication de l'ADR
  • Taux de conformité : pourcentage de projets qui respectent les standards documentes
  • Coverage des ADR : pourcentage de décisions structurantes documentees
  • Fréquence de mise à jour du radar : dernier update < 3 mois
  • Participation à la guild : nombre de participants actifs / taille de l'organisation

Tip

La gouvernance architecturale réussie est celle que les équipes trouvent utile — pas celle que le management impose. Si les équipes contournent systematiquement le processus, le problème n'est pas les équipes : c'est le processus.

Chapitre suivant : Cas d'étude — SaaS e-commerce — validation et gouvernance appliquees a un système e-commerce multi-tenant.