Infrastructure as Code - Introduzione a DevOps in AWS

Infrastructure as Code

Uno dei principi fondamentali del modello DevOps consiste nel trattare l’infrastruttura nello stesso modo in cui gli sviluppatori trattano il codice. Il codice dell'applicazione ha un formato e una sintassi definiti. Se il codice non è scritto secondo le regole del linguaggio di programmazione, non è possibile creare delle applicazioni. Il codice viene memorizzato in un sistema di gestione delle versioni o di controllo del codice sorgente che registra una cronologia dello sviluppo del codice, delle modifiche e delle correzioni dei bug. Quando il codice viene compilato o integrato nelle applicazioni, ci aspettiamo che venga creata un'applicazione coerente e che la compilazione sia ripetibile e affidabile.

Adottare l’approccio Infrastructure as code significa applicare lo stesso rigore tipico dello sviluppo del codice dell’applicazione al provisioning dell'infrastruttura. Tutte le configurazioni devono essere definite in modo dichiarativo e memorizzate in un sistema di controllo del codice sorgente come AWS CodeCommit, lo stesso del codice dell'applicazione. Anche il provisioning, l'orchestrazione e la distribuzione dell'infrastruttura dovrebbero supportare l'adozione dell’approccio Infrastructure as code.

L'infrastruttura veniva tradizionalmente fornita utilizzando una combinazione di script e processi manuali. A volte questi script venivano memorizzati in sistemi di controllo delle versioni o documentati passo dopo passo in file di testo o run-book. Spesso la persona che scrive i run-book non è la stessa persona che esegue questi script o che segue i run-book. Se questi script o run-book non vengono aggiornati di frequente, possono diventare un fattore di blocco nelle distribuzioni. Ciò si traduce nella creazione di nuovi ambienti non sempre ripetibili, affidabili o coerenti.

A differenza dell’approccio precedente, AWS offre un modo incentrato su DevOps per creare e mantenere l'infrastruttura. In modo simile al modo in cui gli sviluppatori software scrivono i codici applicativi, AWS fornisce servizi che permettono la creazione, la distribuzione e il mantenimento dell’infrastruttura in modo programmatico, descrittivo e dichiarativo. Tali servizi offrono rigore, chiarezza e affidabilità. I vari servizi AWS menzionati in questo documento sono essenziali per una metodologia DevOps e costituiscono la base di numerosi principi e pratiche AWS DevOps di livello superiore.

AWS offre i seguenti servizi per definire l’approccio Infrastructure as code.