Modèle C4

Architecture 🟡 Mid

Définition

Méthode de Simon Brown pour représenter une architecture logicielle à quatre niveaux de zoom : Contexte (le système et ses utilisateurs/systèmes voisins), Conteneurs (applications, API, bases déployables), Composants (modules à l'intérieur d'un conteneur) et Code (classes, si nécessaire). Chaque niveau s'adresse à un public différent et reste lisible seul ; l'outil Structurizr permet de décrire le modèle en texte versionné.

Analogie

Google Maps pour un logiciel : la vue pays, puis la ville, puis le quartier, puis la rue ; on choisit le zoom selon l'interlocuteur.

Exemple de code

# workspace.dsl (Structurizr DSL) – modèle versionné avec le code
workspace {
  model {
    client = person "Client"
    boutique = softwareSystem "Boutique en ligne" {
      web = container "Front Next.js" "React"
      api = container "API commandes" "NestJS"
      db  = container "Base"          "PostgreSQL"
    }
    client -> web "Commande via"
    web -> api "Appelle" "HTTPS/JSON"
    api -> db  "Lit/écrit"
  }
  views { systemContext boutique { include * } container boutique { include * } }
}

Cas d'usage

Expliquer l'architecture à un nouvel arrivant, à un client ou en entretien sans noyer le contexte sous les détails d'implémentation.

Anti-pattern

Un unique schéma « boîtes et flèches » qui mélange serveurs, classes et utilisateurs : personne ne sait à quel niveau on parle.
#architecture#documentation#interview

En entretien

  1. Explique-moi le modèle C4.

    C'est une méthode de Simon Brown pour représenter une architecture logicielle à quatre niveaux de zoom : Contexte, Conteneurs, Composants et Code. Chaque niveau s'adresse à un public différent et reste lisible seul, un peu comme Google Maps qui passe de la vue pays à la vue rue.

  2. Quel anti-pattern de documentation le modèle C4 corrige-t-il ?

    Un unique schéma boîtes et flèches qui mélange serveurs, classes et utilisateurs, où personne ne sait à quel niveau de zoom on se trouve. C4 sépare les niveaux pour que chaque interlocuteur, du client au développeur, ait la vue adaptée.

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre