I container sono l’evoluzione delle Virtual Machine(VM), ne abbiamo parlato e scritto diverse volte, ed oggi andiamo a scoprire due caratteristiche che devono avere per soddisfare le best practice implementative e svolgere effettivamente le funzioni per cui nascono.
E’ importante comprendere che quando si ha a che fare con i container non bisogna operare e lavorare come se ci si trovasse di fronte ad una VM e quindi essere tentati di aggiornare un’applicazione, per rendere operativi nuovi sviluppi o correzioni di sicurezza, all’interno di un container attivo. Questo perchè un container è progettato per essere stateless e immutable.
Stateless Container
Stateless significa che qualsiasi stato, vale a dire qualsiasi dato persistente di qualsiasi tipologia, è archiviato in maniera esterna al container. Questa “maniera esterna” può prendere diverse forme:
- per i file può essere un servizio di storage come Cloud Storage;
- per le informazioni di sessioni può essere per esempio Memcached
- per i database possono essere servizi esterni o dischi esterni al container
- ecc…
Attraverso le “maniere esterne” riesci a rimuovere qualsiasi dato dal container, ottenendo che lo stesso può essere spento, distrutto, eliminato senza alcuna paura che alcun dato venga perso. Puoi semplicemente connettere il nuovo container alle “maniere esterne” e sei operativo. Implementare la caratteristica Stateless, come si può ben comprendere, rende lo sviluppo ed il deploy realmente agile.
Immutable Container
Immutable significa che un container non sarà modificato durante la sua vita operativa: nessun update, nessuna patch, nessun cambiamento della configurazione.
Se hai necessità di effettuare una delle operazioni sopra descritte, semplicemente effettui il build di una nuova immagine dal codice sorgente e fai il redeploy. Se vuoi fare il rollback, fai il redeploy della vecchia immagine. Questo approccio ti consente di effettuare il deploy dello stesso identico container in qualsiasi ambiente, semplifica le operazione e rende efficiente la manutenzione.
Se alla componente immutable abbini l’esternalizzazione completa della configurazione delle variabili d’ambiente, per es. in Kubernetes esistono gli strumenti Secrets e ConfigMaps, allora ottieni un ambiente perfetto di Continuous Integration/ Continuous Delivery CI/CD, anche detto DevOps.
Concludendo, la combinazione di Statelessness e Immutability è una killer feature dei Container e ti permette ti automatizzare i deployment ed aumentare i rilasci e l’affidabilità delle tue applicazioni.
Contattaci subito e senza impegno per iniziare ad usare i container.
Glue Labs ed i Container
Utilizziamo i container dallo loro nascita e ti forniamo assistenza e supporto grazie alle competenze specialistiche maturate in tantissimi settori e con numerosi Clienti; inoltre eroghiamo formazione avanzata sui container e su tutte le tecnologie abbinate. Siamo Google Cloud, Google Workspace e G Suite Enterprise for Education Partner ed attraverso un solido gruppo aziendale ti possiamo fornire assistenza e supporto per qualsiasi progetto. Contattaci subito e senza impegno per maggiori informazioni.