Les conteneurs transforment le développement applicatif afin de faire de l’« infrastructure as a service ».
Que sont les conteneurs ?
Tout comme dans le domaine des transports, les conteneurs informatiques stockent des objets pour les transporter. Ils permettent d’expédier des applications et leurs dépendances sur de multiples systèmes d’exploitation, quels qu’ils soient. Ils garantissent que leur contenu est identique au départ et à l’arrivée, et qu’il est sécurisé, grâce à leur mise en isolation.
À quoi servent-ils ?
Ils servent à minimiser la complexité liée à la configuration et à l’administration applicatives, à accélérer les cycles de développement et de production applicatifs, et, grâce à leur flexibilité et à leur portabilité, ils constituent l’une des briques qui permettent de faire de l’« infrastructure as a service », c’est-à-dire d’automatiser les infrastructures IT.
Comment fonctionne la conteneurisation ?
La conteneurisation est une méthode qui permet de virtualiser, dans un conteneur, les ressources matérielles ‒ systèmes de fichiers, réseau, processeur, mémoire vive, etc. ‒ nécessaires à l’exécution d’une application. Dans cet espace sont aussi stockées toutes les dépendances des applications : fichiers, bibliothèques, etc. Pour déplacer les applications virtuelles d’un système d’exploitation à un autre, le conteneur se connecte à leur noyau (kernel), ce qui permet aux différents composants matériels et logiciels de communiquer entre eux.
Quelle est sa valeur ajoutée ?
La conteneurisation propose une manière de virtualiser des ressources de manière légère, avec une isolation garantie par le système d’exploitation. Ces ressources sont ainsi plus facilement portables d’un système à un autre. C’est un puissant accélérateur de développement d’applications.
Quel est le rôle de Docker dans la conteneurisation ?
Docker est le premier acteur du marché qui a lancé, en 2013, le concept de conteneurs d’applications qui conservent leur cycle de vie. Il a changé la manière de percevoir les conteneurs, qui, jusque-là, étaient considérés comme des machines virtuelles légères. Docker a développé le logiciel open source qui permet de gérer les conteneurs. C’est-à-dire qu’il a créé un format de restitution des images et des runtime, qui ont fait l’objet d’un processus de standardisation par l’Open Container Initiative (OCI) ‒ un consortium fondé par un groupe d’entreprises pour développer des standards ouverts de référence pour les conteneurs.
La seule autre alternative du marché est celle de Rocket, créé par CoreOS, qui a été racheté par Red Hat, mais depuis sa standardisation, Docker est la solution la plus utilisée par le marché.
Il n’y a donc qu’un acteur majeur de la conteneurisation ?
Oui, mais de nouveaux émergent en matière d’orchestration. Les orchestrateurs sont des outils qui permettent de gérer le cycle de vie des conteneurs en en fournissant une vision d’ensemble, afin de pouvoir configurer les applications à la demande. C’est-à-dire qu’ils orchestrent le cycle de vie des applications basées sur la conteneurisation. C’est ce que fait le projet Kubernetes – un projet lancé à l’origine par Google en 2015, qui est ensuite devenu open source, car donné à la Cloud Native Computing Foundation. En termes de projets open source, c’est le plus important après celui des noyaux Linux, et le premier à être considéré mature parmi ceux hébergés par la Cloud Native Cloud Foundation. Kubernetes a pour objectif de fonctionner avec tout système de conteneur conforme au standard . Il permet aux programmeurs de se concentrer sur la manière dont ils souhaitent que les applications fonctionnent, plutôt que sur leurs détails de déploiement. Grâce à une couche d’abstraction permettant de gérer des groupes de conteneurs, les fonctionnalités sont dissociées des composants qui les fournissent. Il est en concurrence avec Docker Swarm, la solution de « clustering native » pour les conteneurs Docker.
En quoi est-ce une rupture technologique ?
La conteneurisation est une réelle rupture technologique, car elle s’insère parfaitement dans la chaîne du développement et de livraison en continu des applications. Elle permet de réduire ce fameux « time to market » qui permet d’accélérer le délai entre la formation d’une idée et sa matérialisation en fonction applicative. La conteneurisation permet d’aller beaucoup plus vite dans la livraison de nouvelles fonctionnalités. Par exemple, Facebook, Instagram, etc. sortent une centaine de nouvelles fonctionnalités par jour, sans que l’on s’en rende compte, grâce à la conteneurisation et à toutes les mécaniques de la chaîne d’intégration et de déploiement en continu.
Quelles sont les limites de la conteneurisation ?
En matière de conteneurisation, les outils arrivent petit à petit à maturité. C’est-à-dire que la conteneurisation et le support sur lequel elle s’appuie commencent (à l’intérieur du noyau Linux) à être complètement fiables. On n’observe plus les failles qui permettaient, il y a encore quelques années, de briser les protections et de s’introduire à l’intérieur d’un conteneur pour accéder frauduleusement aux ressources de la machine. Aujourd’hui, ce n’est plus possible parce que le code utilisé est abouti et que les ops sont bien mieux formés pour limiter les possibilités d’intrusion. Par exemple en limitant les droits sur les applications.
Cependant, pour les orchestrateurs de conteneurs, il existe encore des limitations. Par exemple en matière de gestion de grands volumes de données, il reste des progrès à faire pour l’intégration avec les fournisseurs de cloud. Par ailleurs, de nombreuses applications à migrer vers le cloud ne peuvent pas bénéficier des avantages de l’orchestration des conteneurs pour le passage à à l’échelle et la portabilité. Il faudrait les réécrire pour les adapter à cette nouvelle approche, mais cela demanderait trop de temps.
Comment la conteneurisation va-t-elle évoluer ?
Lorsque les programmeurs maîtriseront tous parfaitement l’orchestration de conteneurs et que la sécurité en matière d’orchestration sera améliorée, on peut imaginer avoir des groupes de machines qui hébergeront des conteneurs appartenant à des systèmes complètement hétérogènes. Ce qui permettra à n’importe quelle application d’utiliser, en toute sécurité, des ressources qui ne lui appartiennent pas. La conteneurisation et son orchestration pourront ainsi permettre de gérer des ressources hétérogènes de façon unifiée, ce qui est très utile pour les cas d’usage de l’IoT, car on y trouve des architectures de processeurs très différentes.
*Il a rejoint D2SI il y a un an, après avoir passé trois années au département de sécurité du cloud chez Orange dans le cadre de sa thèse sur le sujet du multicloud (à l’université de Lyon 3). Il a étudié toutes les formes de virtualisation derrière les conteneurs et ses domaines de prédilection sont : multicloud, DevOps, System Virtualization, Software Defined Networking, Network Function Virtualization.