back to top

Dalla virtualizzazione alla containerizzazione grazie a Docker e Jelastic Cloud

La virtualizzazione è una procedura che consente di emulare un terminale all’interno di un sistema Host, soluzione come VirtualBox della Oracle consentono per esempio di creare una macchina virtuale gestita tramite una distribuzione Linux all’interno di un sistema operativo Windows. Grazie alla virtualizzazione è possibile creare l’ambiente adatto per l’esecuzione di una determinata applicazione, o per uno specifico servizio, anche se nativamente incompatibile con la piattaforma ospitante.

Tale metodologia presenta però diversi limiti:

  • la virtualizzazione avviene a livello hardware, cosa che si traduce in configurazioni che in alcuni casi possono essere lunghe e complesse;
  • le macchine virtualizzate e i loro sistemi richiedono tempi di avvio non di rado prolungati;
  • la virtualizzazione richiede di dedicare parte della memoria disponibile al terminale virtualizzato con un impatto notevole sulle prestazioni;
  • per ciascun Host è possibile virtualizzare soltanto un numero contenuto di macchine;
  • i terminali virtualizzati sono difficilmente portabili.

Dati i limiti elencati, e in particolare per via del grande consumo di risorse, si è cercato di adottare un approccio alternativo a quello della virtualizzazione trovandolo nella containerizzazione. Esso è a sua volta una forma di virtualizzazione, ma ciò avviene a carico delle applicazioni, senza coinvolgere un intero sistema.

I container

Esattamente come avviene per i terminali virtualizzati, ma con alla base una complessità nettamente inferiore, i container sono degli ambienti isolati rispetto all’ambiente destinato ad ospitarli. Tenuto conto di questo aspetto comune, i container superano di fatto i limiti precedentemente descritti a carico della virtualizzazione.

A livello tecnico infatti i container sono rappresentati da dei microservices che richiedono una quantità limitata di risorse (CPU, memoria RAM..) per il loro funzionamento, sono attivabili molto rapidamente, possono essere ospitati anche in numero elevato nel medesimo sistema e nelle loro declinazioni più recenti garantiscono un elevato livello di portabilità.

Dal punto di vista della produttività tutto ciò si traduce in tempi di rilascio molto più brevi per il passaggio dalla fase di sviluppo di un progetto a quella di deploy. Un programmatore software o un Web developer, ad esempio, potranno sviluppare qualsiasi tipo di applicazione all’interno del relativo container, gestendone anche diversi alla volta, senza dover affrontare il setup di un intero ambiente di sviluppo.

Andrebbero poi considerati gli aspetti non secondari legati alla sicurezza, questo perché i container consentono di eseguire più processi tra loro separati e isolati rispetto all’Host. Concettualmente sono quindi rappresentabili come una sorta di sandbox in cui una qualsiasi esecuzione non può coinvolgere il sistema di riferimento.

Ma come gestire i container in modo efficiente? Per rispondere a questa domanda è obbligatorio riferirsi ad un progetto come Docker.

Docker e i container

Docker è un sistema di gestione dei container, esso consente di mandare in produzione un progetto a partire da un’immagine detta, appunto, immagine Docker. Le immagini Docker sono composte da diversi strati e ogni strato è il prodotto di una modifica apportata all’immagine stessa, ogni volta che un utilizzatore esegue un’istruzione in grado di alterare il progetto l’immagine si arricchisce di un nuovo strato.

Il processo così descritto è reversibile in quanto Docker tiene un registro di tutti gli interventi effettuati, motivo per il quale se la modifica relativa ad uno strato non dovesse rispondere alle aspettative lo si potrà eliminare e ripartire dallo strato precedentemente creato.

La stratificazione descritta rende più rapido il processo di generazione dei container, le modifiche apportate vengono poi condivise fra le immagini con un ulteriore boost per quanto riguarda le prestazioni.

Quanto detto si traduce nel fatto che grazie a Docker un’applicazione o un servizio possono essere distribuiti indipendentemente dall’ambiente di destinazione, con tutte le dipendenze necessarie per il loro funzionamento.

I vantaggi dal punto di vista della produttività, della portabilità e della condivisione dei progetti risultano quindi immediatamente evidenti, soprattutto perché tutti i passaggi relativi alla distribuzione di un’applicazione risultano sostanzialmente automatizzati nel container associato ad essa.

Orchestrazione dei container, Kunbernetes e CaaS

Quando i container creati con Docker diventano numerosi è possibile ricorre ad una procedura che permetta di gestirli razionalmente denominata orchestrazione, con questo termine viene indicato il processo di organizzazione dei vari componenti e (micro)servizi di un’applicazione. La soluzione più nota per l’orchestrazione è Kubernetes, un sistema rilasciato sotto licenza Open Source che ha il vantaggio di essere compatibile con diversi standard per la generazione dei container.

Lavorare esclusivamente con risorse locali può essere però sufficiente quando si deve operare su piccoli progetti e un numero limitato di container, diviene invece necessario adottare un approccio Cloud based quando il lavoro aumenta e non si ha più il tempo di gestire autonomamente gli aspetti legati alla sicurezza, agli aggiornamenti, alla gestione del sistema e alla configurazione degli ambienti di sviluppo.

Un approccio che permette di combinare i vantaggi derivanti dalla containerizzazione, dall’orchestrazione e dal Cloud è quello del CaaS (Container as a Service). Si tratta sostanzialmente di un modello di Cloud Service che consente di gestire e distribuire container e applicazioni containerizzate sfruttando un’infrastruttura pronta all’uso, grazie alla quale il compito di uno sviluppatore, di una software house o di un DevOps è quello di concentrarsi sull’implementazione del proprio progetto.

Per soddisfare questo tipo di esigenze Aruba Cloud offre una soluzione come Jelastic Cloud, un servizio PaaS (Platform as a service) e CaaS basato sui container.

Aruba Cloud

Jelastic Cloud e gestione dei container Docker

Jelastic Cloud è una soluzione PaaS di tipo Multi-Cloud in grado di garantire scalabilità automatica delle risorse, un elevato livello di disponibilità, la gestione unificata dei processi di sviluppo e l’automatizzazione delle DevOps operations. Relativamente a Docker, la piattaforma integra tutte le funzionalità necessarie per eseguire applicazioni containerizzate nel Cloud.

Deploy delle applicazioni

Un primo vantaggio derivante dall’impiego di Jelastic Cloud per la gestione dei container riguarda la semplificazione delle procedure di deploy che potranno essere effettuate a partire da registri Docker sia pubblici che privati. Vengono supportate le applicazioni stateful, quindi modificabili in base a determinate azioni, legacy e microservice, così come alcuni dei sistemi più diffusi per il controllo di versione come per esempio Git ed SVN.

Jelastic Cloud

E’ possibile completare il deploy di un progetto tramite i comandi docker-compose up, per l’aggregazione dell’output di più container, e docker stack per mandare in produzione un’applicazione completa in modalità Swarm, l’insieme delle istanze di Docker che definiscono un cluster.

Sempre per quanto riguarda le fasi successive al coding, è interessante notare come Jelastic Cloud permetta di effettuare nuovamente il deploy di un’applicazione senza alcuna interruzione di servizio. Stesso discorso per quanto riguarda gli aggiornamenti automatici che saranno eseguiti senza ripercussioni per i tempi di uptime.

Sicurezza e uptime

L’elevato livello di disponibilità dovuto all’impiego di Jelastic Cloud viene garantito anche in ambiente Multi-Cloud, mentre la sicurezza dei dati gestiti è garantita da funzionalità appositamente dedicate al Disaster Recovery a cui vengono associati backup effettuati direttamente su Cloud esterno.

Nel caso sia necessario, la migrazione dei container Docker può essere eseguita in modalità live, ciò significa che tale procedura non verrà ostacolata da blocchi imposti dai software vendor e non si registreranno downtime.

Scalabilità

Jelastic Cloud supporta automaticamente la scalabilità orizzontale e verticale delle risorse attraverso appositi bilanciatori, inoltre il traffico viene distribuito automaticamente in modo da ottimizzare l’impiego di CPU, storage e memoria RAM sui vari task in esecuzione.

Le medesime risorse vengono poi organizzate in modo da garantire il funzionamento ottimale di tutti i container in esecuzione. Nel caso in cui si debbano gestire applicazioni Dockerizzate particolarmente complesse, Jelastic Cloud fornisce un cluster prepacchettizzato scalabile adatto anche alle operazioni critiche e più memory consuming.

Self-management

Jelastic Cloud è corredato da un’interfaccia utente particolarmente intuitiva con cui affrontare in completa autonomia tutte le operazioni di gestione dei container Docker. Sono supportate configurazioni avanzate tramite CLI (Command Line Interface) e protocollo SSH (Secure SHell) per le connessioni sicure da remoto.

UI Jelastic

La UI della piattaforma consente di gestire le varie componenti di un progetto tramite un file manager interattivo, sono poi disponibili strumenti per lo sviluppo collaborativo dei progetti con la possibilità di definire diversi livelli e privilegi di accesso per ciascun utente. Tutte le attività riguardanti un’applicazione vengono registrate in un sistema di statistiche integrato ed è possibile consultare i log sul traffico prodotto e le attività di runtime.

Jelastic Cloud interviene automaticamente per ibernare i container inattivi, mentre per quelli attivi è possibile impostare in qualsiasi momento variabili d’ambiente, volumi e script destinati ad essere eseguiti periodicamente durante il ciclo di vita di un task.

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Un dominio con tutto incluso: l’offerta di Register.it

La scelta del nome a dominio più adatto ad...

Guida completa all’hosting wordPress di Register.it

Un hosting ottimizzato per WordPress permette di sviluppare il...

Hosting ottimizzato per WordPress, le soluzioni di Register.it

Qual è il fattore fondamentale per il successo di...

I certificati SSL non sono tutti uguali. Le offerte di Register.it per il Business

SSL (Secure Sockets Layer) è un protocollo crittografico che...

Gli strumenti di Aruba per crearsi un sito web da soli

Anche in un periodo in cui la comunicazione di...

Qboxmail: guida all’utilizzo e alla configurazione della Webmail

Ad oggi un'azienda non può fare a meno di...
Pubblicitร