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...)
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.