Cos'è la tecnologia dei container? | Il confronto

Cos'è la tecnologia dei container? | Il confronto

La tecnologia dei contenitori, nota anche semplicemente come tecnologia dei contenitori, è un metodo per confezionare un'applicazione in modo che possa essere eseguita, con le sue dipendenze, isolata da altri processi. I principali fornitori di cloud computing pubblico, tra cui Amazon Web Services, Microsoft Azure e Google Cloud Platform, hanno abbracciato la tecnologia dei container, con software container i cui nomi includono opzioni popolari di Docker, Apache Mesos, rkt (pronunciato "razzo").) e Kubernetes. La tecnologia dei container prende il nome dal settore dei trasporti marittimi. Invece di offrire un modo unico di spedire ciascun prodotto, i prodotti vengono collocati in contenitori di spedizione in acciaio, già progettati per essere prelevati dalla gru al molo, e inseriti nel contenitore progettato per adattarsi alle dimensioni standard del contenitore. In breve, standardizzando il processo e tenendo insieme gli articoli, il contenitore può essere spostato come un’unità e farlo in questo modo costa meno. Con la tecnologia dei contenitori informatici, questa è una situazione simile. Hai mai avuto la situazione in cui un programma funziona perfettamente su una macchina, ma poi si trasforma in un pasticcio imbarazzante quando passi a quella successiva? Ciò può verificarsi durante la migrazione del software dal PC di uno sviluppatore a un server di test o da un server fisico in un data center aziendale a un server cloud. Quando si sposta il software sorgono problemi a causa delle differenze tra gli ambienti della macchina, come il sistema operativo installato, le librerie SSL, l'archiviazione, la sicurezza e la topologia di rete. Proprio come la gru solleva l’intero container come un’unità per posizionarlo sulla nave o sul camion per il trasporto, facilitando lo spostamento, la tecnologia computerizzata dei container ottiene lo stesso risultato. La tecnologia dei contenitori contiene non solo software, ma anche dipendenze, tra cui librerie, file binari e file di configurazione, tutti insieme, e vengono migrati come un'unità, evitando differenze tra macchine, comprese differenze nel sistema operativo e nell'hardware sottostante, che causano incompatibilità e arresti anomali . I contenitori semplificano inoltre la distribuzione del software su un server.

Macchine virtuali

Prima che i contenitori diventassero popolari, le macchine virtuali erano un focus precedente. In questo caso, un server fisico potrebbe essere utilizzato per più applicazioni attraverso la tecnologia di virtualizzazione, nota anche come macchina virtuale, in cui ciascuna macchina virtuale contiene l'intero sistema operativo nonché l'intero sistema operativo; applicazione da eseguire. Il server fisico esegue quindi più macchine virtuali, ciascuna con il proprio sistema operativo, con sopra un singolo livello di emulazione hypervisor. Quando si eseguono più sistemi operativi contemporaneamente, c'è molto sovraccarico sul server poiché vengono utilizzate le risorse e il numero di macchine virtuali è limitato a poche. Al contrario, con la tecnologia dei contenitori, il server esegue un unico sistema operativo, poiché ogni contenitore può condividere questo unico sistema operativo con gli altri contenitori sul server. Parti del sistema operativo condiviso sono di sola lettura per non interferire con altri contenitori. Ciò significa che rispetto alle macchine virtuali, i contenitori richiedono meno risorse del server con un sovraccarico ridotto e sono significativamente più efficienti, quindi è possibile raggruppare molti più contenitori su un singolo server. Ad esempio, mentre ogni macchina virtuale può richiedere gigabyte di spazio di archiviazione, ogni contenitore che esegue un programma simile può richiedere solo megabyte.

Come funzionano i contenitori?

I contenitori sono configurati per funzionare in un'architettura multi-contenitore, denominata cluster di contenitori. In un gruppo di contenitori Kubernetes, esiste un singolo master del cluster, con gli altri contenitori associati designati come nodi, che sono le molteplici macchine lavoratore. Il ruolo del cluster master è pianificare i carichi di lavoro per i nodi, ma anche gestirne il ciclo di vita e gli aggiornamenti. La tecnologia dei contenitori non è un fenomeno nuovo ed è stata a lungo una caratteristica essenziale di Linux. I progressi nella tecnologia dei contenitori negli ultimi anni sono diventati più facili da usare e gli sviluppatori di software li hanno adottati per la loro semplicità e per evitare problemi di compatibilità. Permettono inoltre di suddividere un programma in piccoli frammenti, chiamati microservizi. Il vantaggio di avere il programma come componente microservizi è che diversi team possono lavorare separatamente su ciascuno dei contenitori purché vengano mantenute le interazioni tra i diversi contenitori, il che facilita uno sviluppo software più rapido. Infine, la tecnologia dei contenitori consente il controllo granulare completo dei contenitori. Sebbene i contenitori possano eseguire tutti i tipi di software, i programmi legacy progettati per essere eseguiti in una macchina virtuale non migrano bene alla tecnologia dei contenitori. Questo vecchio software in esecuzione su una macchina virtuale può essere installato su una piattaforma cloud come Microsoft Azure, quindi è improbabile che i contenitori sostituiscano completamente le macchine virtuali nel prossimo futuro.

Come gestiscono i container le aziende?

Con così tanti programmi eseguiti come contenitori, la gestione dei contenitori è diventata un requisito ed è difficile limitare l'impossibilità di eseguire questa attività manualmente. È necessario un software specializzato per la gestione dei contenitori e una soluzione open source popolare è Kubernetes, che ha diverse distribuzioni, tra cui Red Hat OpenShift. Il software di gestione dei container semplifica la distribuzione dei container e funziona bene con le strategie di distribuzione rapida della filosofia DevOps. Un’altra grande caratteristica della tecnologia dei container è la sua flessibilità. Con una macchina virtuale, l'avvio richiede diversi minuti, proprio come il PC sul desktop si avvia all'inizio della giornata. Nella tecnologia dei container, invece, poiché il sistema operativo è già in esecuzione sul server, è possibile avviare un container in pochi secondi. Ciò consente ai contenitori di essere avviati e arrestati secondo necessità, di flettersi in un momento di domanda elevata e di flettersi quando non sono necessari. Inoltre, se un contenitore si rompe, può essere riavviato rapidamente in modo da poter riprendere l'attività. Questo tipo di gestione è chiamato orchestrazione dei container e software come Docker Swarm può controllare questo tipo di orchestrazione e distribuire le attività tra gruppi di container. Poiché più contenitori condividono lo stesso sistema operativo, si teme che la tecnologia dei contenitori sia meno sicura di una macchina virtuale. Ciò è dovuto al fatto che se è presente una falla di sicurezza nel kernel host, ciò influenzerà più contenitori. Sono stati compiuti sforzi per rendere i contenitori più sicuri. Un approccio include Docker che richiede un’infrastruttura di firma per impedire il lancio non autorizzato di container. Esiste anche un software di sicurezza dei container, come Twistlock, che descrive il comportamento di un container e quindi blocca un container che non fa parte del profilo previsto.