Le développement des applications web côté serveur a beaucoup changé depuis le début du Docker. Grâce à Docker, il est désormais plus facile de créer des applications évolutives et simples à gérer, constituées de microservices. Pour vous aider à comprendre ce que sont les microservices et comment Docker aide à les mettre en œuvre, commençons par un exemple plausible.

Imaginez que vous ayez un certain Jean Dupont dans votre équipe de développement web qui utilise un Mac. Alice Dupont, une collègue de Jean, travaille sur Windows. Enfin, un autre inconnu – Jacques Dupont, le troisième membre de votre équipe a décidé qu’il travaillait mieux sur Debian. Ces trois développeurs (étonnamment sans lien entre eux) utilisent trois environnements différents pour développer la même application et chaque environnement nécessite une configuration unique. Chaque développeur consulte 20 pages d’instructions sur l’installation de diverses bibliothèques et langages de programmation, et met les choses en route. Cependant, il est presque inévitable que les bibliothèques et les langages entrent en conflit entre ces trois environnements de développement différents. Ajoutez trois autres environnements les serveurs de mise en scène ou staging, de test et de production, et vous commencez à avoir une idée de la difficulté à assurer l’uniformité entre les environnements de développement, de test et de production.

Qu’est-ce que les microservices et Docker ont à voir avec la situation ci-dessus ?

Le problème que nous venons de décrire est pertinent lorsque vous construisez des applications monolithiques. Et il s’aggravera encore si vous décidez de suivre la tendance moderne et de développer une application basée sur des microservices. Comme les microservices sont des unités d’application autonomes et indépendantes qui ne remplissent chacune qu’une seule fonction commerciale spécifique, ils peuvent être considérés comme de petites applications à part entière. Que se passera-t-il si vous créez une douzaine de microservices pour votre application ? Et si vous décidez de créer plusieurs microservices avec des piles technologiques différentes ? Votre équipe sera bientôt en difficulté, car les développeurs devront gérer encore plus d’environnements qu’ils ne le feraient qu’avec une application monolithique traditionnelle.

Il existe cependant une solution : utiliser des microservices et des conteneurs pour encapsuler chaque microservice. Docker vous aide à gérer ces conteneurs.

Docker est simplement un outil de conteneurisation qui a été initialement construit sur les conteneurs Linux pour fournir un moyen plus simple de gérer les applications conteneurisées. Nous allons passer en revue les avantages de Docker et voir comment il peut nous aider à mettre en œuvre des microservices.

Les avantages du docker pour les microservices en 2020

La conteneurisation, en tant qu’alternative à la virtualisation, a toujours eu le potentiel de changer la façon dont nous construisons les applications. Docker, en tant qu’outil de conteneurisation, est souvent comparé aux machines virtuelles.
Les machines virtuelles (VM) ont été introduites pour optimiser l’utilisation des ressources informatiques. Vous pouvez exécuter plusieurs VM sur un seul serveur et déployer chaque instance d’application sur une machine virtuelle distincte. Avec ce modèle, chaque VM fournit un environnement stable pour une seule instance d’application. Malheureusement, lorsque nous faisons évoluer notre application, nous rencontrons rapidement des problèmes de performance, car les VMs consomment encore beaucoup de ressources.
Avec Docker, il est possible de réduire la surcharge de performance et de déployer des milliers de microservices sur le même serveur, car les conteneurs Docker nécessitent beaucoup moins de ressources informatiques que les machines virtuelles.

Jusqu’à présent, nous avons parlé de la gestion des environnements pour une seule application. Mais supposons que vous développiez deux projets différents ou que vous ayez besoin de tester deux versions différentes de la même application. Les conflits entre les versions d’applications ou les bibliothèques (pour les projets) sont inévitables dans ce cas, de plus la prise en charge de deux environnements différents sur la même VM est une véritable galère.

Comment Docker surpasse les machines virtuelles?

Contrairement au fonctionnement des VM, avec Docker, nous n’avons pas besoin de mettre en place en permanence des environnements propres dans l’espoir d’éviter les conflits. Avec Docker, nous savons qu’il n’y aura pas de conflit. Docker garantit que les microservices d’application fonctionneront dans leurs propres environnements qui sont complètement séparés du système d’exploitation.
Grâce à Docker, il n’est pas nécessaire que chaque développeur d’une équipe suive attentivement 20 pages d’instructions spécifiques au système d’exploitation. Au lieu de cela, un développeur peut créer un environnement stable avec toutes les bibliothèques et langages nécessaires et simplement enregistrer cette configuration dans le Docker Hub. Les autres développeurs n’ont plus qu’à charger la configuration pour avoir exactement le même environnement. Comme vous pouvez l’imaginer, Docker peut nous faire gagner beaucoup de temps.

Nous pouvons résumer les avantages de Docker comme suit :

  • Un démarrage plus rapide. Un conteneur Docker démarre en quelques secondes, car un conteneur n’est qu’un processus du système d’exploitation. Une machine virtuelle avec un système d’exploitation complet peut prendre quelques minutes pour se charger.
  • Un déploiement plus rapide. Il n’est pas nécessaire de mettre en place un nouvel environnement ; avec Docker, les membres de l’équipe de développement web n’ont qu’à télécharger une image Docker pour l’exécuter sur un autre serveur.
  • Gestion et mise à l’échelle des conteneurs plus faciles, car vous pouvez détruire et exécuter des conteneurs plus rapidement que vous ne pouvez détruire et exécuter des machines virtuelles.
  • Meilleure utilisation des ressources informatiques, car vous pouvez exécuter plus de conteneurs que de machines virtuelles sur un seul serveur.
  • Prise en charge de différents systèmes d’exploitation : vous pouvez obtenir Docker pour Windows, Mac, Debian et d’autres systèmes d’exploitation.