Sin dalla prima lezione di questa guida abbiamo sottolineato cos'è essenzialmente Jelastic: una soluzione Cloud che abbraccia più paradigmi. Oltre al modello PaaS, l'altro paradigma che Jelastic implementa è CaaS, Container as a Service. L'uso dei container è proprio ciò che rende questa piattaforma estremamente flessibile e adattabile.
Con il termine container si indica un ambiente isolato che contiene tutto il necessario all'esecuzione di un’applicazione. Concettualmente, ciò richiama la virtualizzazione, e in effetti rappresenta un qualcosa di simile. Tuttavia, i container costituiscono il gradino successivo nella scala evolutiva delle infrastrutture informatiche.
Mentre la virtualizzazione si basa sull'uso di macchine virtuali in cui va installato e mantenuto un sistema operativo intero, e alle quali vanno assegnate risorse dedicate, un container richiede il minimo delle risorse fornendo il medesimo contributo. In un container non va installato un sistema operativo, in quanto esso usa tutto ciò che la macchina host gli mette a disposizione. Un container si basa su un'immagine che definisce tutto ciò che esso deve includere. Potremmo dire, in pratica, che un container è un'immagine in esecuzione. Le immagini sono facili da configurare e condividere, e questo ha favorito al massimo la portabilità dei container dagli ambienti di sviluppo a quelli di deployment, ben oltre quanto permesso dalle macchine virtuali. Questa tecnologia è ideale per la gestione di un'applicazione in continua espansione, permettendo di abbandonare la tradizionale impostazione monolitica in favore di quella a microservizi.
La principale soluzione di gestione di container è Docker. Questa non è solo una piattaforma per container bensì un intero ecosistema per il loro sviluppo, la loro condivisione e gestione. Esiste infatti Docker Hub per la condivisione delle immagini. Chiunque può realizzare immagini, possibilmente ben organizzate e documentate, da pubblicare su questo registry. Anche per Jelastic Docker Hub è una grande fonte di componenti.
Dell'ecosistema Docker fa parte anche Docker Compose, tool per strutturare applicazioni multi-container. Permette, mediante un file in formato YAML, di definire tutti i servizi che faranno parte dell'architettura, i vari parametri di configurazione e le dipendenze. Così, con semplici comandi, sarà possibile avviare l'intera applicazione o arrestarla. Quando poi le installazioni di Docker sono molte e costituiscono un cluster, si deve ricorrere a soluzioni di orchestrazione. La prima è Swarm, direttamente integrata in Docker, ma ormai da diversi anni si è fatto spazio Kubernetes, sviluppato da Google. Entrambe queste soluzioni di orchestrazione sono supportate ed ampiamente integrate su Jelastic.
Nel pannello di lavoro di Jelastic, i riferimenti alla tecnologia a container sono continui:
- la creazione di un environment può essere basata su un'immagine da prelevare da Docker Hub o da importare da qualche altro registry.
- nella scelta di un componente (server, database, etc.), oltre alle soluzioni proposte si può optare per una immagine, anche in questo caso prelevabile da Docker Hub.
- nel Marketplace ci sono diverse soluzioni ispirate a Docker. Si possono realizzare, ad esempio, cluster orchestrati con Swarm o Kubernetes nonchè installare Docker Engine CE per animare sia un nodo standalone sia nodi worker.
In generale, qualunque sia la topologia che attribuiamo alle architetture in Jelastic, la vedremo sempre composta da un insieme di nodi, e il tutto sarà espresso come una rete di container creati istantaneamente, gestibili singolarmente e riavviabili di pari passo con le modifiche da noi apportate. Altro aspetto per cui i container rappresentano una rampa di lancio è la scalabilità. Qualora volessimo potenziare velocemente una parte del servizio (database, API server, etc.), cosa ci sarebbe di meglio che moltiplicare i nodi che la rappresentano? Da questo punto di vista, i container offrono il massimo delle potenzialità: una piattaforma Cloud come Jelastic sarà in grado, con la massima efficienza, di attivare nuovi container basati sulla stessa immagine.