📝Note💻Tech

Grokking Software Architecture : tout est une question de compromis

Tony Duong

Tony Duong

juin 4, 20266 min

Aussi disponible en:🇬🇧🇯🇵
#software-architecture#tradeoffs#technical-debt#book#manning
Grokking Software Architecture : tout est une question de compromis

Introduction à Grokking Software Architecture de Matt Erman (Manning) — l'architecture comme compromis sous pression, pas un club réservé aux seniors avec des diagrammes.

L'architecture commence plus tôt qu'on ne le pense

L'architecture logicielle n'est pas un club privé ni une pile de diagrammes UML. Elle commence dans des décisions ordinaires : où vit la logique, comment les données sont stockées, comment une fonctionnalité est livrée, et quelles conséquences l'équipe accepte quand le temps manque.

Chaque développeur prend déjà des choix architecturaux. L'écart porte souvent sur le plan directeur, le vocabulaire et la confiance pour comprendre ce que ces choix feront au système plus tard.

Les trois A de l'architecture

A Rôle Quand
Conscience architecturale (fondation) Reconnaître quand le code façonne le système global ; poser les bonnes questions Dès le premier jour
Alignement architectural (pont) Faire en sorte que les choix de code locaux soutiennent les objectifs système plus larges À chaque tâche
Responsabilité architecturale (destination) Assumer les décisions finales à l'échelle du système Acquise par le jugement et l'expérience

Un développeur junior ne possède pas chaque choix de base de données ou frontière de service — mais l'architecture n'est pas « loin ». La conscience et l'alignement sont praticables dès maintenant ; la responsabilité vient plus tard.

Compromis sous pression

Quand le checkout doit être livré vendredi :

  • Chemin rapide : logique de paiement dans le controller → livré à temps, accepte une dette de maintenance future
  • Chemin propre : service de paiement + générateur de factures → protège la conception, rate la release

Il n'y a pas de troisième option magique. L'architecture, c'est le choix et ses conséquences — des compromis délibérés sous pression.

Dette technique vs sur-ingénierie

  • La dette technique n'est pas toujours mauvaise — avec un plan clair, elle peut être une décision business
  • Danger 1 : dette non gérée — personne n'admet ce qui a été sacrifié
  • Danger 2 : sur-ingénierie — la peur de la dette transforme une fonctionnalité simple en complexité inutile

Objectif : la clarté, pas la complexité.

Qu'est-ce qui compte comme architectural ?

L'architecture, c'est la forme d'un système et les raisons de cette forme — des décisions qui affectent comment il est construit, testé, déployé et modifié.

Analogie du food truck :

  • Guichet de service = API
  • Cuisinier = logique métier
  • Grill + frigo = base de données + caisse enregistreuse

Ajouter un nouveau taco devrait être facile. Transformer le taco truck en sushi truck est un changement architectural bien plus large.

Règle empirique : si une décision rendra le système significativement plus facile ou plus difficile à construire, livrer ou modifier plus tard, c'est architectural.

L'architecture concerne aussi les personnes — les demandes vagues (« rends-le plus rapide », « ajoute un bouton favori », « livre pour vendredi ») doivent être traduites en contraintes réelles.

Le processus clarity engineer

Un clarity engineer écoute avant de coder et demande pourquoi jusqu'à ce que la vraie contrainte apparaisse. Un « bouton favori » peut signifier une deadline marketing, un retour utilisateur, ou des visites répétées.

Cinq étapes

  1. Spark (quoi) — demande initiale : que doit faire l'utilisateur ? où apparaît-elle ? flux nouveau ou modifié ?
  2. Inquiry (pourquoi) — demander pourquoi ; les cinq pourquoi creusent jusqu'au moteur business racine
  3. Sketch (comment) — carte simple des responsabilités (pas d'UML formel) ; séparation des préoccupations : affichage, logique, stockage
  4. Options (compromis) — ex. favoris sur le profil utilisateur (vitesse) vs stockage dédié (scalabilité, maintenabilité) ; chaque choix a un coût
  5. Decision (receipt) — écrire ce qui a été choisi, pourquoi, et quelles conséquences sont acceptées — rend la décision défendable et révisitable

Avec l'inquiry, les compromis deviennent visibles : peut-être que la vitesse de livraison l'emporte sur la scalabilité long terme pour la v1 — c'est de l'alignement, pas de la paresse.

Périmètre du livre (aperçu)

Architecture d'entreprise pratique du point de vue d'un développeur : patterns, APIs, event-driven architecture, bases de données, microservices, déploiement, qualité, observabilité, communication.

Compétence clé : pas mémoriser une architecture parfaite — apprendre à réfléchir, construire des systèmes propres, et naviguer le code legacy sans tout réécrire.

Les outils IA n'aident que s'ils sont associés à une réflexion architecturale.

Friendster : optimiser pour la mauvaise qualité

Lancé en 2002, brièvement le phare des réseaux sociaux. A choisi la consistance parfaite — chaque nouvelle connexion visible globalement et immédiatement → travail DB coûteux à chaque chargement de page. Les performances se sont effondrées à mesure que le réseau grandissait.

Les concurrents ont choisi la disponibilité et les performances même si les connexions mettaient quelques secondes à se propager partout.

Un engineering brillant ne garantit pas une bonne architecture. Optimiser pour la mauvaise « -ility » peut couler le produit.

Exercice pratique (boussole en action)

Pour une décision technique :

  1. Nommer deux options réalistes
  2. Lister un bénéfice et un coût pour chacune
  3. Écrire le choix final avec une justification en une phrase

Développer la conscience. Pratiquer l'alignement. Poser de meilleures questions. Rendre les compromis visibles. Garder des receipts pour les décisions.

Le chapitre 2 introduit la boîte à outils de décision de l'architecte — comment peser les -ilities concurrentes (performance, consistance, disponibilité, maintenabilité, etc.) qui tirent chaque système dans des directions différentes.

Points clés

  • Chaque développeur prend des décisions architecturales ; la compétence, c'est voir les conséquences tôt
  • Conscience → alignement → responsabilité — vous pouvez pratiquer les deux premiers immédiatement
  • Architecture = compromis sous pression, pas perfection ni paralysie
  • Utiliser spark → inquiry → sketch → options → receipt avant de coder des demandes vagues
  • Une mauvaise priorité (la consistance globale de Friendster) peut détruire un produit malgré un bon engineering
  • Documenter les décisions pour que l'équipe sache quoi revisiter quand les priorités changent

🌐 Traduit par Claude

Tony Duong

Par Tony Duong

Un journal intime numérique. Pensées, expériences et réflexions.