Aller au contenu
TAAF-OPS --:-- UTC

Le mouvement DevOps — comprendre avant d'outiller

Historiquement, deux équipes se partagent le cycle de vie d’un logiciel avec des objectifs contradictoires :

ÉquipeObjectifConséquence
Dev (développement)Livrer des nouveautés, viteLe changement est son métier
Ops (exploitation)Garder la production stableLe changement est son risque

Chacune optimise son objectif, et le conflit se règle au pire endroit : la mise en production. On appelle ça le mur de la confusion — les développeurs jettent une version par-dessus le mur, les exploitants la reçoivent sans en connaître le contenu, et chaque incident devient un procès en responsabilité (« ça marche sur ma machine » contre « votre code a cassé la prod »).

DevOps est la réponse à ce mur : une culture — pas un outil, pas un poste — où les mêmes personnes, ou des équipes qui coopèrent vraiment, portent le logiciel du commit jusqu’à la production, et pendant sa vie en production. La phrase qui résume le mouvement : you build it, you run it (celui qui construit exploite).

Le cycle DevOps se dessine en boucle, parce qu’il ne s’arrête jamais : ce qu’on observe en production nourrit ce qu’on planifie ensuite.

flowchart LR
    subgraph Dev
        P[Plan] --> C[Code] --> B[Build] --> T[Test]
    end
    subgraph Ops
        R[Release] --> D[Deploy] --> O[Operate] --> M[Monitor]
    end
    T --> R
    M --> P

Chaque étape de la boucle a ses outils dans ce wiki :

ÉtapeCe qu’on y faitOù creuser
PlanDécrire et prioriser le travailPlane, issues GitLab — cf. CI/CD
CodeVersionner, relireGit, merge requests
Build / TestCompiler, tester à chaque pushCI/CD
Release / DeployLivrer sans clic manuelGitOps, Dokploy
OperateFaire tournerDocker, Dockhand
MonitorObserver, alerterObservabilité

3. Les 12 facteurs — rendre l’application déployable

Section intitulée « 3. Les 12 facteurs — rendre l’application déployable »

Le manifeste The Twelve-Factor App (Heroku, 2011) répond à une question précise : qu’est-ce qui rend une application facile à déployer, à répliquer et à exploiter ? Douze règles, nées des mêmes douleurs que DevOps, et qui expliquent la forme des applications conteneurisées d’aujourd’hui.

#FacteurLa règle en une phrase
IBase de codeUne application = un dépôt Git, déployé en plusieurs environnements
IIDépendancesDéclarées explicitement (lockfile), jamais supposées présentes sur la machine
IIIConfigurationDans l’environnement (variables), jamais dans le code — c’est elle qui change entre staging et prod
IVServices externesBase de données, file, cache : des ressources attachées, remplaçables par leur URL
VBuild, release, runTrois étapes strictement séparées — on ne modifie jamais le code au moment du run
VIProcessusL’application est sans état : tout ce qui doit survivre vit dans un service externe
VIILiaison de portL’application expose elle-même son port, elle ne dépend pas d’un serveur web injecté
VIIIConcurrenceMonter en charge = lancer plus de processus, pas un processus plus gros
IXJetabilitéDémarrage rapide, arrêt propre : un processus peut mourir à tout instant sans drame
XParité dev/prodLes environnements se ressemblent au point que « ça marche chez moi » veuille dire quelque chose
XILogsUn flux d’événements écrit sur la sortie standard — la plateforme le collecte, pas l’application
XIIProcessus d’administrationLes tâches ponctuelles (migration, script) tournent dans le même environnement que l’application

Pourquoi ces douze règles vous concernent : ce sont exactement les hypothèses que font Docker, la CI et les plateformes de déploiement. Une application 12-factor se conteneurise en dix lignes de Dockerfile et se déploie sans documentation d’exploitation ; une application qui viole le facteur III (config dans le code) ou VI (état local) se paie à chaque déploiement.