Lo scorso ottobre, Microsoft aveva annunciato un accordo con Docker per portare i container nel mondo Windows, annunciando anche una fantomatica funzionalità di Windows Server Containers, disponibile dal prossimo Windows Server. Sicuramente un grosso annuncio fatto anche per cavalcare l’onda del successo dei container… ma di fatto era solo un annuncio, visto che non vi era alcun dettaglio sul tipo di implementazione e sul grado di funzionalità e compatibilità che saranno offerti.
Ora, finalmente, sono apparsi i primi dettagli su cosa vi sarà e la speranza è di poterlo provare e tastare magari già dalla prossima build di Windows Server Next (o almeno come funzionalità di preview su Azure).
Per chi è a digiuno sul concetto di container, rimando a questo articolo di Nicola Ferrini che ben descrive la tecnologie e anticipa anche una parte di quanto sarà introdotto da Microsoft.
Microsoft ha rivelato i primi dettagli sia sul blog di Windows Server che su quello di Azure:
- Windows Server Blog: Microsoft Announces New Container Technologies for the Next Generation Cloud
- Microsoft Azure Blog: Microsoft Unveils New Container Technologies for the Next Generation Cloud
La prima dimostrazione del prodotto si dovrebbe avere tra un paio di settimana alla prossima BUILD conference. E rinnovo la speranza che si possa poi anche subito toccare con mano nella prossima build di Windows Server.
Quello che inizia a diventare chiaro è che vi saranno almeno due tipi diversi di scenario di applicabilità dei container Microsoft:
- Hyper-V Containers, a new container deployment option with enhanced isolation powered by Hyper-V virtualization
- Nano Server, a minimal footprint installation of Windows Server that is highly optimized for the cloud, and ideal for containers
Quindi di fatto dei container “racchiusi” in Hyper-V e dei container naviti direttamente su un sistema operativo minimale. Visto che i container non sono solo un ambiente di esecuzione isolato (altrimenti assomiglierebbero più ad una soluzione di application virtualization come ad esempio App-V), ma prevedono anche funzionalità pensate alla mobilità degli stesso, come ad esempio la virtualizzazione delle rete, sarà decisamente interessante vedere cosa sarà poi disponibile con i container di Windows.
Non è neppure chiaro per ora cosa si potrà far girare in un container Windows… Il presupposto che sta alla base di un container è quello di avere un kernel identico per tutti i container ed è quindi intuibile (ma non ancora ufficialmente confermato) che per utilizzare container Linux si dovrà ricorrere (per forza di cose) ad un Hyper-V Container.
Lo schema precedente che è quello illustrato nei due blog, se da un lato spiega quale sarà l’integrazione con Docker, dall’altro apre ad una domanda sullo scenario di mezzo… se è un esempio di nano server container o se comunque i container potranno esistere anche senza Hyper-V o i nano server, ma direttamente su Windows Server.
Dal mio punto di vista è proprio il Nano Server una delle grandi novità di questo annuncio, visto che si tratta di un sistema operativo lite pensato proprio per eseguire container e paradossalmente potrebbe diventare il pilastro su cui costruire un nuovo Windows Server o un Windows Embedded, magari anche cross piattaforma (anche se i container, per come sono oggi, dipendono dalla piattaforma). Ma queste sono solo mie supposizioni per sviluppi futiri del prodotto.
Quello che invece è confermato è il reale footprint ridotto di questa versione Server… molto più di quanto era stato annunciato ed auspicato con Windows Server Core. Nano Server rispetto ad un Windows server ha:
- 93% di spazio occupato in meno
- 92% in meno di critical bulletin (anche se vedo questa statistica decisamente prematura, visto che non c’è ancora)
- 80% di riavvii in meno (anche qua è più una promessa, almeno per ora)
E per quanto riguarda l’annuncio di collaborazione tra Microsoft e Docker? Ad oggi Docker gioca un ruolo importante nell’ecosistema dei container Linux. Il punto è che i container vanno preparati in modo opportuni e gestiti con strumenti opportuni (banalizzando è come se fossero un cloud di tipo PaaS, giusto per dare un confronto banale, ma che rende l’idea sul lavoro e progetto che vi deve essere dietro). Se da un lato mi immagino che nuove versioni di Visual Studio preparino già le applicazioni per ambienti container, rimane il come gestire applicazioni esistenti ed “incatolarne” in container opportuni e poi distribuirle. Da questo punto di vista, come appare anche nello schema precedente, Docker ha gli strumenti giusti e pare che saranno adattati anche a Windows Server e agli Hyper-V Container.
Rimane la curiosità di vedere come saranno implementati, in particolare per quanto riguarda la parte di network virtualization (ma non è segreto che Microsoft sta abbracciando anche lo standard VXLAN, oltre che NVGRE) e di deployment. Sarà anche da vedere il ruolo che assumerà App-V che potrebbe diventare inutile con i container o comunque rimpiazzabile da queste tecnologie, su questo al momento non vi sono novità e sarà decisamente un altro aspetto interessante da approfondire.