Che cos'è Infrastructure as Code?

Infrastructure as Code (IaC)

Infrastructure as Code consente alle aziende di controllare in modo più efficiente le modifiche e le configurazioni in un ambiente cloud. L’IaC offre a DevOps le pratiche che consentono agli sviluppatori e agli operatori di lavorare in modo maggiormente coordinato sull'implementazione delle macchine virtuali, delle reti virtuali realizzate attorno a esse e dell'applicazione all'interno.

Imperativo vs. dichiarativo

Una delle decisioni da prendere per sfruttare IaC è se apportare modifiche all'ambiente con l'automazione imperativa o dichiarativa. La natura dell'IaC è principalmente dichiarativa. Una definizione semplice: la differenza tra imperativo e dichiarativo e quella che c'è tra come deve funzionare un programma e cosa invece deve riuscire a fare.

Per apportare modifiche di automazione imperativa all'infrastruttura, è possibile usare un'interfaccia a riga di comando (CLI). In questo modo è possibile apportare modifiche al cloud prima all'interno di un container, poi a livello di macchina virtuale (VM) e poi a livello di cloud privato virtuale, in ordine, attraverso uno script. Si tratta di una checklist dettagliata, ma se occorre modificare la configurazione dopo l'invio a macchine multiple, occorre rifare i passaggi e lo script.

Un approccio dichiarativo all'automazione richiede la creazione di obiettivi. Ad esempio, invece che usare la CLI ed elencare passo passo la configurazione esatta di una VM, è sufficiente indicare che si desidera una VM con, ad esempio, un domino associato e lasciare che l'automazione si occupi dell'esecuzione. L'approccio dichiarativo consente di indicare più facilmente quali obiettivi devono essere raggiunti dagli strumenti di automazione.

Mutevole vs. immutabile

Lo spostamento della configurazione è un grosso problema relativo alla configurazione di una o più parti qualunque dell'infrastruttura. Ciò avviene quando si implementa un'infrastruttura mutevole. Per mutevole si intende che è soggetta a modifiche. Se una parte dell'infrastruttura cambia, viene meno la sincronia con le altre. Dal punto di vista della sicurezza è estremamente importante la presenza di un'applicazione coerente con le configurazioni nell'intera infrastruttura.

Un'infrastruttura immutabile non può essere modificata una volta implementata. I cambiamenti potranno comunque essere apportati, ma sono applicati alle dichiarazioni originali. Quando le modifiche sono pronte, è possibile modificare in modo coerente tutti i dispositivi o le configurazioni analoghe. La coerenza è necessaria dal punto di vista della sicurezza, poiché agli hacker basta una sola porta rimasta aperta per entrare. La chiusura di ogni porta nello stesso modo complica le cose agli hacker.

DevOps

Sviluppo, test e distribuzione di applicazioni in un ambiente d produzione spesso richiedono agli sviluppatore di attendere il team di produzione o viceversa. Quando le configurazioni della rete e delle macchine virtuali sono applicate attraverso un sistema controllato, è possibile contare su una distribuzione più fluida e veloce. Gli sviluppatori possono poi richiedere container o macchine virtuali attraverso una richiesta automatica con lo stesso livello di stabilità che viene garantito per il codice. Questo si traduce in una migliore gestione delle versioni, più semplice da tracciare.

Articoli correlati

Ricerche correlate