Cosa sono e differenza tra Macchine Virtuali e Container in informatica

Cosa sono e differenza tra Macchine Virtuali e Container in informatica

Perchè i Container?

In informatica e in particolar modo in internet, grazie all’utilizzo dei container le applicazioni possono essere astratte dall’ambiente in cui sono eseguite e impacchettate, per poi essere gestite in modo indipendente. Il disaccoppiamento tra implementazione e ambiente consente di eseguire facilmente il deployment delle applicazioni containerizzate, indipendentemente dall’ambiente di destinazione, che sia un data center privato, il cloud pubblico o il laptop di uno sviluppatore. Tramite l’approccio ai container, gli sviluppatori si occupano della logica e delle dipendenze dell’applicazione, mentre i team operativi DevOps possono concentrarsi sul deployment e sulla gestione, senza preoccuparsi di dettagli applicativi come linguaggio, framework o configurazioni dell’applicazione.

Macchine Virtuali e Container

L’isolamento delle applicazioni in rete può essere riprodotto sia utilizzando i containers che le virtual machines, lavorando a differenti livelli di virtualizzazione. Le VMs possiedono ognuna un sistema operativo “guest” diverso mentre i container lo virtualizzano, ed è per questo che i containers sono maggiormente portabili ed efficienti.

Cosa sono e differenza tra Macchine Virtuali e Container in informatica

Macchine Virtuali

Le Virtual Machines permettono di avere più server logici all’interno dello stesso server fisico. Grazie all’hypervisor, infatti, è possibile eseguire diverse macchine virtuali sullo stesso hardware.
L’aspetto sfavorevole di questo tipo di virtualizzazione è che, per ogni applicazione, è presente una copia esatta del sistema operativo offerto oltre alle librerie e i file binari per risolvere le dipendenze. Per questa ragione le macchine virtuali possono essere di grandi dimensioni, anche decine di GBs, ritardando il processo di avvio.

Container

L’astrazione per mezzo dei containers viene effettuata allo strato applicativo impacchettando insieme sia il codice che le sue dipendenze. Inoltre svariati containers possono girare sullo stesso hardware condividendo il kernel del sistema operativo, per cui ogni container sarà un processo isolato a livello utente. Diversamente dalle virtual machines, i container occupano molto meno spazio, comunemente pari a qualche centinaia di MBs, riducendo il tempo di avvio.

La scelta dei Containers

Il concetto di microservizio si associa molto bene a quello di container: entrambi sono componenti indipendenti e stateless. Ogni microservizio, infatti, viene incapsulato in un container, creando così un ambiente virtualizzato con l’opportunità di scalare orizzontalmente il microservizio solo su richiesta, sfruttando al meglio le risorse. Naturalmente, con un’architettura a microservizi che cerca di risolvere i problemi di scalabilità, isolamento e portabilità, si hanno una serie di aspetti da valutare data la complessa configurazione degli ambienti distribuiti. Disponibilità, comunicazione, monitoraggio e orchestrazione dei servizi divengono fattori molto importanti da considerare, ma ci sono nuove tecnologie che aiutano alla conservazione di uno stato coerente dell’ambiente.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *