Dal corso: Imparare Kubernetes

Cos'è la containerizzazione?

- [Istruttore] I container sono diventati uno dei concetti più popolari utilizzati nell'industria IT e software negli ultimi cinque anni. Dall'introduzione di Docker, i container si sono evoluti in un ecosistema più ampio che include molti strumenti e tecnologie, tra cui Docker e Kubernetes. Prima di entrare troppo nei dettagli, diamo un'occhiata al motivo per cui i contenitori sono diventati così popolari e come vengono utilizzati. Prima di tutto, i contenitori non sono un argomento nuovo. Esistono da un certo numero di anni e hanno assunto molte forme prima della creazione di Docker. Come puoi vedere qui, in generale un contenitore è definito come una raccolta di processi software unificati da uno spazio dei nomi con accesso a un kernel del sistema operativo che condivide con altri contenitori e poco o nessun accesso tra di loro. Docker modifica questa definizione dicendo che un contenitore è un'istanza di runtime di immagini Docker che contengono tre elementi, un'immagine Docker, un ambiente di esecuzione e un set standard di istruzioni. Per coloro che provengono da un mondo orientato agli oggetti, è possibile utilizzare l'analogia di classi e oggetti, in cui un contenitore è un oggetto e la classe è un'immagine Docker. Mentre Docker ha molti prodotti e soluzioni, i pezzi principali dell'ecosistema sono il Docker Engine e il Docker Store, a volte indicato come Docker Hub. Il motore Docker è composto da strumenti di runtime e di creazione di pacchetti ed è necessario installarlo negli host che eseguono Docker. Docker Store è un servizio cloud online in cui gli utenti possono archiviare e condividere le proprie immagini Docker. Docker offre molti più servizi di quelli che possiamo coprire qui, ma sentiti libero di controllare i corsi Docker nella biblioteca. Una domanda che emerge spesso è qual è la differenza tra un contenitore e una macchina virtuale? I contenitori potrebbero assomigliare a una macchina virtuale, ma si tratta di due tecnologie distinte. In una macchina virtuale, ogni macchina virtuale include molte applicazioni, tutti i file binari e le librerie necessari che esisterebbero sul sistema operativo e l'intero sistema operativo guest per interagire con essi. D'altra parte, un contenitore includerà l'applicazione e tutte le sue dipendenze, ma condividerà il kernel con gli altri contenitori. Non è legato ad alcuna infrastruttura specifica diversa dall'installazione del motore Docker sul proprio host. Eseguirà un processo isolato nello spazio utente sul sistema operativo host. Ciò consente ai contenitori di essere eseguiti su quasi tutti i computer, infrastrutture o cloud. Da un livello elevato, i container offrono vantaggi sia agli sviluppatori che ai devops. Agli sviluppatori piacciono perché è facile creare applicazioni portatili e confezionate in modo standard. Rendono inoltre il processo di distribuzione molto semplice e ripetibile. Test, packaging e integrazioni possono essere automatizzati in modo più semplice rispetto a prima. I contenitori supportano architetture di microservizi più recenti, che si adattano meglio alla mentalità degli sviluppatori. Infine, i container aiutano ad alleviare i problemi di compatibilità della piattaforma. Dal punto di vista DevOps, l'utilizzo dei container semplifica la gestione dei rilasci. Le distribuzioni diventano molto più affidabili, il che migliora la velocità e la frequenza dei rilasci. Il ciclo di vita dell'applicazione è coerente. Possono essere configurati una sola volta ed eseguiti più volte, rendendo il processo più ripetibile ed efficiente. Gli ambienti possono essere resi più coerenti. Niente più differenze di processo tra gli ambienti di sviluppo, staging e produzione. Anche il ridimensionamento delle applicazioni diventa molto più semplice. La distribuzione dei container in un host richiede alcuni secondi, il che semplifica il processo di aggiunta di lavoratori aggiuntivi e il carico di lavoro può crescere e ridursi più rapidamente per i casi d'uso on-demand. Uno dei maggiori valori aggiunti dell'utilizzo delle tecnologie container in un'azienda è che gli sviluppatori e il team DevOps ora hanno un linguaggio comune per collaborare. Entrambi i gruppi di team possono descrivere le proprie esigenze e architetture in termini di contenitori utilizzando lo stesso vocabolario per lo sviluppo e la distribuzione. I problemi che emergono in produzione da un team DevOps possono essere facilmente comunicati a un team di sviluppo. Il team di sviluppo può isolare ed eseguire il debug di problemi specifici a livello di contenitore, eliminando i problemi relativi alle differenze negli host o ai problemi di runtime con le applicazioni. Con tutti i vantaggi che i contenitori portano in tavola, non c'è da meravigliarsi che ci sia un aumento così drammatico del loro utilizzo. Un sondaggio di Forrester condotto nel 2017 ha indicato che le organizzazioni prevedono che il numero di app containerizzate aumenterà dell'80% nel 2019. Il white paper è un'ottima lettura e parla di alcuni dei casi d'uso più importanti di contenitori in organizzazioni di diverse dimensioni. Le organizzazioni utilizzano i contenitori per creare applicazioni per incorporare un'architettura basata su microservizi. Le applicazioni più recenti vengono create con una mentalità da microservizi utilizzando i contenitori sottostanti per realizzare questo e le applicazioni legacy vengono fornite come contenitori per adattarsi anche allo stampo dei microservizi. Infine, i contenitori aiutano con l'agilità del codice e ti aiutano a creare una pipeline di integrazione continua o distribuzione continua. Questo caso d'uso spinge davvero un team IT a sviluppare, testare e distribuire le applicazioni più velocemente in modo più automatizzato. Speriamo che ormai sia chiaro perché le aziende hanno iniziato ad adottare i container in modo così grande. Ora che abbiamo capito cosa sono i container, vediamo dove Kubernetes gioca un ruolo.

Contenuti