1. Présentation - Docker

La philosophie DevOps et Docker

On ne peut pas parler de DevOps si l'on ne parle pas de Docker et inversement car les deux histoires sont liées. Docker a fortement contribué à propager la philosophie DevOps dans le monde informatique.
Pour comprendre cette histoire, il faut remonter à l'ère où le DevOps n'existait pas, je vous schématise cela en prenant le meilleur exemple : celui d'un éditeur de logiciel.

La communication entre les Développeurs et les Administrateurs Systèmes était... catastrophique.

Le point de vue SysAdmin

Les Administrateurs Systèmes, s'occupant de livrer le logiciel (mettre en Production) lors d'une montée de version, que les développeurs viennent de terminer de "packager" se retrouvaient avec beaucoup de soucis.

  • Des changements sur le déploiement du logiciel sans être au courant (manque de documentation et de communication)
  • Dégradation des performances du logiciel
  • Déploiement très complexe et long du logiciel
  • Consommation de ressources disproportionné
  • Failles de sécurité logicielles
  • Problèmes de compatibilité
  • Bugs en tout genre

Le point de vue Dev

De l'autre côté, les développeurs avaient à leur disposition des environnements qui n'étaient pas forcément adaptés. Les tests effectués n'étaient pas dans de bonnes conditions, leur environnement n'était pas le même que celui qui est en Production.
Que ce soit pour :

  • Effectuer des tests unitaires
  • Un environnement qui n'est pas vierge, avec des variables déjà en place ainsi que d'autres spécificités
  • Des versions totalement différentes lors des tests (autant d'un point de vue OS, que Middleware etc...)
🖐️
Au-delà de chacun des points de vues, c'est principalement la communication et la collaboration entre les Dev et les Sysadmin qui n'était pas bonne, avec un manque d'outils à disposition mais aussi un manque de méthodologie et de philosophie de travail !

Les avantages de Docker

Les avantages de Docker sont nombreux, et sont marqués sur beaucoup d'aspects. Je ne vais pas tous les énumérer ici, nous apprendrons à les voir tout au long de la formation 🙂

  • La facilitation du déploiement :
    Plutôt que de déployer un logiciel en suivant une documentation de 20 pages, cliquer sur valider sur des erreurs "normales", le déploiement d'un logiciel avec Docker peut s'effectuer en une seule commande.
  • Avoir à disposition un environnement totalement vierge, sans souci de cache ou autre
  • Légèreté :
    Les conteneurs (nous verrons plus tard de quoi il s'agit) partagent les mêmes ressources et le même noyau que l'hôte ce qui permet d'accéder aux ressources plus facilement (cela enlève une couche d'abstraction matérielle) et améliore les performances !
  • L'isolation (nous verrons plus en détail cet aspect)
  • Flexible car il est facile de mettre à jour son conteneur

Docker vient également corriger le problème : Ça marche chez toi et pas chez moi. Le fait d'avoir un environnement uniforme permet d'effectuer ses tests et ses exécutions dans les mêmes conditions.

Nous verrons dans le cours suivant sur quoi s'appuie Docker pour son bon fonctionnement.