Website under innovative construction

Kubernetes: lo strumento di orchestrazione per il cloud

Kubernetes cloud

In quasi 15 anni, il cloud è diventato un argomento alla portata di tutti coloro che si occupano di applicativi web ed ha subito grandi innovazioni. Figlio di questa innovazione nel cloud è sicuramente Kubernetes.

 

Ma cos’è il cloud?

 

Cloud: risorsa da noleggio o fornitura?

 

Il cloud è l’infrastruttura di rete dei grandi fornitori di hosting, che gestiscono grandissimi data center in giro per il mondo, con centinaia di migliaia di server al suo interno. È un’infrastruttura creata dai più grandi player nel mondo del web (Google, Amazon, Microsoft, IBM, ecc.) per il loro bisogno di offrire il proprio servizio senza interruzioni.

 

A partire dal 2016 queste infrastrutture sono state rese disponibili a terzi come servizio da Amazon, che creò i suoi Amazon Web Services (AWS), per sfruttare i server che servivano a dare operatività nei periodi di acquisto frenetico come il Natale, ma che nel resto dell’anno rimanevano praticamente in disuso. Da quel momento, i server non erano più risorse da noleggiare a cadenza periodica, ma un servizio di fornitura, come quello dell’elettricità, in cui si paga l’effettivo consumo.

 

Attraverso questo nuovo paradigma tutti possono avere un server che aumenta o diminuisce le capacità a seconda dell’esigenza.

 

L’evoluzione del cloud non si è fermata. In questo ultimo decennio si è affermata docker, la tecnologia per il rilascio di applicativi in contenitori software, e con essa il concetto di orchestrazione software.

 

Questi contenitori virtualizzano l’ambiente di esecuzione del software, sono autoconsistenti, e sono più leggeri delle macchine virtuali tradizionali poiché si appoggiano su un sistema linux con cui condivide le risorse di sistema seppure gli ambienti siano indipendenti tra loro. Questa astrazione ha portato alla larga diffusione dell’architettura a servizi, dove il software è organizzato in componenti logici, racchiusi ognuno nel proprio container, e con la possibilità, a seconda dei casi, di creare più repliche di un componente, per rispondere ai requisiti di qualità.

 

In un’architettura di questo tipo è possibile scalare in orizzontale, ovvero aumentare il numero di risorse piuttosto che utilizzare macchine più potenti (scalabilità verticale). Scalare in verticale ha innanzitutto un limite hardware, non esiste una macchina a potenza infinita, e di conseguenza anche il costo aumenta poiché le macchine performanti sono più costose. Invece la scalabilità orizzontale ha un costo lineare, ovvero il costo di una macchina moltiplicato per il numero di macchine utilizzate.

 

Per configurare quante istanze servono di un determinato servizio e regolarla in base alla necessità, è necessario un supervisore, ed è qui che nasce l’esigenza di un orchestratore. L’orchestratore controlla lo stato dei contenitori, ed assicura che rispetti le specifiche configurate. È possibile aggiungere una nuova macchina quando le macchine operative superano una determinata soglia, o al contrario rimuovere macchine in eccesso quando il carico è basso, riavviare una macchina quando va in errore e così via.

 

Gli orchestratori sono in grado di gestire server anche distanti tra loro, rendendo teoricamente il concetto di scalabilità orizzontale senza limiti.

 

Kubernetes cloud

 

Kubernetes: l’open-source per orchestrare il cloud

 

Nella prima metà del decennio sono usciti diversi orchestratori, e a oggi sul mercato si è affermato un prodotto: Kubernetes. È un sistema open-source sviluppato inizialmente da Google, e attualmente è presente su tutti i principali servizi cloud.

 

La tecnologia cloud permette oggi grande flessibilità, ed amplia l’offerta di soluzioni per l’hosting delle applicazioni web. Questo si traduce in più scelta, che deve però essere guidata dall’esigenza e dalle tecnologie di sviluppo utilizzate. Seppure i servizi cloud si paghino a consumo, il suo prezzo è più alto rispetto alle soluzioni di hosting tradizionali. A parità di prezzo è possibile ottenere un singolo server con prestazioni migliori.

 

È importante analizzare sin da subito la tipologia di prodotto e il suo carico sui server; quanti utenti in contemporanea utilizzeranno il prodotto, e se si prevede un picco di accessi, quanto potrebbe essere la sua durata e quanto la sua portata.

 

Per esempio un blog può avere milioni di visualizzazioni, ma magari non contemporaneamente, e comunque l’operatività di un server di blog è relativamente basso poiché deve solo tradurre un indirizzo in un contenuto e visualizzarlo, ma il contenuto è sempre lo stesso per tutti gli utenti. Mentre un sito che offre servizi deve garantire operatività su ogni utente, e all’aumentare degli utenti il server viene sollecitato in maniera non indifferente.

 

Non esiste una pallottola d’argento, per cui l’analisi del progetto e la conoscenza delle offerte sono l’unica maniera per trovare la soluzione migliore.

 

Oggi i servizi cloud con tecnologie come Kubernetes offrono la possibilità di gestire automaticamente un sistema in grado di sostenere un traffico intenso al pari di quello dei grandi siti web e app, per cui è possibile concentrarsi sulla crescita del business digitale senza preoccuparsi dell’infrastruttura.