Avenir de la virtualisation légère: Linux va-t-il rester la solution universelle ?

Lors de la conférence de Frédéric sur Ansible, nous avons digressé sur divers thèmes, dont celui du pourquoi du quasi monopole de Linux dans le cloud et la tendance très forte de l'augmentation de la part de marché de Linux dans l'entreprise, en général.

Une des raisons est certainement le fait que Linux permet une virtualisation extrêmement légère basée sur des containers. La prolifération de projets comme CoreOS (mini couche Linux de base), et celle d'outils de gestion de containers de haut niveau (Docker) ou la discussion sur l'adaptation des systèmes de packaging à la distribution de services dans le monde Linux, en sont certainement la preuve.

Cette virtualisation est aujourd'hui encore inaccessible à Microsoft: il existe à ma connaissance des couches de sandboxing légères sous Microsoft, mais uniquement proposées par des tiers pour des applications très spécifiques non généralisables au cloud (application Sandboxing, Sandboxing pour test de virus, et bien sûr Wine -- sisi: dans un chroot ou un lxc c'est du sandboxing léger).

Toutefois la situation change sur trois fronts:

  • Microsoft est entrain de développer les couches basses d'un sandboxing Microsoft utilisable par Docker: initialement, ce projet ne devait servir qu'au cloud propriétaire Azure de Microsoft, tout étant question du risque pour Microsoft d'être en concurrence avec d'autres acteurs, dans un marché enfin sorti de sa sclérose de la monoculture Redmond -- toutefois, si c'est basé sur VirtualBox, ce n'est pas de la virtualisation légère.

  • notons que Microsoft a annoncé une notion d'application sandboxing dans Windows 10, il s'agit certainement de la même technologie. L'ouverture semble déjà dépasser le projet initial, encore qu'il faut toujours se méfier du Vaporware Microsoft dont le but a souvent été de retarder les migrations vers les solutions actuelles de la concurrence.

  • Microsoft vient de sortir un système de gestion de configuration basé états, multiplateforme (Microsoft et Linux): le but est clair, c'est rendre Microsoft Azure intéressant pour les entreprises y déployant du Linux. Microsoft veut non seulement supporter l'autoconfiguration de systèmes Microsoft (qui en ont vraiment besoin, même si Ansible y tourne aussi), Linux (bah il y a des tonnes d'alternatives libres déjà bien implantées, dont Ansible, bien sûr) ainsi que les équipements réseaux (gerty, Ansible, ...)

Ma conclusion sera que le changement de stratégie de Microsoft suite à l'engagement de son nouveau directeur est aujourd'hui extrêmement visible, et contraste complètement avec les années Ballmer (`Linux est un cancer'). Microsoft veut devenir un acteur incontournable du cloud, et pour ce faire, ils doivent intégrer Linux. C'est la stratégie classique du Embrace, Extend, and Extinguish.

Toutefois, si le marché en voit un besoin, il se pourrait que cette stratégie d'ouverture contrôlée se retourne contre Microsoft: même si les couches basse de container restent propriétaires et internes à Azure, il ne me semble pas impossible de développer des containers légers basés sur Docker (haut niveau: packaging), Ansible (autoconfiguration), lxc (virtualisation légère Linux), Wine (lancement d'exécutables Microsoft), et pourquoi pas btrfs pour du copy-on-write permettant à 100 instances de prendre 2 à 3 x la place disque.

Mais y-a-t-il vraiment tellement d'applications et de services cloud implémentés uniquement sous Microsoft que l'on ne pourrait pas faire tourner avec mono sous Linux ? La question est légitime et ressemble à celle du marché des mobiles.

De plus, certains diront qu'on peut déjà tourner Microsoft dans Linux avec kvm (ou, sur d'autres plateformes avec VirtualBox ou VMware, technologies inférieures): toutefois:
  • il faut une licence Microsoft par VM
  • c'est beaucoup, beaucoup plus lourd car les I/O, même virtualisées (virt-io) sont gérées par le kernel Microsoft puis par un kernel central Linux; la mémoire ne peut pas être mutualisée de manière dynamique sans astuces comme le balloon-driver; enfin, il faut un fichier ou un device pour chaque filesystem: même si des solutions de copy-on-write sont imaginables, elles sont bien plus simples avec un filesystem commun à toutes les VM légères et du copy-on-write intégré à btrfs; sans compter que la détection de virii Microsoft (ou au minimum le contrôle l'intégrité) peut se faire par un simple find dans le filesystem global.

L'avenir dira, à mon sens, si Microsoft développe vraiment de la virtualisation légère et si le marché a réellement besoin de VM légères Microsoft (dans ou à l'extérieur de Microsoft Azure), ou si Linux maintiendra simplement son statut d'OS de base standard de la virtualisation légère.

NB: il est bien évident qu'un OS "java pur" ou ".NET pur" pourrait bien sûr émerger: la plupart du temps, dans le cloud, la petite couche Linux ne sert qu'à lancer une JVM, dans laquelle on exécute du bytecode Java, Python, Ruby, Scala ou Perl 6 (https://en.wikipedia.org/wiki/List_of_JVM_languages, https://en.wikipedia.org/wiki/List_of_CLI_languages); il s'agit déjà d'une certaine forme d'application sandboxing, avec quelques trous de sécurité dénoncés régulièrement.

-- MarcSCHAEFER - 30 Oct 2015
Topic revision: r2 - 13 Nov 2015, MarcSCHAEFER
 

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback