Le gouvernement québécois investit 50 millions de dollars supplémentaires afin de développer les compétences de vos employés. En savoir plus

7 février 2020

Article

Technologies de l'information

Docker, le conteneur pour un déploiement continu d’applications en mode agile

Qu’est-ce que Docker? À quoi cela sert?

Docker est un outil de conteneurisation qui permet à des équipes techniques d’améliorer leur capacité à l’agilité et leur processus de qualité en permettant l’automatisation et la standardisation de la mise en place d’environnements.

Docker a été conçu avec la philosophie DevOps en tête. L’outil permet de mettre en place une continuité aux méthode agiles en incluant l’équipe des opérations dans l’équipe Agile, déjà composée généralement de profils multidisciplinaires. Docker fait partie des outils qui permettent de réduire les intermédiaires entre la conception, l’implémentation et le déploiement d’une solution logicielle.

Les outils de conteneurisation comme Docker aident à réduire les silos de compétences historiquement présents autour du développement de solutions logicielles en harmonisant les environnements de travail (environnements locaux des développeurs, environnements de staging, de préproduction et de production) et en permettant l’automatisation des installations et des déploiements. Cela permet in-fine de mettre en place des processus d’intégration et de déploiement continu. Ces derniers permettent de fluidifier l’assurance qualité en réduisant les délais d’identification des bogues d’application et de réduire le temps de livraison de la valeur aux clients ou aux utilisateurs.

Qu’est-ce qu’un conteneur virtuel et comment cela fonctionne?

La notion de conteneurisation est un terme technique qui ne se limite pas à Docker. Cette approche est possible avec plusieurs technologies et vient du monde de Linux. C’est une solution alternative à la machine virtuelle. Celle-ci est souvent coûteuse à mettre en place, à maintenir et à déployer à grande échelle car elle embarque le système d’exploitation avec elle. En simplifiant, l’approche par conteneur permet plus de légèreté car le conteneur se base sur le système d’exploitation de la machine sur lequel il est embarqué, permettant un démarrage et une utilisation du disque réduite. Docker amène également une approche par couches (ou “layer”) qui permet le partage des définitions communes à plusieurs conteneurs, entre autres.

Docker Versus Kubernetes? Quelles sont les différences?

Docker et Kubernetes sont deux outils totalement différents et complémentaires. Le premier, Docker, sert à déployer et gérer des services web et/ou des applications.

Le second, Kubernetes, sert lui à fournir une solution qui permet d'automatiser le déploiement, de suivre les niveaux de charges de conteneurs répartis sur plusieurs serveurs différents.

Peux-tu nous aider à comprendre la puissance et le rôle de ces nouveaux outils dans les infrastructures traditionnelles et modernes?

L’avantage majeur de la conteneurisation est de réduire la complexité de “déplacer” du code de l’équipe de développeurs à la machine de production. Se faisant, les risques d’une mise en ligne deviennent négligeables car Docker permet des retours en arrière rapides, simplifiés et automatisés. De plus, cette technologie offre aussi la possibilité de déployer rapidement des correctifs pour des bogues mineurs. Docker permet donc d’amener de bonnes pratiques de production continue et de déploiement continu au sein des équipes. Il est possible de tester les changements au fur et à mesure, à la fin de chaque sprint et de déployer en production à tout moment.

Des multinationales comme Netflix ou Amazon ont embrassé ces technologies et leurs avantages. Début 2018, Amazon faisait en moyenne un déploiement en production toutes les 11,6 secondes ! C’est l’illustration parfaite du déploiement continu !

Résumons les avantages du conteneur Docker :

  • Simplifie et automatise le travail de déploiement
  • Limite le niveau de complexité sur les machines des développeurs
  • Développe de bonnes pratiques de la philosophie DevOps et DevSecOps
  • Réduit les risques de dépendance lors du déploiement
  • Permet de tester au fur et à mesure au lieu de déployer un site Web/API au complet

 

Approfondissez le sujet avec nos 2 nouvelles formations sur Docker :