Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Suggerimento
Questo contenuto è un estratto dell'eBook, Architettura di microservizi .NET per applicazioni .NET containerizzati, disponibile in documentazione .NET o come PDF scaricabile gratuitamente leggibile offline.
La containerizzazione è un approccio allo sviluppo del software in cui un'applicazione o un servizio, le relative dipendenze e la corrispondente configurazione (astratti come file manifesto della distribuzione) sono inclusi in uno stesso pacchetto sotto forma di immagine del contenitore. L'applicazione in contenitori può essere testata come unità e distribuita come istanza dell'immagine del contenitore nel sistema operativo host.
Proprio come i contenitori di spedizione consentono di trasportare merci tramite nave, treno o camion indipendentemente dal carico all'interno, i contenitori software fungono da unità standard di distribuzione software che possono contenere codice e dipendenze diversi. L'inserimento di software in questo modo consente agli sviluppatori e ai professionisti IT di distribuirli in ambienti con poche o nessuna modifica.
I contenitori isolano anche le applicazioni l'una dall'altra in un sistema operativo condiviso. Le applicazioni in contenitori vengono eseguite su un host contenitore che a sua volta viene eseguito nel sistema operativo (Linux o Windows). I contenitori hanno quindi un footprint notevolmente inferiore rispetto alle immagini delle macchine virtuali.
Ogni contenitore può eseguire un'intera applicazione Web o un servizio, come illustrato nella figura 2-1. In questo esempio, l'host Docker è un host contenitore e App1, App2, Svc 1 e Svc 2 sono applicazioni o servizi in contenitori.
Figura 2-1. Più contenitori in esecuzione in un host contenitore
Un altro vantaggio della containerizzazione consiste nella scalabilità. È possibile scalare rapidamente eseguendo nuove istanze di contenitori per attività a breve termine. Dal punto di vista dell'applicazione, la creazione di un'istanza di un'immagine (creazione di un contenitore) è simile alla creazione di un'istanza di un processo come un servizio o un'app Web. Per garantire l'affidabilità, tuttavia, quando si eseguono più istanze della stessa immagine in più server host, in genere si vuole che ogni contenitore (istanza dell'immagine) sia eseguito in un server host o in una macchina virtuale diversa in domini di errore diversi.
In breve, i contenitori offrono i vantaggi dell'isolamento, della portabilità, dell'agilità, della scalabilità e del controllo nell'intero flusso di lavoro del ciclo di vita dell'applicazione. Il vantaggio più importante è l'isolamento dell'ambiente fornito tra Dev e Ops.