Actualités

Conteneurisation & Micro-services : ce n’était pas plus simple avant ?

Conteneurisation & Micro-services : ce n’était pas plus simple avant ?

Il faut bien l’avouer : il y a vingt ans, mettre une application en ligne avait quelque chose de direct et de presque artisanal. On louait une machine chez un hébergeur, on configurait Apache et MySQL à la main, un coup de client FTP (FileZilla en tête) pour balancer le code PHP ou les scripts, deux ou trois bidouilles de permissions directement en SSH, et l’affaire était réglée avant l’apéro.

Aujourd’hui, le simple fait de vouloir pousser une modeste application web peut vite donner le tournis :

  • La complexité d'infrastructure : jongler avec les consoles tentaculaires d'AWS, Azure ou GCP, leurs dizaines de rôles IAM, leurs VPC, leurs sous-réseaux et leurs règles de routage.
  • L'injonction des micro-services : découper artificiellement une logique métier simple en six services distincts, avec broker de messages, API Gateway et bases de données séparées.
  • Le coût cognitif du tooling : pipelines CI/CD à rallonge, conteneurs multi-étapes, manifests Kubernetes, outillage d'observabilité distribuée (traces, logs, métriques).
  • Les contraintes de code : concevoir du code immédiatement stateless, compatible 12-factor, résilient aux coupures réseau et optimisé pour une scalabilité théorique qui n'arrivera peut-être jamais.

Alors, a-t-on vraiment gagné au change ?

Pour Le Sylvanien Studio, la réponse est clairement oui et quelque soit la taille du projet initial : Le sentiment de nostalgie oublie souvent le coût caché, organisationnel et humain des déploiements traditionnels sur serveurs nus ou VMs dédiées.

Enjeu Avant (Serveurs bare-metal / VM dédiées) Après (Conteneurs & CI/CD)
Guerre Dév vs Sysadmin "Ça marche sur ma machine !" vs "Sur le serveur, PHP/Node n'a pas la même version de glibc/libssl". Des journées d'investigation croisée. Environnement scellé et identique du poste local jusqu'à la prod. Le conteneur validé en intégration est celui déployé en production.
Délais & Frictions Tickets d'ouverture de flux, demandes manuelles de mise à jour de paquets système, dépendance aux plannings des administrateurs. Infrastructure as Code (IaC) : les développeurs déclarent leurs besoins d'infrastructure et d'exécution dans le code, validés automatiquement.
Procédures de rollback Rollback manuel fastidieux : restauration de backups disques lents, réapplication de patches, scripts de désinstallation imprévisibles. Immutabilité : bascule de trafic instantanée vers l'image ou le conteneur de la version précédente (Blue/Green ou Rolling Update).
Échecs et reports de MEP Échec d'une MEP un jeudi soir = annulation complète, retour arrière d'urgence et report de la livraison au mois ou au trimestre suivant. Déploiements fréquents, atomiques et automatisés. Un incident se corrige par un hotfix déployé en quelques minutes.
Disponibilité utilisateurs Coupures de service obligatoires durant les heures creuses (nuits, week-ends) avec astreintes lourdes et risques de débordement sur la reprise d'activité. Déploiement sans interruption de service (Zero-Downtime Deployment). Le trafic bascule progressivement sur les nouvelles instances saines.
Régressions & Arbitrages Dépendances partagées entre applications modifiées en direct sur l'OS hôte, cassant des fonctionnalités existantes. Débats interminables sur la criticité des bugs pour valider ou non la livraison. Isolation stricte des processus et des dépendances. Tests automatisés intégrés à l'image avant toute exposition.

La liste est longue, on a totalement quitté l’âge de pierre et il faut s’en réjouir.

La démocratisation par Docker et l'écosystème open source

En 2013, Docker transforme ce paysage en apportant trois innovations fondamentales :

  • Le standard de packaging (Dockerfile) : une recette déclarative, reproductible et versionnable décrivant l'environnement applicatif exact.
  • Le modèle de couches d'images en UnionFS : réutilisation des couches communes, téléchargements différentiels et démarrage quasi instantané.
  • Le registre centralisé (Docker Hub) : partage et distribution standardisés des briques logicielles.

Aujourd'hui, l'écosystème repose sur des standards ouverts sous l'égide de la CNCF (Cloud Native Computing Foundation) et de l'OCI (Open Container Initiative) :

  • Moteurs et runtimes : Docker Engine, containerd, Podman (daemonless et rootless), CRI-O.
  • Orchestrateurs : Docker Compose pour les stacks multi-conteneurs locales, Kubernetes (K8s) et ses déclinaisons allégées (k3s, MicroK8s) ou managées (EKS, GKE, AKS) pour la production à grande échelle.

Le développeur devient fullstack et project manager

Le développeur de maintenant est certainement moins expert de tout ce qu’il manipule que dans le début des années 2000 : HTML, CSS, JavaScript basique (jQuery), PHP/MySQL, configuration Apache et scripts FTP, mais on lui demande d’en savoir un peu plus sur toute la chaîne logicielle, infrastructure d’hébergement, sécurité, authentification et d’être en cela un profil plus “fullstack” : Interfaces réactives (TypeScript, React/Vue), API REST/GraphQL, modélisation SQL/NoSQL, notions de sécurité (OAuth/JWT), bases de conteneurisation (Docker) et CI/CD.

Avec l’usage des IA, nous verrons que son rôle va encore évoluer vers de la gestion de projets avec des agents virtuels à piloter !