I container sono un metodo di virtualizzazione di sistemi operativi che permette di eseguire un'applicazione e le relative dipendenze in processi con risorse isolate. Consentono di creare con la massima semplicità un pacchetto con codice, configurazione e dipendenze di un'applicazione, da impiegare come elemento di base per ottenere ambienti uniformi, efficienza operativa, produttività di sviluppo e controllo delle versioni. Tramite i container è possibile distribuire applicazioni in modo rapido, affidabile e uniforme indipendentemente dall'ambiente di distribuzione. Inoltre, i container consentono un controllo più granulare sulle risorse, aumentando così l'efficienza dell'infrastruttura. Eseguire container nel cloud AWS permette di creare applicazioni e servizi affidabili e scalabili sfruttando i vantaggi del cloud AWS, ad esempio l'elasticità, la disponibilità, la sicurezza e le economie di scala. Inoltre, i prezzi sono calcolati in base alle risorse effettivamente utilizzate.

monolith_2-VM-vs-Containers

Amazon Elastic Container Service

Inizia subito

EkoSystem Day: creare app moderne con AWS Container Services

Registrati ora
Site-Merch_PAC_Fargate

Soluzioni in container di partner in AWS – Webinar

Ulteriori informazioni
Containers_Benefit_EnvironmentConsistency

I container consentono la portabilità e aiutano a ridurre i problemi organizzativi e tecnici legati al percorso di un'applicazione lungo il ciclo di vita di sviluppo, test e produzione. I container includono i file necessari all'applicazione e le dipendenze software e fungono da elementi di base per la distribuzione sulle risorse di calcolo indipendentemente da configurazioni software, sistema operativo e configurazioni hardware; ad esempio, è possibile eseguire uno stesso container su un laptop con Ubuntu e su un server di produzione con Red Hat Enterprise Linux. Qualunque sia la composizione del container locale, la distribuzione e l'esecuzione finale saranno le stesse in test o in produzione. Si tratta di una funzione estremamente utile perché consente di distribuire applicazioni in modo affidabile e uniforme indipendentemente dall'ambiente. Non occorre configurare manualmente ciascun server e si possono rilasciare più rapidamente le nuove funzionalità.

Containers_Benefit_OperationalEfficiency

I container aiutano a sfruttare al meglio le risorse di elaborazione perché semplificano l'esecuzione di più applicazioni su una stessa istanza. È possibile specificare la quantità esatta di memoria, spazio su disco e CPU che ciascun container potrà utilizzare in un'istanza. I container offrono tempi di avvio rapidi perché ognuno di essi rappresenta un singolo processo nel sistema operativo che esegue un'applicazione e le relative dipendenze. Questa flessibilità consente di creare e terminare rapidamente le applicazioni o i task in un container, aumentando o riducendo le risorse dedicate. Per implementare una nuova release, ad esempio con Amazon Elastic Container Service, è possibile utilizzare modelli di distribuzione blue/green, perché l'intera applicazione e le relative dipendenze si trovano in un'immagine. Inoltre, i container consentono di isolare i processi, in modo da separare ciascuna applicazione (e dipendenze) in container differenti che potranno essere eseguiti nella stessa istanza. Non si verificheranno problemi di compatibilità né ci saranno dipendenze condivise, perché ogni container è isolato; ad esempio, sarà possibile eseguire due container che utilizzano versioni diverse di una libreria sulla stessa istanza Amazon EC2.

È anche possibile creare immagini dei container da utilizzare come base per altre immagini. I team operativi potranno creare immagini sorgente composte da sistema operativo, configurazioni e utility. Per i team di sviluppo sarà sufficiente basare le build dell'applicazione su tale immagine. È così possibile scongiurare la complessità correlata alla configurazione di server.

Containers_Benefit_DeveloperProductivity

I container aumentano la produttività degli sviluppatori eliminando le dipendenze e i conflitti fra i diversi servizi. Ogni componente dell'applicazione può essere suddiviso in diversi container, ognuno che esegue differenti microservizi. I container sono isolati l'uno dall'altro, quindi non è più necessario sincronizzare librerie e dipendenze per ogni servizio. Senza conflitti tra librerie, gli sviluppatori potranno aggiornare ogni servizio in modo indipendente.

Containers_Benefit_VersionControl

I container permettono di tener traccia delle versioni del codice di applicazione e relative dipendenze. Le immagini dei container Docker hanno un manifest file (Dockerfile) che permette di tenere sotto controllo le versioni di un container, visualizzare le differenze fra le versioni e ripristinare versioni precedenti.