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