La virtualizzazione ha portato una svolta importante nel mondo dei server e relativa gestione, scindendo il legame biunivoco tra unità hardware e sistema operativo.
Con il passare degli anni però, la rapida diffusione ha presto portato anche le configurazioni più potenti vicine al limite di saturazione, occupando sempre più risorse e aprendo le porte per una soluzione più evoluta quali i container e Kubernetes in particolare.
Ha iniziato infatti a farsi strada un approccio leggermente diverso, pensato per ottimizzare meglio l’hardware disponibile, aumentando al tempo stesso il numero di istanze software utilizzabili, senza incidere sulle prestazioni.
Il nodo di fondo è la necessità richiesta dalla virtualizzazione di dover comunque installare un sistema operativo dedicato, spesso uguale.
Spostando invece questa risorsa a un livello di astrazione superiore, diventa possibile condividerla, in modo da evitare inutili duplicazioni e liberare potenza di calcolo al servizio delle applicazioni critiche.
Si sviluppa così il concetto di container, strutture composte da un’applicazione o un microservizio con le librerie, i file binari e di configurazione necessari per essere eseguita. La differenza rispetto a una virtual machine tradizionale è esattamente l’assenza di un proprio sistema operativo.
Ogni istanza infatti, si appoggia a sistema operativo condiviso. Il risultato sono prima di tutto strutture più leggere e indipendenti dall’ambiente operativo. Quindi, aggiungendo anche i benefici della trasportabilità.
Dal punto di vista pratico, sono diversi i benefici immediati. Riassumendo, si parla prima di tutto di riduzione dei costi IT soprattutto legati all’hardware. Inoltre, la flessibilità va a vantaggio di tempi e costi di sviluppo delle soluzioni. Il risultato, sono anche soluzioni più facili da gestire, grazie anche a una scalabilità intrinseca.
Per riuscirci però, servono naturalmente strumenti all’altezza della situazione e Kubernetes al momento si candida come risposta ideale. Per quanto un passo avanti infatti, il rischio complessità dei container nel tempo resta elevato e uno dei primi obiettivi Kubernetes è proprio superare questo ostacolo.
Si tratta infatti di un sistema di orchestrazione di container sviluppato in origine da Google, per essere successivamente rilasciato in modalità open source nel 2014.
Ispirato dalla parola greca “timoniere” o “pilota”, Kubernetes mette a disposizione i necessari strumenti per la messa a punto dei container, con relativa gestione e distribuzione.
Risultati da conquistare
Per quanto passo avanti importante però, non è il caso di lasciarsi prendere troppo dall’entusiasmo.
Con i container si parla comunque di una soluzione di alto livello, potenzialmente molto complessa. In linea teorica, si tratta infatti di dover gestire anche milioni di elementi..
I container hanno bisogno comunque di essere distribuiti, programmati, riavviati dopo i guasti e collegati al mondo esterno.
A meno di investire ingenti risorse, pensare di seguire tutto ciò manualmente è al limite dell’impossibile. Questo è uno dei principali obiettivi Kubernetes.
Una piattaforma di orchestrazione dei container è quindi indispensabile per coglierne i vantaggi. Obiettivo Kubernetes è mettere le organizzazioni in grado di tenere sotto controllo tutte le operazioni contando sulle risorse disponibili.
L’alternativa sarebbe procedere totalmente in proprio, investendo su una piattaforma di orchestrazione proprietaria. Inoltre, se nei primi tempi Kubernetes accusava problemi di gioventù come affidabilità e capacità di adattarsi alle varie realtà, oggi questi ostacoli si possono considerare superati.
Tuttavia, proprio perché si tratta di una soluzione versatile, prima di procedere è importante inquadrare le proprie necessità, così da indirizzare gli sforzi verso la configurazione necessaria.
Al riguardo, sono diversi gli strumenti di supporto recuperabili in rete.
Tra questi, si rivela utile l’analisi dei requuisiti fatta da Canonical.
La ricerca della configurazione ideale
Prima di scegliere la soluzione ed eventuali partner, è importante partire da stime legate alle dimensioni del sistema IT.
La complessità di Kubernetes infatti, cresce in misura esponenziale con la complessità della propria infrastruttura. Di conseguenza, le esigenza di una PMI saranno totalmente diverse da quelle di una grande multinazionale.
Inoltre, importante valutare il livello di confidenza con la tecnologia. Si parla comunque di una soluzione sofisticata, dove capacità e volontà di gestire all’interno o meno anche aspetti come sviluppo e manutenzione portano verso strade diverse.
In ogni caso, prima di procedere vanno inquadrati con estrema precisione anche i requisiti di conformità richiesti, con i relativi obblighi ed esigenze quando si parla di sicurezza o eventuali perdite di dati.
Come facile prevedere, tutto questo alla fine deve anche fare i conti con la disponibilità economica dell’intervento, per determinare tempi e modalità. Anche in base a questo, si dovrà decidere su quale opzione orientarsi, se gestire tutto in casa, oppure guardare alle diverse opzioni del cloud.
Come inseguire il risparmio promesso
Alla fine, più ancora di aspetti come efficienza e flessibilità, la vera spinta verso Kubernetes arriva dal poter sfruttare queste opportunità per ridurre la spesa IT. Per evitare brutte sorprese, è importante tenere nella dovuta considerazione diversi aspetti.
Il rischio più evidente infatti è di trovarsi di fronte a una situazione esattamente opposta rispetto alle attese. Le insidie pronte a moltiplicare le spese infatti, non mancano.
Come molti software di supporto nell’ecosistema nativo del cloud, anche Kubernetes è open source. In linea di principio, questo aiuta a ridurre le spese, sia a breve sia a lungo termine. Nel conteggio bisogna però tenere in considerazione anche voci spesso trascurate.
Per esempio, partire dalla versione base per costruirci sopra il proprio sistema su misura è certamente invitante ma non sempre fattibile, soprattutto per la necessità di competenze. Facile quindi guardare allora a una distribuzione commerciale o a una piattaforma proposta da un fornitore di cloud.
Questo può portare all’effetto opposto di quanto inseguito, vale a dire una sorta di lock-in, con un vincolo difficile da richiedere nel caso i canoni richiesti superassero la disponibilità di spesa o il servizio non fosse in linea con le aspettative.
Inoltre, il passaggio a Kubernetes non è certamente immediato. Come ogni migrazione, serve investire tempo e denaro. Nel caso di sistemi legacy, passare ai container non è impresa facile. Oltre a queste disponibilità, bisogna mettere in preventivo anche una formazione del personale, e considerare anche una fase di trasferimento dei dati.
Infine, è necessario mettere in preventivo un periodo di transizione, dove prima di tutto conoscere come si comporta l’ambiente creato rispetto alle aspettative, e apprendere le nozioni utili per mettere a punto le procedure effettivamente in grado di raggiungere l’obiettivo inseguito di una riduzione dei costi e tracciare linee guida per l’utilizzo, a partire dalla gestione delle risorse.
Su queste basi, tenendo in considerazione ogni aspetto sin dalle prime fasi di un progetto Kubernetes, sarà allora possibile procedere limitando il rischio di brutte sorprese. Una buona progettazione è infatti premessa fondamentale seguire con successo le tappe successive della transizione.
Primo di quattro articoli.
Nel prossimo articolo: la ricerca della configurazione ideale.