Tech InDepth

Software container: breve viaggio tra strategie e prodotti

Il mondo dei software container vive oggi un’estrema effervescenza. Ecco in questa breve rassegna una disamina ragionata delle proposte più significative offerte da software house, produttori hardware e piattaforme cloud pubbliche. Emerge il supporto quasi unanime alla tecnologia Docker per lo sviluppo dei contenitori e la leadership di Kubernetes come piattaforma di orchestrazione e gestione.

Pubblicato il 17 Mag 2017

Leggeri e facilmente portabili all’interno di un’infrastruttura ibrida che può partire dal data center aziendale (magari costituito da sistemi convergenti o iper-convergenti come quelli proposti da NetApp, Dell EMC, Cisco, HPE, IBM, Nutanix ecc.), ed espandersi attraverso un cloud o, addirittura, più cloud, i software container, come abbiamo visto negli articoli precedenti, rappresentano la nuova frontiera dello sviluppo software. Una delle loro peculiarità, grazie appunto alla loro leggerezza e portabilità, è quella di adattarsi molto bene al modello emergente multicloud, per cui un’applicazione complessa, formata da più applicazioni container (che contengono database, business application, ecc.), può estendersi, grazie ai motori di orchestrazione, fra più piattaforme cloud contemporaneamente.
L’avvento della tecnologia dei container (oggi in massima parte creati utilizzando il tool Docker, ma distribuiti e gestiti con diversi software di orchestrazione, primo fra tutti Kubernetes) non si prevede che manderà in pensione la virtualizzazione tradizionale: quella basata sull’utilizzo di hypervisor (installate sull’hardware bare-metal) e VM (veri e propri sistemi virtuali contenenti applicazioni, dati, versione virtuale di un sistema operativo, in grado di utilizzare le risorse hardware virtualizzate dall’hypervisor).

Tecnologie più alleate che concorrenti

Entrambe queste tecnologie hanno diversi pregi e difetti, e quindi nella pratica si rivelano strumenti alternativi e/o complementari nelle mani dei team IT composti da sviluppatori e responsabili delle operation (che si occupano di provisioning di risorse infrastrutturali e gestione delle infrastrutture e del software in esercizio).

Lo sanno bene i maggiori player della software virtualization, come VMware, Microsoft o Red Hat, che evolvono in parallelo, e in modo integrato, le rispettive tecnologie di virtualizzazione tradizionale e container.

  • Due anni fa VMware ha introdotto vSphere Integrated Containers (VIC), una soluzione che permette di far girare e di gestire in modo integrato, su una piattaforma comune, applicazioni sia tradizionali sia container. La cosa interessante è che ciascun container, sviluppato con la tecnologia Docker presente in VIC, è ospitato all’interno di una VM. Più VM contenenti istanze container, che devono lavorare in collaborazione, possono essere integrate dagli sviluppatori in un container host virtuale (Virtual Container Host, o VCH). In pratica, la soluzione di VMware si propone di offrire i vantaggi delle virtual machine tradizionali in termini di sicurezza (dovuta al perfetto isolamento delle VM fra loro), di resilienza (le VM, a differenza dei container, contengono un’immagine completa del sistema operativo necessario per farle girare) e di gestibilità (nel caso dell’ambiente VMware, si utilizza il molto popolare vSphere Web Client). Allo stesso tempo vSphere Integrated Containers permette di godere benefici della tecnologia Docker legati alla semplicità di creazione e manutenzione del software, interoperabilità, larga disponibilità di componenti software reperibili in repository sul web, limitate dimensioni fisiche e necessità di risorse hardware.
  • Dal canto suo, anche Microsoft ha deciso di lavorare in stretta alleanza con Docker e il frutto di questa collaborazione è la tecnologia Windows Containers. La tecnologia offre due modelli di implementazione diverse dei container: il primo, Windows Server Containers, permette di creare container Docker che sfruttano il kernel del sistema operativo Windows Server 2016; il secondo è Hyper-V Containers, dove i container sono inseriti in VM che contengono una propria versione del kernel Windows, con il risultato di accrescere l’isolamento.
  • Passiamo a un vendor che utilizza e propone solo tecnologie open source come Red Hat. Il fornitore della distribuzione di Linux Red Hat Enterprise Linux (Rhel) propone un approccio ai container che passa attraverso la Platform-as-a-Service (PaaS) OpenShift 3, basata su Rhel. Con il modulo Red Hat OpenShift Container Platform, gli sviluppatori possono creare, testare e fare il deployment di container Linux Docker; per l’orchestrazione e la scalabilità dei container viene utilizzato Kubernetes.
  • L’altro concorrente nel mercato Linux, Suse, ha introdotto invece la Suse Containers as a Service Platform. La soluzione permette di creare container Linux in formato Docker. Anch’essa si avvale della tecnologia Kubernetes per l’orchestrazione. Suse ha anche sviluppato Suse Linux Enterprise MicroOs, un sistema operativo ottimizzato per i container.
  • Un approccio Platform-as-a-Service è stato adottato anche da HPE e IBM. La prima propone HPE Helion Stackato, una soluzione che si basa sulla tecnologia PaaS open source Cloud Foundry. HPE Helion Stackato può essere utilizzato per lo sviluppo e il deploy di applicazioni cloud native che possono essere fatte girare su un mix di infrastrutture come, ad esempio, data center virtualizzati con VMware, hybrid cloud create con la soluzione HPE Helion OpenStack, e public cloud come AWS di Amazon. La PaaS IBM, invece, si chiama IBM Containers on Bluemix e si può integrare facilmente con le soluzioni Watson (cognitive computing) e IoT di Big Blue.

Hardware per data center e cloud pubbliche

Già, ma dove girano i container? Gli hardware vendor stanno puntando in questo momento sull’offerta di soluzioni innovative che ruotano sulla convergenza infrastrutturale (a supporto degli obiettivi di Continuous Integration / Continuous Development) e sull’ottimizzazione delle funzionalità di storage per i container. Ecco Nutanix proporre, a corredo delle proprie infrastrutture iper-convergenti, la soluzione Acropolis Container Services (ACS), che integra, fra le altre cose, la gestione semplificata del ciclo di vita dei container, uno storage persistente enterprise-class e funzionalità per far convivere applicazioni containerizzate e virtualizzare sulla stessa piattaforma. NetApp recentemente ha lanciato Trident, un progetto open source per facilitare e migliorare il provisioning e l’orchestrazione di funzionalità storage container per chi usa le soluzioni del vendor. La soluzione fa leva su Kubernetes e sull’impiego dello standard iScsi). Dell EMC ha lanciato Dell EMC Unity, una nuova famiglia di storage midrange all-flash o ibrida che offre storage convergente file-blocchi, è basata su un kernel Suse Linux e supporta Docker container.
Per chi non volesse investire in infrastrutture on premises per lo sviluppo, il deployment e la distribuzione di container, è piuttosto ricca ed efficiente l’offerta dei cloud provider. Ecco alcune segnalazioni. Amazon, sul suo Amazon Web Services (AWS) offre Amazon EC2 Container Service (ECS), un servizio per lo sviluppo, la produzione e l’orchestrazione di container Linux. In versione beta è disponibile anche il supporto a Windows Container. Nel 2016 Oracle ha arricchito la Oracle Cloud Suite con Oracle Container Cloud Service (Occs), su cui è possibile approvvigionarsi di molte Linux machine per fare girare Docker container già sviluppati. La completa Oracle Application Container Cloud Service (Accs), una PaaS che facilita lo sviluppo e la messa in produzione di applicazioni container anche a chi non è esperto di Docker. Anche Google, con Google Cloud Platform, Microsoft, con Azure e il suo Container Service, e IBM, con Softlayer, continuano a rilasciare a getto continuo nuove funzionalità e servizi per aiutare gli sviluppatori e le aziende IT a capitalizzare sulla nuova tecnologia container.


Aziende impegnate a evitare silos e lock-in con i container

Nell’era della digital transformation le aziende non possono permettersi un’IT ingessata da silos tecnologici e lock-in verso singoli vendor. La tecnologia container rischia di far cadere le imprese in queste trappole? In teoria no. Il software container mira a permettere lo sviluppo di applicazioni che possono essere distribuite e fatte girare su qualsiasi sistema operativo o cloud. Inoltre, già all’inizio della filiera di produzione dei container, non esistono vincoli verso specifici linguaggi di programmazione.

Apparentemente, quindi, niente di più antitetico rispetto a silos e lock-in. Ma in realtà non è tutto così semplice. Fino a pochi mesi fa, per esempio, si parlava di estesa portabilità dei container solo assumendo che tutti i target (gli host) utilizzassero un kernel Linux. Un passo avanti verso una maggiore apertura della tecnologica container è avvenuto grazie alla collaborazione fra Microsoft (azienda che ha un amplissimo installato a livello mondiale) e Docker (l’azienda che ha sviluppato la più popolare piattaforma open source per creare container). Microsoft ha potuto così adattare l’architettura di Windows Server 2016 per far girare container Docker realizzati ad hoc (Windows container). E i container Linux? Negli ambienti Windows, questi sono supportati su sistemi dotati del software di virtualizzazione Microsoft Hyper-V oppure sul cloud pubblico Microsoft Azure. Anche Amazon Web Services e Google Cloud Platform supportano i container sia Linux sia Windows.

Siamo sempre più nell’Eden? In realtà, anche se la caratteristica open source di queste tecnologie permette che vengano adottate su larga scala e che i problemi di compatibilità siano risolti dalle community, la stessa natura può essere la causa di disallineamenti, soprattutto dovuti alla frammentazione in diversi progetti. La stessa tecnologia Docker viene messa in discussione, non perché non sia valida, ma perché altri attori vorrebbero che si giungesse alla definizione di formati di container image e runtime comuni, gestiti dalla Open Container Initiative (Oci). Ancora più frammentato è il mondo dei software d’orchestrazione, necessari per la distribuzione e la gestione di container su larga scala. La soluzione leader in questo momento è l’open source Kubernetes, alla base di diverse offerte commerciali. Ma sono molto utilizzati anche Mesos, Docker Swarm e gli engine di orchestrazione degli stessi cloud pubblici.

La tecnologia container, in ultima analisi, prevede l’integrazione di diversi strumenti. Le aziende che hanno la possibilità di dotarsi di molte risorse formate sui software container possono permettersi di adottare un approccio “ibrido” che integra il ricorso a soluzioni commerciali (ad esempio nell’ambito delle piattaforme infrastrutturali convergenti e iperconvergenti), con l’impiego in house di strumenti di sviluppo, testing, deployment e gestione del software container e di orchestrazione. Per le altre è preferibile la scelta di un partner (o di più partner, con un capofila) che abbia dimostrato di essere innovativo, aperto agli standard , attivo nelle community e collaborativo con i clienti.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4