Ouvrir le menu Fermer le menu

Qu'est-ce qu'un Unikernel ?

trait de séparation
Temps de lecture : 3 minutes

Qu'est-ce qu'un UNIKERNEL ?

La technologie de virtualisation, par laquelle plusieurs systèmes d'exploitation peuvent être exécutés sur du matériel partagé, est largement connue et utilisée même si elle peut se révéler ne pas être la plus efficace concernant l’utilisation des ressources. A l’origine, l’architecture de ces systèmes de virtualisation était basée sur la mise en œuvre d'un certain nombre de machines virtuelles (VM). Chaque machine virtuelle exécute sa propre instance d'un système d'exploitation, ce qui entraîne une duplication des responsabilités. Il est également difficile de gérer une telle infrastructure car il existe plusieurs serveurs qui sont tous des machines virtuelles indépendantes.

Les conteneurs, comme Docker et Kubernetes, tentent d'atteindre le même concept que les machines virtuelles, mais éliminent la duplication des efforts entre les machines. Au lieu de charger un système d'exploitation complet pour une application, les conteneurs utilisent le noyau du système d'exploitation hôte tout en leur permettant de charger des bibliothèques et des programmes spécifiques à l'application. En ajustant le conteneur et son image, il est possible d'affiner les bibliothèques et la configuration spécifiques que votre application utilisera. Cela se traduit par des gains de performances sans la surcharge liée à l'exécution d'un système d'exploitation complet.

L'approche basée sur les conteneurs a néanmoins ses inconvénients. Le logiciel doit être adapté pour une utilisation dans des conteneurs, ce qui peut devenir délicat, en particulier avec des codes hérités. Les conteneurs permettent un éventail de configurations pour gérer l’allocation des ressources et les capacités d'interopérabilité, de ce fait, il est donc assez facile de mal les configurer.

La prochaine étape logique dans la progression des VM vers les conteneurs est les unikernels, qui tentent de pousser encore plus loin les concepts de conteneurs. Les unikernels sont en fait un ensemble de bibliothèques binaires préconstruites et ne gèrent pas l'allocation des ressources. Un hyperviseur gère directement l'interopérabilité entre les ressources matérielles. Tous les appels système spécifiques à l'application sont poussés aussi près que possible de l'application. Pour Lynx, les unikernels sont capables de combiner la sécurité fournie par les mécanismes de partitionnement des machines virtuelles avec les performances en termes de vitesse et d’empreinte mémoire des conteneurs.

La technologie UNIKERNEL

Les unikernels ne sont pas nouveaux. Cet article écrit par Ericsson en 2016, illustre la distinction entre différentes approches architecturales. Il existe cependant plusieurs problèmes associés aux unikernels qui ont limité leurs applications jusqu'à présent, notamment :

  • Débogage. Puisqu'un unikernel n'a aucun système d'exploitation en cours d'exécution, l'approche consistant à se connecter directement à son shell pour le débogage ne fonctionne pas
  • Produire des images unikernel est compliqué et nécessite une connaissance approfondie du sujet sur lequel il est installé
  • Les frameworks applicatifs actuels doivent s'adapter et produire de la documentation sur l'utilisation dans les unikernels
  • L'absence d’unikernels certifiables/certifiés pour les applications critiques
 
Pour fournir une technologie unikernel prête à être déployée dans des applications critiques, un certain nombre de domaines doivent être abordés : 

Conformité POSIX et ARINC
L'industrie se tourne vers l'utilisation d'architectures logicielles plus modulaires qui entraînent un besoin de s'aligner sur des API populaires comme POSIX (et, sur le marché américain, piloté par l'armée américaine, la norme FACE)

Taille
Plus un système d'exploitation est grand, plus il est long et couteux pour le certifier en regard de normes telle que la DO-178. Une unité de mesure utilisée couramment est le nombre de lignes de code source (SLOC) pour faire le calcul approximatif de la complexité du logiciel. Pour les niveaux les plus stricts de cette norme, il faut en moyenne 2 à 4 heures pour faire passer une seule ligne de code source à travers ce processus.

Séquenceur
Plusieurs unikernels open source sont basés sur une séquencement préemptif équitable entre les tâches, ce qui signifie que le processeur est également réparti entre les utilisateurs ou les groupes du système. Pour les systèmes critiques, nous voyons que le séquencement ne doit pas être préemptif et que le processeur doit être alloué au processus jusqu'à ce que celui-ci se termine ou passe à l'état d'attente

Pour répondre aux diverses attentes clients, Lynx Software Technologies a implémenté cette technologie et ces principes avec al solution LynxElement.
LynxElement_ISIT
2