Dall'archivio articoli > DevOps
Infrastructure as Code con Terraform
Per poter utilizzare questa funzionalità, devi fare il login o iscriverti.
Senza buttare uno sguardo al passato, è evidente che la trasformazione digitale che stiamo vivendo, soprattutto in ambiti legati al cloud, sia senza precedenti. È sempre più importante, infatti, stare al passo con i tempi, adottare tecniche innovative di sviluppo ed essere pronti a soddisfare tutte le richieste che arrivano dagli utilizzatori del nostro software, che sono sempre più esigenti.
Indipendentemente dal fatto che si parli di startup o di enterprise, la trasformazione digitale e in generale il cloud computing ha avuto grossi impatti su come compiliamo il software, come lo distribuiamo, come lo rendiamo accessibile su scala globale, come lo rendiamo scalabile e fruibile da milioni di persone.
Pensandoci bene, soprattutto in ambito corporate, richiedere un server in più per distribuire una nuova applicazione web o per allocare nuove virtual machine era un'operazione che richiedeva potenzialmente settimane: si passava dalla richiesta iniziale con la definizione dei requisiti, passando per la revisione del budget, approvazioni da parte di manager di vario titolo per arrivare, solo giorni (o peggio settimane) dopo, a comprare l'hardware necessario per fare il vero e proprio provisioning e configurazione dell'infrastruttura richiesta.
Quello che fino a qualche anno fa era fantascienza, oggi è standard: per fare il provisioning di un nuovo server o di un database ci basta fare un paio di click in Azure (o in una qualsiasi altra piattaforma) e nel giro di secondi (o peggio minuti) abbiamo tutto ciò che ci serve, disponibile ovunque nel mondo e con protezione dei dati.
Effettuare uno spin-up rapido delle risorse tramite UI dei cloud vendor ha indubbiamente portato un sacco di vantaggi nel modo in cui lavoriamo. Ad esempio:
Per quanto facile sia andare verso il cloud e creare risorse con un semplice click, il processo è ancora manuale e, in quanto tale, ancora potenzialmente soggetto ad errori umani. Inoltre, può essere difficile conoscere l'intera infrastruttura di una realtà grande come quella aziendale e capire come far scalare delle istanze di un determinato servizio tenendo la stessa configurazione delle precedenti già deployate, spesso la documentazione è introvabile e così via. I vantaggi derivanti dal cloud favoriscono certamente un'evoluzione, ma introducono anche nuove problematiche che dobbiamo risolvere.
Per cercare di risolvere tutti questi problemi nasce Infrastructure as Code (IaC).
"Infrastructure as code is an approach to managing IT infrastructure for the age of cloud, microservices and continuous delivery." – Kief Morris, head of continuous delivery for ThoughtWorks Europe.
Fare Infrastructure as Code significa, come detto giustamente nella citazione riportata, essere più agili nel fare il provisioning e nel gestire tutta l'infrastruttura. Questo può essere fatto seguendo un approccio semplice ma funzionale: tutta l'infrastruttura è descritta e definita esattamente come il software e, pertanto, questa può adottarne tutti i benefici, tra cui:
I benefici, come abbiamo visto, sono innumerevoli e non si fermano qui, ma per questi invitiamo ad approfondire l'argomento poiché i vantaggi dipendono anche dal luogo target in cui fare il deployment.
Come approcciamo il tema di Infrastructure as Code? Nonostante possa sembrare strano, come abbiamo già visto più volte per DevOps, la parte più complessa è sempre il cambio di mindset per approcciare questa nuova modalità di lavoro, mentre la parte tecnica è, invece, la più semplice. All'interno dell'articolo cercheremo naturalmente di far emergere la componente tecnica, nella speranza che questo possa aiutare a capire il perché sia comodo sfruttare meccanismi di questo tipo e ci auguriamo che il mindset verrà di conseguenza.
Se guardiamo tutto il landscape dei tool disponibili, spaziamo tra Chef, Puppet, Ansible, CloudFormation e moltissimi altri. Se guadiamo il panorama Microsoft-oriented, ci sono diversi strumenti che ci permettono di definire l'infrastruttura come codice in Azure:
Bicep è ancora in fase di definizione del linguaggio, pertanto è molto difficile poterne parlare ora. Tuttavia, esiste Terraform, che si pone esattamente a metà tra i tool "generalisti" e quelli Microsoft, che fa uso di un linguaggio custom, chiamato HCL, adatto per qualsiasi esigenza e il cui provider per Azure è sviluppato proprio da Microsoft.
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.