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.