Infrastructure as Code (IaC) è un potente paradigma per immaginare, configurare e distribuire un ambiente informatico. Nel modello IaC, un sistema informatico non viene costruito manualmente, ma viene descritto in un file utilizzando un linguaggio specializzato. Uno strumento di automazione legge il file e costruisce il sistema secondo le specifiche dell'utente. L'efficienza e la versatilità dell'IaC ne hanno fatto un complemento popolare di DevOps e della rivoluzione del cloud computing.
Numerose piattaforme di automazione supportano l'IaC, ognuna con caratteristiche e vantaggi diversi. Quando iniziate a immaginare una soluzione IaC, dovrete considerare quali di queste caratteristiche sono più adatte alle vostre esigenze. Una considerazione importante da tenere presente quando si confrontano le piattaforme di automazione IaC è se lo strumento supporta operazioni imperative o dichiarative.
I termini imperativo e dichiarativo ricorrono spesso nelle discussioni sulla IAC. Entrambi i termini si riferiscono al modo in cui l'utente fornisce indicazioni alla piattaforma di automazione. Con uno strumento imperativo, si definiscono i passaggi da eseguire per raggiungere la soluzione desiderata. Con uno strumento dichiarativo, l'utente definisce lo stato desiderato della soluzione finale e la piattaforma di automazione determina come raggiungere tale stato.
I sistemi imperativi sono spesso inizialmente più semplici. Si potrebbe dire che un sistema imperativo è organizzato in modo più simile a come pensa un essere umano. I sistemi imperativi permettono di continuare a pensare alla configurazione come a una serie di azioni o di passi, ognuno dei quali porta alla meta. Un altro vantaggio del linguaggio imperativo è che permette di automatizzare configurazioni molto dettagliate e complesse, costruendo più livelli di comandi. Inoltre, poiché un sistema imperativo offre all'utente un maggiore controllo sul modo in cui svolgere un compito, spesso è più efficiente e più facile da ottimizzare per uno scopo specifico rispetto a un sistema dichiarativo.
Con tutti i vantaggi dei linguaggi imperativi, ci si potrebbe chiedere perché i linguaggi dichiarativi siano così in voga. Gli strumenti dichiarativi stanno guadagnando popolarità da diversi anni e probabilmente sono il formato dominante per l'automazione IaC. Uno dei motivi della popolarità degli strumenti dichiarativi è che richiedono meno conoscenze da parte dell'utente, almeno una volta compreso il loro funzionamento.
Con uno strumento imperativo, l'utente deve avere conoscenze sufficienti per dire alla piattaforma di automazione cosa fare. Con un sistema dichiarativo, l'utente deve solo definire lo stato della configurazione finale e la piattaforma determina come arrivarci. La complessità dell'esecuzione passo-passo è nascosta all'utente.
Un altro vantaggio di un linguaggio dichiarativo è che è più idempotente. Il concetto di idempotenza si riferisce a un processo che può essere eseguito più volte con lo stesso risultato. Poiché un linguaggio dichiarativo si limita a definire lo stato finale, si finisce sempre nello stesso punto, indipendentemente dal punto di partenza. D'altra parte, un linguaggio imperativo concepisce un compito come una serie di passi predefiniti che possono portare a un punto finale diverso a seconda del punto di partenza.
Le principali piattaforme di automazione IaC occupano vari posti nello spettro che va dall'imperativo al dichiarativo, anche se molti strumenti hanno almeno una certa capacità di supportare entrambi gli approcci. Chef è generalmente conosciuto come uno strumento imperativo. Terraform e Puppet sono considerati dichiarativi. Ansible e Salt sono per lo più dichiarativi, ma offrono un certo supporto per i comandi imperativi.
Sono molti i fattori da considerare quando si acquista una piattaforma di automazione IaC. La scelta tra imperativo e dichiarativo è solo un criterio in una matrice più ampia di opzioni. Tuttavia, quando si inizia a progettare il futuro ambiente IaC, è importante dedicare un po' di tempo a visualizzare se una soluzione imperativa o dichiarativa sia più adatta alla propria organizzazione.
Commenti