Microservice: unikernel vs container

Ultimo aggiornamento: 20-06-2016

Negli ultimi anni per quanto riguarda il cloud si stanno diffondendo sempre più i microservice, per farsi un’idea dell’importanza basta leggere questo post sul blog di Microsoft Azure, oltre che andare su linux.com dove i container,l’ambiente dove girano i microservice (di seguito spiego cosa sono), sono uno dei  tranding topics insieme alla blockchain.

I Microservice

Prima di tutto cosa è un microservice? Dal sito di Martin Fowler

the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery.

I Container

Linux al momento è la piattaforma ideale dove fare girare i microservice, grazie alla tecnologia dei container; anche se ci sono le jails su i BSD e le zones su Solaris.
I container sono degli ambienti isolati dove far girare più processi: ogni container è indipendete dagli altri, anche a livello di dipendenze di librerie; infatti sono utilissime anche per lo sviluppo e il testing di software.
Per approfondire, segnalo queste guide di Stéphane Graber  il project leader di LXC e LXD:

Quando si parla di container non si può non citare il popolarissimo Docker, che permette la gestione in facilità dei container.

Serfando l’onda lunga dei container, negli ultimi anni stanno nascendo sempre più distribuzioni linux il cui unico scopo è far girare i container. Distribuzioni che sono  sviluppate da CoreOS, RedHat, Ubuntu,  EMC (la casa sviluppatrice di VMWare),ecc. Per farvi un idea leggete quest’articolo.

Ora per tornare al discorso dei microservice,  questi girano nel Cloud  grazie ai container presenti nei server, quindi i container si devono gestire (orchestrare) per far distribuire il calcolo di lavoro su più macchine. Per far ciò ci sono diversi software, come Fleet di CoreOS, Swarm di Docker, Kubernetes sviluppato inizialmente da Google, e alcune di questi si considerano dei  Sistema Operativo per Datacenter come Mesosphere. Segnalo questi articoli per approfondire:

E la virtualizzazione?

I container stanno sostitendo sempre più la virtualizzazione per la distribuzione dei servizi, grazie alla loro leggerezza e infatti VMWare sta rassicurando da una parte: “Container Technology Isn’t Threatening To Us, It’s Actually An Opportunity“, e dall’altra sta spingendo sempre più per gli unikernel (leggete l’articolo scritto a quattro mani da noi del  HCSSLug per approfondire) grazie al tool unik, che permette di compilare software (da sorgenti C, python,  go) in unikernel.
Infatti anche Docker ha iniziato a supportare gli unikernel (fonte).

Spero di avervi fatto una ricapitolazione della situazione cloud abbastanza chiara, alla prossima.

Altri link