L'unikernel : étape ultime de la virtualisation ?

Après la machine virtuelle et le container, voici l'unikernel. Un OS "light" qui n'embarque que les composants essentiels à l'application. Une techno suivie de près par Docker.

D'où vient la technologie de l'unikernel ?

Au fil des années, le monde de la virtualisation a fait un régime minceur. Apparue il y a une trentaine d'années, la virtualisation traditionnelle permet, via un hyperviseur, de simuler une ou plusieurs machines physiques sous forme de machines virtuelles (VM). Les applications hébergées à l'intérieur de ces machines s'exécutent à partir du système d'exploitation propre à la VM.

Remontant cette fois à une dizaine d'années, le concept de container logiciel, popularisé par Docker, isole l'application et ses dépendances du système d'exploitation. Le container fait appel à l'OS de la machine hôte, de sorte qu'il puisse être déplacé d'une VM à une autre tout en conservant ses spécificités. Cette virtualisation applicative permet de gagner en ressources mémoire et en performances.

L'unikernel n'embarque que les composants essentiels à l'application

Changement de philosophie avec l'unikernel. Cette technologie n'embarque dans la VM que les librairies et les composants système (shell, gestion des tâches, communication réseau, pilotes…) essentiels à l'exécution d'une application. Conçue pour une application donnée, l'unikernel est créé à l'aide d'un compilateur qui va sélectionner dans les librairies de système d'exploitation les stricts éléments nécessaires. Et pas un de plus.

Schéma publié par Docker visant à illustrer les différences entre unikernel, container Linux et machine virtuelle.  © Docker

Pour Didier Durand, cofondateur d'Eranea, société suisse qui "digitalise" les applications Cobol, l'unikernel va un cran plus loin dans la virtualisation. "Je ne prends que ce dont j'ai besoin. Linux étant, par exemple, en open source, il suffit de découper les paquets de code utiles plutôt que de prendre une image complète de Linux", explique-t-il.

Quels avantages cela présente-t-il ?

En se délestant de l'excédent de bagages, l'unikernel fait figure d'"OS light" qui n'utilisera qu'une infime partie des ressources requises par un système d'exploitation généraliste en termes de stockage disque ou de mémoire centrale. Il s'exécute donc plus rapidement. Reposant sur la technique de l'unikernel, ClickOS ne pèse que 5 Mo et démarre en moins de 20 millisecondes.

En présentant une surface moindre, un unikernel présente - mécaniquement - moins de sources de bugs et de failles potentielles. Il offre donc, potentiellement, une plus grande stabilité et une meilleure sécurité comparé aux containers. Un avantage aux yeux de Philippe Prados, consultant chez Octo Technology, responsable de l'équipe "architecture réactive". Le talon d'Achille de Docker le plus souvent avancé étant la sécurité. "En matière de containerisation, il y a de ce fait toujours une appréhension quand on passe du développement à la production", constate Philippe Prados.

Quelles sont ses limites ?

Portés par les communautés open source, les unikernels offrent encore une approche brut de décoffrage. Leur manipulation exige des compétences pointues en architecture et en virtualisation et les cas de mise en production restent rares.

Toutes les applications ne sont pas éligibles à l'unikernel

La compilation d'un unikernel peut aussi exiger du temps. Sachant que, dans le même esprit "Kleenex" que le container logiciel, on crée une nouvelle version d'un unikernel pour chaque besoin. Par ailleurs, note Philippe Prados, toutes les applications ne sont pas éligibles. "Elles ne doivent pas exiger un grand nombre d'instructions, sinon on perd l'intérêt même de l'unikernel", prévient l'expert.

Dans quels domaines l'unikernel peut être utilisé ?

Léger, robuste, sûr… L'unikernel a tout pour plaire au monde du cloud. Pour leurs besoins propres, les fournisseurs de cloud comme AWS et Google peuvent gagner de précieuses millisecondes qui, cumulées, leur offrent de vrais gains de productivité. La technologie peut aussi apporter de la plus-value à leurs clients. Ce billet, publié sur le site Medium.com, explique comment faire tourner un unikernel sur Google Compute Engine.

L'autre champ d'exploitation, c'est l'Internet des objets (IoT). Limité en ressources, un objet connecté a tout intérêt à embarquer un système d'exploitation frugal. A cela s'ajoute le volet sécurité, qui devient de plus en plus prégnant pour les capteurs et les dispositifs d'automesure.

Didier Durand imagine des objets connectés qui à l'avenir, à la faveur des offres de cloud orientées IoT, soient pilotés par des logiciels en containers aussi bien en frontal qu'au niveau des serveurs.

Combien d'unikernels existe-t-il ?

Le site Unikernel.org en recense dix. Chacun présente des atouts propres. MirageOS, issu de l'incubateur Xen Project, et HaLVM, dérivé du Glasgow Haskell Compiler, se dédient aux applications de haute performance. ClickOS, créé par NEC Laboratories Europe, joue la carte de la vitesse d'exécution.

L'enjeu : réduire la surface d'exposition aux attaques informatiques

OSv et Rumprun sont, eux, spécialisés dans le portage d'applications existantes. Rumprun se présente comme technologiquement agnostique, répondant à Posix, le standard qui définit les interfaces communes aux systèmes de type Unix.

Si la plupart des unikernels supportent les langages les plus courants, comme C, C++, Java, Ruby ou Node.js, d'autres ont fait le choix de langages plus exotiques comme Haskell (HaLVM) et Erlang (LING). Ovni dans un monde Linux, Drawbridge a été mis au point par Microsoft Research. La firme de Redmond travaille depuis des années sur cette technologie qui permet de virtualiser des applications dans une sandbox et qui ouvre la voie aux containers pour Windows Server.

Pourquoi le rachat d'Unikernel Systems par Docker est-il si important ?

En acquérant en janvier dernier Unikernel Systems, Docker met la main sur une technologie mais aussi de précieuses compétences en matière d'architectures de microservices. La start-up britannique a été fondée par des pionniers de Xen, l'hyperviseur open source. Elle a aussi contribué aux projets MirageOS et Rumprun.

L'apport de l'unikernel pour Docker est évident. Il permettra d'alléger le nombre de librairies serveur incluses dans les VM et, par là-même, de réduire la surface d'exposition aux attaques informatiques.

La médiatisation autour de Docker présente aussi l'avantage de sortir les unikernels de l'ombre. Didier Durand espère, enfin, que l'expertise de Docker permettra d'industrialiser leur usage. "J'attends le jour où une solution scannera les dépendances applicatives et sélectionnera automatiquement tel ou tel paquet Linux pour arriver à un dispositif de taille optimale", précise-t-il.

Serveurs / Virtualisation