Kubernetes è lo standard de-facto per l'orchestrazione dei container e la tecnologia più alla moda del momento. Tutti i manager, i consulenti IT e i colleghi più giovani lo vogliono. Ma perché? Quali sono le ragioni per cui le persone utilizzano questa tecnologia? È solo una moda? Se sì, quanto durerà questo hype? E cosa dovresti sapere meglio se stai già utilizzando Kubernetes o hai intenzione di utilizzarlo in futuro?
Se non conosci Kubernetes e vuoi saperne di più, leggi il nostro articolo "Cos'è Kubernetes?". Per aiutarti a capire dove l'uso di Kubernetes ha senso e quali vantaggi apporta, condividerò qui tre casi d'uso in cui ho visto Kubernetes in produzione:
- Niente più problemi con la piattaforma IT: per un roll-out standardizzato del software.
- Auto-scaling: gestire in modo intelligente i picchi di carico senza far esplodere i costi
- Passaggio al multi-cloud a basso costo di gestione
Distribuzione standardizzata del software per una multinazionale del settore automobilistico
L'azienda multimiliardaria in questione utilizza Kubernetes come piattaforma per il software di produzione in tutti i suoi stabilimenti. Le applicazioni interne per la gestione delle linee di produzione vengono sviluppate nel centro di ricerca e sviluppo mondiale, impacchettate in container e quindi inviate ai repository locali di container in ogni stabilimento di produzione, per poi essere distribuite tramite Kubernetes negli stabilimenti.
Kubernetes consente quindi all'azienda di distribuire facilmente il nuovo software. Poiché Kubernetes fornisce al team di sviluppo una piattaforma unificata per tutti gli stabilimenti, durante lo sviluppo il team non deve più considerare le idiosincrasie delle diverse architetture IT dei vari siti.
In passato, l'implementazione di nuove applicazioni rappresentava sempre un problema, perché le infrastrutture di calcolo, rete e storage dei singoli stabilimenti erano sempre diverse e anche gli strumenti di automazione non erano standardizzati. Di conseguenza, anche le più piccole differenze comportavano roll-out e patch individuali e più lavoro per il team di sviluppo.
Con Kubernetes che non solo fornisce un livello di astrazione per l'elaborazione, ma anche per la rete e lo storage, l'azienda ha guadagnato molta velocità ed efficienza nel roll-out del software negli stabilimenti. D'altro canto, non bisogna dimenticare l'elevato impegno richiesto per gestire Kubernetes. In definitiva, però, le dimensioni dell'azienda rendono conveniente l'uso di Kubernetes.
Scalare l'applicazione web di e-commerce (o la piattaforma di scommesse sulle corse dei cavalli) in base alla domanda degli utenti
Mentre il caso precedente era nuovo per me, di questo avevo letto da tempo. Il cliente utilizzava un'applicazione monolitica. Ma ogni volta che avveniva una vendita, l'applicazione web di e-commerce aveva problemi di prestazioni. Di conseguenza, l'azienda perdeva potenziali vendite perché il sito web smetteva di funzionare correttamente.
Per risolvere questo problema, l'azienda è passata a un'architettura a microservizi basata su Kubernetes, con l'obiettivo di sfruttare gli strumenti di scalabilità nativi offerti dalla piattaforma. Tra questi, ad esempio, il ridimensionamento automatico dei nodi: quando il cluster non dispone di sufficiente potenza di calcolo o memoria, vengono aggiunti automaticamente nuovi pod worker.
Un'altra funzionalità chiave è lo scaling automatico e orizzontale dei pod, che consente di creare nuovi pod per l'applicazione front-end destinata agli utenti finali quando l'utilizzo della CPU di tutti i pod di quell'applicazione supera l'80%. In questo modo, durante i picchi di traffico – come nel periodo del Black Friday – l'azienda riesce a garantire la disponibilità dei contenuti per tutti gli utenti, sollevando il reparto IT almeno dalla responsabilità di eventuali vendite perse.
Inoltre, il team IT non deve più preoccuparsi di picchi di traffico inaspettati, come nel caso in cui una promozione venga lanciata senza preavviso. Questo perché Kubernetes gestisce lo scaling in modo automatico, senza necessità di intervento umano.
Finché il traffico rimane entro i livelli standard – cioè nella maggior parte dei casi – la piattaforma può essere eseguita utilizzando le cosiddette istanze riservate. Per queste, l’azienda ha sottoscritto un impegno con il proprio provider cloud per un periodo superiore a un anno.
I picchi di carico, invece, vengono gestiti tramite istanze on-demand, una soluzione molto efficiente dal punto di vista dei costi.
Ho sentito una storia simile da una piattaforma di scommesse sulle corse dei cavalli: il problema era che il traffico aumentava notevolmente nei fine settimana, mentre durante la notte era quasi assente. Per gestire lo scaling, il provider doveva avviare un’altra macchina di grandi dimensioni, la cui fase di ramp-up e ramp-down richiedeva molto tempo e generava un notevole sovraccarico.
Il passaggio a un'architettura a microservizi e a Kubernetes ha comportato un notevole risparmio sui costi dell'infrastruttura IT, anche se il costo dei consulenti necessari all'organizzazione per Kubernetes è aumentato enormemente.
La soluzione multi-cloud
All'epoca, quando lavoravo ancora come consulente di gestione, il cloud era ancora un argomento nuovo e scottante. La preoccupazione principale era spesso: come posso rimanere indipendente dai fornitori? La nostra risposta era di perseguire una strategia multi-cloud, anche se non avevamo idea di come implementarla.
Quelli erano i tempi in cui anche Pivotal era molto sulla cresta dell’onda con la sua soluzione Cloud Foundry. Nel frattempo, siamo diventati più consapevoli e sappiamo che quella soluzione non è mai davvero decollata: Pivotal è stata acquisita da VMware nel 2019 e successivamente integrata in VMware Tanzu. In ogni caso, ormai su GitHub di Cloud Foundry non c’è molto movimento.
Infine, con VMware Tanzu è arrivato sul mercato anche il 'figlio dell’amore' tra Kubernetes e vSphere - come se la complessità di uno solo dei due strumenti non fosse già abbastanza…
Kubernetes è la risposta a una strategia multi-cloud indipendente dai vendor. Con Kubernetes, è possibile distribuire applicazioni sulla propria infrastruttura e spostarle quasi senza interruzioni su AWS, Azure o Google – e viceversa. Naturalmente, il diavolo si nasconde nei dettagli, e ci sono differenze nel modo in cui Kubernetes funziona sulle diverse piattaforme. È proprio qui che entrano in gioco strumenti come Rancher o OpenShift, che rendono la gestione di Kubernetes molto più semplice.
A dire il vero, però, ho visto questo approccio solo in grandi aziende, dove la mitigazione del rischio è una priorità. Considerando i costi complessivi di Kubernetes e delle soluzioni multi-cloud sviluppate internamente, probabilmente si tratta ancora di un affare.
Kubernetes offre anche diversi altri vantaggi che non sono unici per un caso d'uso particolare, ma che rendono la vita più semplice in generale. Tra questi, le capacità di auto-riparazione di Kubernetes.
Indipendentemente dal tipo di infrastruttura utilizzata, prima o poi la tua infrastruttura informatica subirà un guasto o un'interruzione. Che Kubernetes sia in esecuzione su bare metal, su macchine virtuali autogestite o tramite un provider cloud, nulla è al riparo da un kernel panic, un guasto hardware o, semplicemente, dalla famigerata schermata blu della morte.
Quando un nodo diventa indisponibile, Kubernetes riavvia semplicemente i pod su un altro nodo sano. Ciò significa che le applicazioni sono di nuovo rapidamente disponibili senza che tu debba muovere un dito. Almeno in teoria.
Kubernetes è ottimo, ma non è adatto a tutti
Come puoi vedere, Kubernetes ha alcuni casi d'uso eccezionali. Se riconosci tu stesso e la tua azienda in uno degli esempi presentati, dovresti provarlo. Tieni presente, tuttavia, che non è la soluzione a tutti i problemi, e questo è il punto in cui vedo molte aziende sbagliare.
L'aforisma "Se tutto ciò che hai come strumento è un martello, vedrai un chiodo in ogni problema" può essere facilmente applicato a Kubernetes (e al concetto strettamente correlato di microservizi) nel mondo IT moderno. Solo perché tutti ne parlano e raccomandano questa tecnologia, non significa che la si debba usare per tutto. Perché? Quando si prende una decisione del genere, bisogna sempre considerare le dimensioni della propria azienda e l'impegno richiesto da uno strumento complesso come Kubernetes.
Hai davvero bisogno dell'autoscaling?
Al momento di decidere se affidarti a Kubernetes o meno, chiediti se la tua applicazione ha davvero bisogno di uno scaling automatico, ad esempio perché hai picchi di carico di lavoro enormi in brevi periodi. Oppure, se una macchina virtuale più grande è la soluzione più economica nel tuo caso. Si deve sempre tenere conto del fatto che un vero cluster Kubernetes richiede più nodi worker per la ridondanza. Se lo esegui in sede, avrai bisogno anche di più nodi del piano di controllo (idealmente 3).
È necessario reinventare una macchina ben oliata?
Gestisci da solo la tua infrastruttura IT e disponi di un'eccellente infrastruttura di virtualizzazione con un elevato livello di automazione? Allora probabilmente puoi implementare il software nella tua infrastruttura senza grossi problemi. Di conseguenza, non devi reinventare una macchina così perfettamente oliata.
La tua applicazione è già altamente disponibile?
Sei sicuro di aver davvero bisogno di una disponibilità del 99,999% della tua applicazione? O che la tua applicazione non soddisfi già i criteri per l'alta disponibilità?
Attenzione al divario (di conoscenza)
Ciò che la maggior parte delle aziende sembra dimenticare è il gap di conoscenza di Kubernetes. Se non hai competenze Kubernetes al tuo interno, non aspettarti di trovare esperti Kubernetes sul mercato in cerca di lavoro. Perché se lo fai, sei già in ritardo e probabilmente dovresti affidarti a consulenti Kubernetes esterni (che sono anch'essi una risorsa scarsa).
Kubernetes: come arrivare al paradiso, evitando l’inferno
Ci sono molti aspetti da considerare, ma è proprio qui che inizia il divertimento con Kubernetes. Immagina di aver scelto Kubernetes come tappa nel tuo percorso verso un futuro brillante con i microservizi. Per assicurarti di approdare al “paradiso” di Kubernetes e di non finire all’“inferno”, ti consigliamo di approfondire il tema del monitoraggio di Kubernetes e i problemi più comuni che si presentano in Kubernetes.