Aller au contenu

Architecture et cartographie

Documenter l'architecture d'un système pour permettre à toute l'équipe de comprendre comment les pieces s'assemblent.


Pourquoi les diagrammes d'architecture

Un diagramme d'architecture bien construit répond en quelques secondes a des questions qui prennent des heures a reconstituer sans lui :

  • Quels services communiquent avec ce composant ?
  • Ou sont les points de défaillance unique ?
  • Quelles équipes ou systèmes externes sont impactes si ce service tombe ?
  • Quel est le chemin d'un appel depuis l'utilisateur jusqu'à la base de données ?

Un diagramme est un modèle, pas la réalité

Tout diagramme simplifie. L'objectif n'est pas l'exhaustivité mais la lisibilite. Un diagramme trop détaillé n'est pas plus utile qu'une carte au 1/1 — il faut choisir le niveau d'abstraction adapté à l'audience.


Le modèle C4

Le modèle C4 (Context, Container, Component, Code) propose quatre niveaux d'abstraction progressifs. On n'utilise pas tous les niveaux pour tous les systèmes.

Niveau Nom Contenu Audience
1 Context Le système dans son écosystème — utilisateurs, systèmes externes Tout le monde, management
2 Container Applications, services, bases de données qui composent le système Ops, dev, sécurité
3 Component Modules et composants internes d'un container Développeurs
4 Code Classes, fonctions — diagramme UML Rarement nécessaire

En exploitation, les niveaux 1 et 2 sont les plus utiles. Le niveau 3 est pertinent pour les systèmes critiques ou complexes.

Exemple niveau 2 : plateforme e-commerce

graph TB
    subgraph "Utilisateurs"
        U1["Client web"]
        U2["Client mobile"]
        U3["Admin back-office"]
    end

    subgraph "Plateforme e-commerce"
        FE["Frontend SPA"]
        API["API Gateway"]
        SVC_CMD["Service commandes"]
        SVC_CAT["Service catalogue"]
        DB_CMD[("BDD commandes")]
        DB_CAT[("BDD catalogue")]
        CACHE["Cache Redis"]
        QUEUE["Queue messages"]
    end

    EXT["Systeme paiement externe"]

    U1 --> FE
    U2 --> API
    U3 --> FE
    FE --> API
    API --> SVC_CMD
    API --> SVC_CAT
    SVC_CMD --> DB_CMD
    SVC_CMD --> QUEUE
    SVC_CAT --> DB_CAT
    SVC_CAT --> CACHE
    QUEUE --> EXT

Outils de diagrammes

Outil Approche Avantages Inconvénients
Mermaid Texte (Markdown) Versionnable, gratuit, intégré MkDocs Mise en forme limitee pour grands diagrammes
draw.io (diagrams.net) Interface graphique Flexible, export XML versionnable Moins intégré au workflow Git
Structurizr DSL + C4 natif C4 natif, rendu automatique Courbe d'apprentissage
PlantUML Texte (DSL) Versionnable, riche en types Syntaxe verbeuse
Lucidchart Interface graphique SaaS Collaboratif, templates Payant, données hors contrôle

Pour une approche docs-as-code, Mermaid est le choix pragmatique. Pour des architectures complexes avec plusieurs niveaux C4, Structurizr est preferable.


CMDB : Configuration Management Database

Une CMDB recense les actifs d'infrastructure et leurs relations. Elle répond aux questions : qu'est-ce qui existe, ou, dans quel état, et avec quelles dépendances ?

Quoi mettre dans une CMDB

Type d'élément Attributs clés
Serveurs / VM Nom, IP, OS, environnement, owner, criticite
Services applicatifs Nom, version, dépendances, SLA
Bases de données Type, version, serveur, taille, backup schedule
Composants réseau Type, localisation, VLAN, responsable
Certificats Domaine, date expiration, responsable

Maintenir la CMDB à jour

La CMDB devient inutile si elle est obsolète. Stratégies pour la maintenir :

  • Lier toute création ou modification d'infrastructure a une mise à jour CMDB (IaC + CMDB)
  • Utiliser des outils d'auto-discovery (Netbox, Snipe-IT, AWS Config, Azure Resource Graph)
  • Revue trimestrielle par domaine avec les équipes proprieetaires

Une CMDB jamais mise à jour est pire qu'une absence de CMDB

Elle crée une fausse confiance. Mieux vaut une CMDB partielle mais fiable qu'une CMDB complète et perimee.


Dependency mapping

Le dependency mapping va au-delà de l'inventaire : il cartographie les flux et dépendances entre composants pour anticiper les impacts en cascade.

Auto-discovery

Plusieurs outils permettent de générer automatiquement des cartes de dépendances :

Outil Périmètre Notes
Netbox Réseau, IP, rack Open source, très complet
AWS Config / Service Map AWS uniquement Natif cloud, très fiable
Datadog Service Map Applicatif (APM) Nécessité agents
Dynatrace Smartscape Infrastructure + appli Puissant, coûteux

Documentation manuelle des dépendances critiques

Pour les composants critiques, combler les angles morts de l'auto-discovery par une documentation explicite :

  • Dépendances externes (API tierces, fournisseurs)
  • Dépendances organisationnelles (qui appelle qui en cas d'incident)
  • Dépendances de configuration (quel service lit quelle configuration)

Commencez par les services avec les SLA les plus exigeants

Cartographier toutes les dépendances en une fois est decourageant. Commencez par les services critiques et etendez progressivement.