Unikernel

Negli ultimi anni, anche grazie alla diffusione dei microservice 5 (si legga quest’articolo sul Linux Journal) si stanno diffondendo sempre più gli unikernel, dei programmi/sistema-operativo compilati usando delle librerie apposite, le library operating systems.
Un unikernel viene eseguito sui sistemi di virtualizzazione senza la necessità del sistema operativo, così da utilizzare meno risorse hardware, come CPU e RAM.

Confronto tra uno stack di un programma eseguito su un S.O. tradizionale e uno unikernel compilato con MirageOS

Un esempio di  library operating systems è Rump, che è basata su NetBSD e permette di compilare unikernel di software POSIX senza doverlo modificare. Rump può generare unikernel appositamente per esser eseguiti su Xen o può generare unikernel genereci, eseguibili su qualsiasi sistema di virtualizzazione.
Esempi unikernel, per esempio PHP,  si possono trovare qui.

Perchè gli unikernel sono così importanti?
Gli unikernel sono un alternativa leggera ai container linux per quanto riguarda l’uso dei microservice nel cloud.
Docker diagram
Inoltre gli unikernel hanno  una minore superficie di attacco rispetto ai container linux.
Leggerezza e sicurezza sono concetti importanti per chi offre servizi Cloud, infatti grazie alla leggerezza e all’isolamento degli unikernel è possibile spostare facilemente servizi tra diversi host. Docker, attenta a queste problematiche, ha introdotto la gestione delle VM leggere in cui girano gli unikernel.

D’altra parte, la spinta a rendere i container più leggeri è molto forte tra gli sviluppatori, incluso il già citato team di Docker che ha trovato un metodo per rendere i container ancora più leggeri [3].
Vedremo tra le varie soluzioni proposte, quale sarà a prevalere.

Qubes-OS
Gli unikernel possono essere usati anche per realizzare applicazioni “sicure” nei sistemi operativi, come Qubes-OS, che basano la sicurezza sull’isolamento dei processi/servizi tramite virtual machine. Per esempio con MirageOS (una library OS che usa OCaml) è stato realizzato un firewall stand-alone.
Queste library OS possono essere usate anche per realizzare delle vere e proprie sandobox in cui effettuare i test più disparati in piena sicurezza.

Quindi non mi resta che dirvi, buon divertimento con gli unikernel!

Altri link utili

  1. UniK: UniK è un tool per compilare in unikernel applicazione scritte in Node.js, GO, C++, Java, ecc..
  2. OSv: è un sistema operativo open-souce progettato per il cloud
  3. Introduzione ai Linux Container: documentazione di Red Hat
  4. Articolo introduttivo sulle varie distribuzioni Linux specifiche per i container
  5. Microservices: An application revolution powered by the cloud