Vai al contenuto principale
BlogStrumenti per gli sviluppatoriMigliori pratiche per la progettazione dell'infrastruttura IaC

Migliori pratiche per la progettazione dell'infrastruttura IaC

Migliori pratiche per la progettazione dell'infrastruttura IaC

Infrastructure as Code (IaC) è una filosofia e un insieme di pratiche per la distribuzione e la gestione delle reti nell'era del cloud. L'IaC è progettato per massimizzare i vantaggi del cloud computing e sfruttare le funzionalità degli strumenti di configurazione e distribuzione automatizzati, come ad esempio Puppet, Chef, Salt, Ansible, e Terraform. L'installazione e la configurazione completamente automatizzate fornite da questi strumenti consentono all'amministratore di definire sistemi completi con file di configurazione.

I file di configurazione sono insiemi di istruzioni con specifiche su come assemblare e configurare il sistema. Questo insieme di istruzioni può assumere molte forme diverse e assumere altri nomi a seconda dello strumento (ad esempio, un ricettario in Chef e un playbook in Ansible). A prescindere dalle differenze tra le piattaforme, questa capacità di definire in anticipo una configurazione completa porta a una nuova visione dell'infrastruttura, in cui la conoscenza dei sistemi risiede in forma di codice e viene rapidamente distribuita nel cloud senza la necessità di un'installazione convenzionale o di una riconfigurazione con comandi da console.

I passaggi per l'implementazione della propria soluzione variano a seconda della piattaforma di automazione e dei dettagli della rete, ma tenete a mente questi principi per iniziare a esplorare le possibilità dell'IaC.

  1. Sistemi semplici e modulari

Nell'era dell'hardware, un ufficio potrebbe utilizzare un singolo sistema server per la posta elettronica, l'archiviazione dei file e molte altre attività, ma la prima lezione dell'IaC è quella di abbandonare la mentalità dell'all-in-one. Sistemi grandi e multifunzionali aggiungono complessità e la complessità può portare a errori e problemi di sicurezza. Progettate la vostra infrastruttura IaC in modo che sia semplice, snella e modulare e poi distribuitela come un blocco di edifici per soddisfare le esigenze del vostro ambiente.

  1. Un'unica fonte di verità

Più versioni dello stesso file di configurazione possono creare confusione e causare errori. Ogni configurazione deve avere un'unica fonte. Ciò significa implementare un versioning chiaro ed efficace, utilizzando un sistema di controllo delle versioni come Git. Tuttavia, la filosofia della singola fonte di verità non si limita al controllo delle versioni. L'attenzione deve essere concentrata su una costellazione centrale di modelli standard, con personalizzazioni che avvengono attraverso un processo chiaro e prevedibile piuttosto che al volo.

  1. Nessuna documentazione esterna

Il file di configurazione in sé deve contenere tutte le informazioni necessarie per comprenderne il contenuto. Mettere le istruzioni e i commenti sulla configurazione in documenti separati richiede al team di seguire e mantenere file separati in parallelo. La vecchia abitudine di modificare prima la configurazione e di aggiornare i documenti in un secondo momento comporta un aggravio di lavoro, provoca errori e invita a non sincronizzare la configurazione e la documentazione.

La maggior parte delle piattaforme IaC fornisce un mezzo per aggiungere commenti al codice, ma è anche importante che i membri del team acquisiscano familiarità con gli strumenti di interfaccia e il linguaggio dichiarativo utilizzato con la piattaforma IaC per leggere e comprendere i dettagli della configurazione.

  1. Garanzia attraverso i test automatizzati

L'automazione dei test è un principio centrale di DevOps e della filosofia IaC. La modularità e la riproducibilità dell'ambiente IaC consentono di modellare facilmente l'ambiente di produzione in un ambiente di test. I test dovrebbero iniziare dopo aver apportato una modifica alla configurazione e procedere sistematicamente con test unitari, test funzionali, test di integrazione e test di regressione prima di distribuire la nuova versione del sistema.

  1. Lean In per Immutable

In IaC, la configurazione vive nel codice. L'obiettivo è esprimere i dettagli della configurazione attraverso il file di configurazione. Una volta che il sistema prende vita, si potrebbe essere tentati di gestirlo e riconfigurarlo come si farebbe con qualsiasi altro sistema informatico, ma per il principio di uniformità è meglio lasciar perdere. La riconfigurazione locale del fiocco di neve può causare errori e rendere il sistema difficile da proteggere e mantenere per gli altri. Idealmente, si dovrebbero apportare tutte le modifiche attraverso il file di configurazione e poi distribuire nuovamente quando è necessario un aggiornamento, piuttosto che modificare un sistema in funzione.

  1. Progettare i processi per la collaborazione

La conoscenza della configurazione generale e degli obiettivi deve essere condivisa da tutto il team, anziché essere bloccata da un singolo utente. Il controllo delle versioni è un componente chiave dell'ambiente collaborativo, ma è solo l'inizio. È necessario implementare i processi interattivi e gli strumenti di collaborazione in modo da massimizzare le informazioni e la responsabilità condivisa, pur mantenendo politiche di sicurezza e di verifica ragionevoli. Un essere umano con informazioni non condivise o non trasferibili è una minaccia per la continuità delle operazioni.

Tenete a mente questi principi mentre esplorate le possibilità dell'IaC e immaginate un processo di implementazione per la vostra infrastruttura IaC.


Commenti

Lascia una risposta

Il vostro indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *