Che cos'è l'Infrastruttura come Codice (IaC)?

Infrastructure as Code (IaC) è un processo che automatizza il provisioning e la gestione delle risorse cloud. Il software IaC riceve alcuni script di input che descrivono lo stato desiderato e poi comunica con il fornitore o i fornitori di cloud, in genere tramite API, per far sì che la realtà corrisponda allo stato desiderato.

Questo articolo tratterà gli aspetti importanti della IaC, a partire da come è nata (ossia, quali problemi ha risolto), seguita dai suoi vantaggi e infine da come integrare la IaC nella sua organizzazione.

Richiedi una Demo Read Whitepaper

Che cos'è l'Infrastruttura come Codice (IaC)?

La necessità di IaC

Una volta, quando un'azienda voleva eseguire un software, l'unica opzione era ordinare alcune apparecchiature fisiche e l'accesso a Internet da un provider di rete. Si trattava di data center in loco, dove le aziende dovevano ordinare server e apparecchiature di rete con settimane o addirittura mesi di anticipo, in base al traffico previsto, e poi provvedere manualmente al loro approvvigionamento in loco. Questo richiedeva una sede fisica con sistemi di raffreddamento e innumerevoli ore per eseguire le installazioni e le operazioni di manutenzione.

Ma poi sono arrivati i data center pubblici, in grado di gestire i server di altre aziende.

La gestione del centro dati è diventata un'attività redditizia a sé stante, con grandi vantaggi per i clienti:

  1. Non c'è bisogno di sale server dedicate e costose
  2. Tempi di consegna potenzialmente più bassi per i server e gli articoli di rete più comuni.
  3. La gestione fisica dei server/attrezzature è gestita dal fornitore del data center.
  4. Liberazione di risorse preziose

L'avvento della virtualizzazione ha portato un'altra evoluzione: il cloud. In un cloud pubblico (o privato), l'apparecchiatura fisica si trova nel data center del fornitore del cloud, che richiede comunque una gestione manuale. I server virtuali sono diventati disponibili per le aziende attraverso le interfacce web, consentendo loro di fornire server e altre risorse in pochi secondi (o minuti per le risorse più grandi). In questa fase, sebbene la virtualizzazione permettesse un provisioning molto rapido, la maggior parte delle operazioni era ancora manuale.

Un ultimo sviluppo è avvenuto con l'avvento dei concetti e degli strumenti IaC. Una volta che il cloud era accessibile attraverso un'API, il provisioning e la gestione delle risorse potevano essere gestiti da script e strumenti automatizzati, anziché dall'uomo. Quindi ora, una volta installate e collegate le apparecchiature fisiche (operazioni ancora manuali), tutto il resto può essere automatizzato, compreso il provisioning di tutte le risorse hardware virtuali.

La possibilità di accedere in modo programmatico ai cloud pubblici ha permesso l'ascesa della IaC. Prima dell'avvento della IaC, gli ingegneri di sistema dovevano passare manualmente attraverso le interfacce web per il provisioning e la configurazione delle risorse. Con l'IaC, il provisioning e la configurazione delle risorse sono descritti in script, che vengono letti da strumenti che comunicano con l'API del cloud pubblico per assicurarsi che la realtà corrisponda allo stato desiderato.

I vantaggi di IaC

Come accennato in precedenza, gli strumenti IaC utilizzano input da script; questi script sono scritti da esseri umani e descrivono uno stato desiderato per le risorse cloud date. Gli strumenti comunicano con il fornitore di cloud attraverso le sue API per creare, aggiornare o eliminare le risorse in modo che la realtà corrisponda allo stato desiderato descritto negli script di input. Rispetto al provisioning e alla configurazione manuali, la IaC offre un'unica fonte di verità (gli script di input), eliminando così la maggior parte degli errori umani.

L'esecuzione di uno script IaC è un'operazione ripetibile, che produrrà lo stesso identico risultato ogni volta. Questo può aiutare in molti modi, ad esempio a..:

  • Distribuisce carichi di lavoro identici in varie sedi e/o per progetti diversi.
  • Creare ambienti separati ma identici (o quasi) (staging, produzione, test, ecc.).
  • Esegua il disaster recovery creando rapidamente un nuovo ambiente identico dagli script IaC e dall'ultimo backup dell'ambiente di produzione.

Gli script IaC possono essere salvati in un repository git, per avere una cronologia della sua infrastruttura. Come ulteriore vantaggio, poiché gli script sono solo testo, è possibile confrontare le versioni per vedere cosa è stato aggiunto, modificato o rimosso.

Un altro vantaggio è che l'IaC consente a un sysadmin junior o a una persona non tecnica di creare un intero carico di lavoro senza conoscenze tecniche. Se configura correttamente il suo account cloud, può persino consentire a un utente con autorizzazioni limitate di creare un tale carico di lavoro attraverso gli strumenti IaC, anche se l'utente non ha i diritti per creare direttamente le risorse. Può anche sfruttare strumenti e modelli aggiuntivi per garantire che le politiche di sicurezza siano implementate prima, per limitare la possibilità di fughe di sicurezza e configurazioni errate da parte di chi istanzia lo stack IaC.

Oltre all'esatta ripetibilità, uno dei migliori vantaggi della IaC rispetto alle operazioni manuali è la scalabilità. In effetti, è sufficiente scrivere gli script IaC una sola volta e i carichi di lavoro possono essere istanziati tutte le volte che si desidera, in modo quasi istantaneo. Infine, dedicando più tempo a creare le giuste autorizzazioni nei suoi script IaC, si può evitare il tipico inconveniente del lavoro manuale di concessione di troppe autorizzazioni a ruoli e risorse.

Come iniziare

In genere, lei desidera automatizzare alcune operazioni che attualmente esegue manualmente. Quindi il primo passo è documentare i passaggi manuali necessari per costruire l'infrastruttura necessaria per il suo carico di lavoro. Questi sono i passaggi che automatizzerà attraverso IaC.

Deve quindi scegliere un software IaC. Non dovrebbe essere una scelta difficile, perché ce ne sono pochi e tutti e tre i principali fornitori di cloud hanno il loro: Amazon Web Services offre CloudFormation, Microsoft Azure offre Azure Resource Manager e Google Cloud Platform offre Google Cloud deployment Manager. L'opzione più nota e indipendente dal fornitore è Terraform, che non solo supporta i tre fornitori di cloud sopra citati, ma anche molti altri.

Successivamente, dovrà scrivere alcuni script per lo strumento IaC di sua scelta, per riprodurre i passaggi manuali che ha documentato. Di solito è una buona idea testarli man mano che si procede. In altre parole: Scrivere un po' di codice IaC, distribuirlo, testarlo e, quando si è soddisfatti che sia buono, passare al pezzo di codice successivo. Se scrive tutto in una volta sola, possono emergere difetti importanti nel suo codice che scoprirà solo dopo molte ore di lavoro, il che significa che potrebbe dover riscrivere una parte significativa dei suoi script.

Spostamento a sinistra

Inoltre, il tema dello Shift Left continua ad essere di tendenza. Questo significa essenzialmente iniziare a testare il più presto possibile e concentrarsi sulla prevenzione dei problemi (invece di rilevarli e risolverli dopo che si sono verificati). L'idea è che la qualità e la sicurezza generale migliorino di conseguenza.

Idealmente, questo Shift Left dovrebbe sfruttare il più possibile l'automazione. In effetti, sono disponibili diversi strumenti per automatizzare alcuni aspetti della scrittura degli script IaC, come la sicurezza e la Conformità. Questi strumenti analizzerebbero il codice prima di qualsiasi distribuzione, per ridurre l'incidenza di problemi come configurazioni errate, impostazioni troppo permissive e vulnerabilità note. Alcuni casi d'uso a questo proposito sono disponibili qui per la sua lettura.

La necessità di un team centralizzato

Per utilizzare correttamente l'IaC, la persona che scrive gli script IaC deve avere una conoscenza approfondita della piattaforma cloud utilizzata. Pertanto, è consigliabile assicurarsi che le parti più critiche del lavoro di IaC siano svolte da ingegneri DevOps senior.

Di solito è una buona idea avere un team di ingegneri DevOps senior (o almeno uno) incaricato di guidare il suo sforzo IaC. Questo team sarà in grado di concentrarsi sulle best practice e sulla sicurezza, fornendo così un modello da seguire per gli ingegneri più giovani. Sarà anche in grado di scrivere moduli generici che possono essere riutilizzati tra gli script IaC all'interno della sua organizzazione, fornendo blocchi di costruzione pre-valutati e facilmente disponibili per gli ingegneri più giovani.

Se la sicurezza è importante, e molto probabilmente lo è, questo team può essere responsabile del controllo dei moduli e del software disponibili pubblicamente. È abbastanza facile trovare alcuni moduli IaC online; Terraform ha persino un repository ufficiale di questi moduli. Tuttavia, tali moduli disponibili pubblicamente potrebbero non essere conformi agli standard di sicurezza applicati all'interno della sua organizzazione o del suo progetto. Pertanto, è importante assicurarsi che il suo team IaC utilizzi solo moduli controllati.

Inoltre, sarebbe una buona idea che il suo team SecOps lavorasse insieme al team DevOps. Tale collaborazione consentirà di ottimizzare i processi DevOps in termini di sicurezza fin dalle prime fasi del progetto. Gli errori rilevati dopo una produzione deployment possono essere molto costosi, soprattutto in termini di relazioni con i clienti. Garantire un'elevata qualità fin dalle prime fasi del processo contribuirà a evitare questo tipo di disastro.

CONCLUSIONI

Anche se si tratta di uno sviluppo recente, oggi la IaC dovrebbe essere parte integrante della strategia di provisioning di qualsiasi organizzazione che richiede risorse cloud e dovrebbe essere valutata almeno per l'inclusione nei suoi team. Qualunque sia la dimensione della sua organizzazione, molto probabilmente desidera che l'IaC gestisca almeno una parte dei suoi carichi di lavoro.

×
  Feedback
Questo sito Web utilizza i cookie per motivi funzionali e a scopo di analisi e marketing. Continuando a utilizzare il sito Web, accetti implicitamente l'uso dei cookie. Per ulteriori informazioni, si prega di leggere la nostra Informativa sui cookie.
OK