Si le conteneur est largement utilisé pour le développement d’applications dans le cloud, son usage en production reste à confirmer.
Si la technologie de conteneur n’est pas nouvelle, elle existe même depuis plusieurs décennies, sa soudaine notoriété doit être associée à l'augmentation de l’usage des conteneurs portables via Docker. Dans ce cadre, un conteneur est composé d’un système de fichier complet, qui englobe tout, y compris le code, les bibliothèques, les outils systèmes et l’exécution dont une application a besoin pour fonctionner.
On comprend pourquoi le conteneur séduit les développeurs, dans cet environnement virtuel le code est isolé de l’infrastructure, ce qui simplifie le développement et les mises à jour, tout en s’éloignant des aléas de l’infra.
Le conteneur pour le développeur
Pour le développeur d’application, le conteneur est parfois considéré comme un don du ciel :
Il devient plus simple de construire et de mettre à jour des applications en remplaçant des éléments du conteneur Docker.
Les diverses fonctions au sein de l’application peuvent être plus granulaires. La mise en œuvre d’une architecture de microservices est rendue plus simple pour des pièces spécifiques de code granulaire qui invoquent un certain nombre de services de back-end en utilisant REST (Representational State Transfer) dans des API (Application Programming Interfaces).
Le conteneur est également considéré comme une alternative légère aux machines virtuelles (VM). Mais contrairement à un conteneur, une machine virtuelle peut héberger non seulement plusieurs systèmes d'exploitation invités, mais aussi plusieurs conteneurs. Dans ces conditions, les conteneurs Docker sont souvent déployés sur des machines virtuelles afin d'assurer une meilleure isolation des autres conteneurs en cours d'exécution sur le même système physique.
Par contre, la plupart des organisations informatiques ne disposent pas des outils de gestion du système en place pour gérer nativement des conteneurs. Il est beaucoup plus pratique et moins coûteux pour la plupart d'entre elles pour sécuriser et gérer les conteneurs comme une extension des outils existants utilisés pour gérer des machines virtuelles.
La réalité sur l’utilisation des conteneurs
Les conteneurs sont largement utilisés pour développer des applications dans le cloud, cependant l’évolution de ces applications dans des environnements de production reste à venir. Actuellement, seulement 1% des serveurs auraient des conteneurs en cours d'exécution. Ils devraient être 3% d’ici deux ans (source : étude IHS).
Il se murmure même qu'une fois qu’une organisation informatique se trouve exposée à des conteneurs, leur utilisation a tendance à dégénérer rapidement...
Si le conteneur a fait ses preuves dans le développement, son usage en production nécessite de normaliser les conteneurs et leurs images, la technologie souffrant que chaque plateforme de cluster de conteneurs dispose de son propre protocole de réseau interne, ce qui ne facilite pas la connexion à chaque cluster. Et il n’y a pas de standard d’interopérabilité entre les réseaux de conteneurs, en particulier entre les plateformes Linux et Windows, ce qui rend impossible d’un conteneur Docker.
Conteneurs et DevOps
La seule chose certaine est que conteneurs et microservices auront un impact profond sur DevOps. Les conteneurs permettent notamment pour les organisations informatiques de répondre aux besoins de l'entreprise avec plus d'agilité. Enfin ils engendrent également une séparation des tâches qui permet aux développeurs et aux équipes opérationnelles d’effectuer leurs tâches respectives sans nécessairement avoir à engager un dialogue sur chaque changement apporté à une application ou à l'environnement informatique sous-jacent.
Image d’entête 163839149 @ iStock binkski