Nel nostro viaggio nelle organizzazioni DevOps, ci occupiamo della seconda iniziale dell’acronimo CALMS (Culture, Automation, Lean, Measurement e Sharing); ci occupiamo della Automation.
“Un programmatore pigro è un buon programmatore”, diceva Larry Wall, inventore del linguaggio di programmazione Perl.
Eseguire delle modifiche, anche se piccole, nei nostri sistemi ha un costo fisso. I passi necessari per portare il codice scritto da un programmatore nelle mani dell’utente varia da organizzazione ad organizzazione e coinvolge moltissime figure professionali. La fase di analisi, di progettazione dell’architettura, la definizione della user experience e della user interface, la scrittura del codice, il test, la prova di qualità, la prova di regressione e infine il rilascio.
Uno dei classici problemi del software complesso prodotto con il metodo tradizionale è che tipicamente non rilasciamo una piccola lavorazione, ma un grande blocco di modifiche. Il versioning, soprattutto nelle proposizioni non SaaS, è spesso dettato da esigenze sistemistiche o commerciali.
Se immaginiamo di passare in modo automatico, con un clic o un singolo comando, dall’ambiente di sviluppo o da quello di test alla produzione, tutto diventa più accattivante. Economizzare il costo di una release rende più attraente aumentarne la frequenza.
La creazione degli ambienti infrastrutturali e la loro manutenzione è sempre stata storicamente molto vicina alla sfera dei sistemisti che, attraverso il ricorso a strumenti scarsamente automatizzati, dovevano collegarsi ai singoli server per modificare i file di configurazione. Infrastructure-As-Code (IaC) è il processo di gestione e provisioning dei data center attraverso file di definizione leggibili dalle macchine, piuttosto che la configurazione fisica dell’hardware o degli strumenti di configurazione interattivi. L’infrastruttura IT gestita in questo modo comprende sia le apparecchiature fisiche, come i server, sia le macchine virtuali e le risorse di configurazione associate.
Oggi le tecniche di Infrastructure-As-Code (IaC) consentono di definire gli schemi infrastrutturali in linguaggi specifici, leggibili alla persona ed eseguibili dalle macchine.
Ogni volta che l’applicazione viene rilasciata in un ambiente diverso, le viene associata una configurazione specifica. Le tecniche di automazione per passare le configurazioni da un ambiente all’altro hanno il nome di configuration-as-code . Tutti gli strumenti di Continuous Configuration Automation (CCA) possono essere considerati come un’estensione dei tradizionali framework IaC. Essi sfruttano l’IaC per modificare, configurare e automatizzare l’infrastruttura e forniscono anche visibilità, efficienza e flessibilità nella gestione dell’infrastruttura.
Le tecniche di automazione sono il limite inferiore dei metodi DevOps e il grado massimo di automazione raggiungibile passa per l’esistenza di strumenti di automazione.
L’automazione ottenibile attraverso gli strumenti IaC e CCA è dunque abilitante per un approccio DevOps orientato ad un aggiornamento continuo dei sistemi.