Pourquoi il n’y aura pas de conteneurs sans système d’exploitation

Nous entrons dans une phase d’abstraction du système d’exploitation. Après la fin des instances programmées pour chaque serveur physique, voici la fin des instances personnalisées pour chaque application.

Les conteneurs, autrement dit une manière de virtualiser un système d’exploitation, suscitent beaucoup d’intérêt depuis quelque temps. D’une part, ils sont devenus de plus en plus pratiques, utiles et simples d’utilisation, d’autre part ils s’inscrivent dans la tendance actuelle à la standardisation des environnements d’exploitation au sein des entreprises, qui ont pris pas mal de recul par rapport à l’adaptation de l’OS à l’application, qui était l’approche auparavant préconisée.

Standardisé, le système d’exploitation n’en est pas moins stratégique. Il continue d’évoluer et demeure indispensable en soi. Par contre, l’instance du système d’exploitation, configurée, intégrée et personnalisée pour une application spécifique, tend elle à disparaître.

Nous entrons donc dans une phase d’abstraction du système d’exploitation. Après la fin des instances programmées pour chaque serveur physique, voici la fin des instances personnalisées pour chaque application. Si les conteneurs séduisent plus largement qu’il y a 10 ans (hormis des niches, comme les fournisseurs de services), c’est justement parce qu’ils fonctionnent comme des systèmes universels et non plus comme des entités spécifiques individuelles (ils s’apparentent plus à un composant d’un parc de serveurs indifférenciés qu’à un serveur de base de données sur-mesure).

Mais c’est le système d’exploitation et son infrastructure qui conditionnent les conteneurs déployés en son sein. L’OS reste donc indispensable. Simplement, c’est une base standard qui s’applique désormais à toutes les applications et non plus une image personnalisée pour chaque application. Tous les principes de sécurité, d’ajustement des performances, de fiabilité et de certification qui s’appliquent au monde virtuel s’appliquent aux conteneurs.

Désormais, ce sont les applications qui dictent et intègrent leurs dépendances (réduites au strict nécessaire) et non le système d’exploitation qui les fournit globalement. L’avenir est au système d’exploitation qui pilote, orchestre et programme les applications destinées à plusieurs hôtes. Cela suppose de modéliser les applications pour plusieurs hôtes et conteneurs, et de les distribuer aux ressources appropriées à l’aide de services et d’API

La communauté Project Atomic développe la technologie de serveur de conteneurs, et sert aussi de relais pour communiquer les besoins aux communautés compétentes en amont. En confiant le lancement des serveurs Atomic Host aux communautés Fedora, CentOS, et à Red Hat,  Project Atomic  se consacre pleinement à l’innovation technologique. Son objectif : proposer une approche complète de la distribution d’applications en conteneur pour le Cloud hybride ouvert, avec des garanties de portabilité entre systèmes nus, machines virtuelles et Clouds publics et privés ; une ambition que partage, sous l’angle de la gestion, le projet Kubernetes, projet d’orchestration à grande échelle de conteneurs de type Docker.

Les concepts de portabilité et d’empaquetage d’applications ne sont pas nouveaux. Des technologies de virtualisation et de partitionnement, notamment celles de « virtualisation d’applications », aspiraient à encadrer la distribution d’applications à des terminaux client en gérant les conflits entre versions. La virtualisation d’applications est longtemps restée un concept de niche, avant d’être repensée dernièrement.

Côté client, la virtualisation d’applications a donné naissance aux « app stores ». Et avec Docker, en tant que sur-couche aux conteneurs, il est désormais possible de créer une infrastructure ressemblant fort à ce que visait la virtualisation d’applications. Docker réunit une API d’interaction avec les conteneurs et un format d’image superposable, qui facilite l’introduction de contenus dans les conteneurs. Cette combinaison inédite est soutenue par un vaste écosystème open source de développeurs d’images et d’API pour Docker. Avec Docker, les développeurs disposent désormais d’une solution simple pour tirer parti d’un large choix d’environnements d’exécution d’applications, qui ne cesse de s’étoffer. Une simple commande « docker pull » permet d’exécuter une pile Java, Ruby ou Python ultra rapidement.

Et ce n’est pas tout. Concrètement, aujourd’hui déjà, certaines applications peuvent s’exécuter dans plusieurs conteneurs, distribués sur différents serveurs. L’interconnexion des conteneurs et des applications, les questions d’orchestration et l’administration de l’environnement sont facilitées et les développeurs peuvent commencer à programmer leurs applications plus rapidement. 

Au final, les applications sont plus adaptables, bien plus mobiles, faciles à distribuer et légères. Mais un élément demeure indispensable à leur exécution : le système d’exploitation.