Un navire s’échoue et le monde s’arrête. Enfin, cela dépend où. Un porte-conteneurs en travers du canal de Suez a suffi pour remettre en cause les échanges entre les producteurs et les consommateurs. Il va falloir définir de nouvelles routes pour acheminer les biens de consommations aux différents clients. Ce fait divers permet de rappeler que l’unité de transport, le conteneur, est devenue universelle dans notre société.
D’ailleurs, cette unité est aussi en train de devenir la norme dans le monde informatique. À la question ‘Comment déplacer une application d’un serveur de développement vers un serveur de production ?’ le conteneur s’impose dans le monde professionnel. La raison est d’ailleurs la même que dans le monde physique. Si les plateformes sont différentes, il faut une mesure commune pour transporter et déployer les biens.
Un conteneur peut embarquer différents biens à destination d’un client puis être transporté par bateau, par train et par camion. Ensuite, arrivé sur son lieu de destination, son contenu est déployé sur le site d’utilisation. Il en est de même en informatique. Suite au développement d’une application, ses composants (application métier, base de données, serveur web, …) sont stockés dans un conteneur.
Bien sûr, il existe différentes façons de créer un environnement d’exécution. Avant Internet, les développeurs se déplaçaient sur le site du client et installaient à la main les différents composants. Il fallait inscrire dans des documentations les différentes procédures pour déployer correctement chaque composant de la solution finale.
Avec Internet et la possibilité de contrôler à distance les serveurs, les informaticiens n’avaient plus à se déplacer. La phase d’installation demandaient toujours d’installer tous les composants sur le serveur de production. Lors du déploiement de mon application, c’est ainsi que j’ai agit même si l’installation des composants était très largement automatisée.
Mais avec les conteneurs, il me suffit d’installer un composant sur le serveur de production et d’y déposer mon conteneur et l’application est alors accessible à tout le monde. Le composant à la mode se nomme Docker. Il ne s’agit pas de la plateforme la plus ancienne de déploiement de conteneur, mais c’est la plus utilisée de nos jours.
Ainsi, si le serveur que j’utilise ne fonctionne plus (parce que le centre où il est situé a brûlé), je n’ai qu’à déployer le conteneur Docker sur un autre serveur (et à rediriger le domaine vers ce serveur), et le service reprend comme si de rien n’était. En 5 minutes, il est possible de remettre en ligne n’importe quel service internet si celui-ci a été ‘conteneurisé’.
Une autre technologie permet cela : la virtualisation. Il s’agit de simuler un ordinateur sur un ordinateur. Mais elle est trop rigide et trop consommatrice de ressource. C’est comme la construction d’une école. Il est plus simple de construire les murs et de se faire livrer le tableau, les chaises, les pupitres et le bureau dans le conteneur que de faire circuler le bâtiment entier sur les routes jusqu’à destination.
Pour entrer un peu dans la technique, Docker se base sur la plateforme Debian. Il s’agit d’un système d’exploitation. Un conteneur est défini à partir d’une image. Une image, c’est la liste des éléments à embarquer dans le conteneur. C’est une liste de course qui se nomme ‘dockerfile’. Elle embarque des verbes qui décrivent le contenu du conteneur et se voit réalisée par la commande ‘docker build -t monapplication <CHEMIN_APP>’.
À ce moment-là, nous n’avons qu’une image de conteneur. Pour que le service soit rendu, il faut déployer l’image sur la plateforme : ‘docker run monapplication’. Le conteneur est créé et rend accessible le service qu’il transportait.
Bien sûr, il peut arriver qu’un conteneur ait besoin d’autres conteneurs pour fonctionner. Pour enchaîner et paramétrer des conteneurs, il faut créer un fichier ‘docker-compose.yml’. Ce fichier permet de définir l’enchaînement et le paramétrage des conteneurs. Les services portés dans les différents conteneurs travailleront ensemble suite à la commande ‘docker-compose up’.
En pratique, le déploiement d’applications n’est pas quelque chose de facile. Il faut plus que 3 commandes et 2 fichiers pour que tout fonctionne dans le cas d’applications professionnelles. Mais les conteneurs automatisent les opérations de déploiement et les risques de mauvaise configuration. C’est pour cela qu’ils s’imposent.
En tout cas, dans l’océan informatique, les risques de blocage suite à la fermeture d’une route ou d’un port n’existent pas.