Cos'è l'Infrastructure as Code (IaC)?

L'Infrastructure-as-code (IAC) consente a sviluppatori/sviluppatrici e team operativi di gestire automaticamente i data center dei computer utilizzando file di definizione leggibili da computer.

Denominata anche infrastruttura definita tramite software o programmabile, IAC esprime gli strumenti fisici di configurazione e configurazione hardware per file di configurazione digitali ripetibili. Utilizzando un linguaggio di codifica descrittivo di alto livello, IAC automatizza il provisioning dell'infrastruttura IT ed elimina la necessità di gestione e provisioning manuali degli elementi dell'infrastruttura, quali server, storage e connessioni di database. L'IAC è una pratica chiave di DevOps e consente un insieme più semplificato di processi per lo sviluppo e la distribuzione di nuove applicazioni software. L'IAC offre un modo per eseguire uno "shift-left" nella gestione dell'infrastruttura, il che significa che può essere sotto il controllo di sviluppatori/sviluppatrici o team DevOps piuttosto che essere un passaggio manuale alla fine della pipeline di distribuzione.

A prima vista, potrebbe sembrare che l'infrastructure-as-code non sia in grado di portare nulla di nuovo nella discussione: sta semplicemente cambiando quello che tradizionalmente è stato una task manuale (configurazione dell'infrastruttura IT) e trasformandola in un'infrastruttura digitale. Ma con questo passaggio vengono fornite le soluzioni a diversi problemi chiave che si trova ad affrontare il personale IT da decenni.

Difficoltà nella gestione dell'infrastruttura IT

La gestione dell'infrastruttura IT non è solo complessa e intensiva, ma è anche costosa. In ogni fase del processo, ingegneri, tecnici della manutenzione e altri/e devono essere a disposizione per eseguire le task essenziali. Le organizzazioni devono essere in grado di soddisfare le esigenze salariali di questi/e esperti/e. Inoltre, garantire un corretto coordinamento e l'implementazione delle risorse richiede un aumento dei costi di gestione.

I problemi di monitoraggio e visibilità sono allo stesso modo potenziali problemi nella configurazione tradizionale. La configurazione dell'infrastruttura tradizionale si basa su più persone o team, creando incoerenza e spesso rendendo estremamente difficile il monitoraggio e l'ottimizzazione delle prestazioni. Tale incoerenza può inoltre causare problemi di configurazione errata in cui viene utilizzato un parametro errato che può comportare conseguenze potenzialmente gravi. L'errata configurazione è stata ritenuta responsabile di interruzioni di sistemi di alto profilo che hanno colpito molte persone.

Infine, poiché la configurazione manuale dipende dall'impostazione di nuovi server da parte degli amministratori di sistema, risponde lentamente a un aumento della domanda. Quando il fabbisogno di risorse aumenta, la configurazione manuale può impedire uno scaling efficace e rendere difficile per le aziende gestire l'aumento del carico. Inoltre, senza server di backup disponibili, la disponibilità delle applicazioni ne risente.

Le sfide di DevOps

DevOps incontra i suoi problemi quando lavora con le tecniche di configurazione tradizionali. Invece di identificare ed eliminare le configurazioni errate e altri problemi durante il processo di compilazione, la gestione tradizionale fa in modo che questi problemi rimangano inosservati fino al runtime. Inoltre, dovendo riallocare le risorse degli sviluppatori/sviluppatrici per risolvere questi problemi in fase di esecuzione, le organizzazioni sono costrette a sottrarre professionisti/e esperti/e ad altre task importanti, senza risolvere effettivamente il problema principale.

Inoltre, l'infrastruttura appena configurata deve essere in grado di unirsi all'ambiente esistente dell'organizzazione. La configurazione manuale può creare problemi di sicurezza e conformità nel contesto dell'ambiente più ampio, soprattutto perché il cloud è un'entità dinamica e in continua evoluzione.

Un Infrastructure as Code efficace fornisce soluzioni a molti dei problemi e delle inefficienze associati alla configurazione tradizionale dell'infrastruttura. Con l'IAC, le organizzazioni possono usufruire dei seguenti vantaggi:

Velocità superiore

Con l'IAC, è possibile creare un'infrastruttura completa in modo facile e rapido, semplicemente eseguendo uno script. Ciò è possibile in ogni fase del ciclo di vita dello sviluppo del software, indipendentemente dall'ambiente.

Grafico che mostra i vantaggi dell'IAC

Coerenza affidabile

Quando la configurazione è responsabilità del personale IT umano e dei team operativi, le discrepanze sono inevitabili. Tuttavia, quando i file IaC esistono come fonte primaria di verità, le organizzazioni possono aggiungere strumenti e politiche di gestione dei dati di configurazione per distribuire in modo coerente le configurazioni giuste tutte le volte che è necessario.

Monitoraggio e responsabilità migliorati

Un vantaggio talvolta trascurato dei file dell'IAC è che mantengono un registro chiaro di tutte le modifiche. I team possono facilmente esaminare quali modifiche sono state apportate, quando e (nel caso in cui la responsabilità diventi un problema) da chi. Inoltre, poiché l'IAC mantiene le versioni precedenti in un archivio accessibile, gli sviluppatori/sviluppatrici possono tornare alle istanze precedenti e ridistribuire gli ambienti precedenti in caso di problemi.

Efficienza ottimale

Attraverso la codificazione e l'automazione della distribuzione delle architetture di infrastruttura, le organizzazioni possono aumentare significativamente l'efficienza e la produttività durante tutto il ciclo di vita dello sviluppo. I test possono essere eseguiti contemporaneamente in più ambienti di staging, che possono essere creati e implementati in pochi minuti. Allo stesso tempo, l'IAC semplifica l'integrazione di tecniche di integrazione e distribuzione continua.

Costi ridotti

Nel complesso, forse i maggiori vantaggi dell'IAC sono la riduzione dei costi e l'aumento dei ricavi. Automatizzando la configurazione e la distribuzione, le organizzazioni hanno ridotto molte delle spese associate a hardware, personale, formazione e gestione, consentendo al personale IT esperto di rifocalizzare le proprie energie su task che apportano maggiore valore.

A ciò si aggiungono la velocità, la coerenza e l'efficienza sopra citate e diventa più chiaro come gli investimenti nell'IAC siano in grado di rendere da soli in modo estremamente rapido.

L'IAC utilizza la stessa versione utilizzata da DevOps per il codice sorgente. In effetti, DevOps considera l'IAC come qualsiasi altro sviluppo di codice nella toolchain di DevOps. Ciò significa che qualsiasi modifica al codice dell'infrastruttura viene gestita insieme al resto delle task di DevOps.

DevOps può anche applicare policy alle modifiche dell'IAC e consentire il monitoraggio e l'approvazione automatizzati dei cambiamenti, ad esempio tramite l'uso di DevOps di ServiceNow per i cambiamenti automatizzati. L'IAC consente inoltre a DevOps di creare facilmente ambienti di test identici per la produzione in qualsiasi fase del ciclo di sviluppo, riducendo la probabilità di problemi di distribuzione potenzialmente critici. Con l'IAC, DevOps è maggiormente in grado di coordinare in modo efficace l'utilizzo di pratiche e strumenti coerenti e di fornire applicazioni e infrastrutture in modo rapido, affidabile e con la capacità di scalare per soddisfare la domanda.

Nel processo CI/CD, il controllo Infrastructure-as-code viene spostato dal personale delle operazioni IT agli sviluppatori/sviluppatrici. In questo modo, i team DevOps possono trattare le modifiche dell'infrastruttura come qualsiasi altro codice e applicare strumenti e prodotti DevOps e site reliability engineering (ingegneria dell'affidabilità del sito) (SRE) per fornire una supervisione attraverso l'intero flusso di valore.

Ottenere il massimo da una strategia IAC significa identificare e seguire le Best practice. Questi suggerimenti comprovati possono aiutare a garantire un approccio IAC efficace alla configurazione e all'implementazione.

Evitare la documentazione per le specifiche

La documentazione esterna delle specifiche dell'infrastruttura è imprecisa e facile da perdere di vista. Abbandona la pratica della documentazione esterna e codifica invece le specifiche nei file di configurazione stessi, dove saranno sempre precise e disponibili.

Riconosci il codice come unica fonte di dati

Come menzionato nel punto precedente, è preferibile codificare le specifiche dell'infrastruttura nei file di configurazione rispetto all'uso della documentazione esterna. Una volta codificate tali specifiche, fare riferimento ai file di configurazione come unica fonte di dati per tutte le informazioni relative alla gestione dell'infrastruttura.

Esegui un test completo

Uno dei vantaggi del codice rispetto alla configurazione fisica è che il codice può essere testato. Utilizza strumenti di test IAC per garantire che le configurazioni siano prive di errori e incoerenze prima di passare alla produzione.

Controllo delle versioni totale

Poiché l'IAC si adatta così bene all'approccio ci/CD allo sviluppo, può muoversi a un ritmo incalzante. Assicurati che, man mano che vengono implementate nuove modifiche, le vecchie versioni siano disponibili in modo sicuro utilizzando il controllo della sorgente. Ciò consente ai team di rivedere e ricaricare le versioni precedenti nel caso in cui le nuove distribuzioni creino problemi imprevisti.

ServiceNow e IAC

Come già detto, l'errata configurazione rappresenta una sfida importante per l'infrastruttura. Viene spesso accusata di falle nella sicurezza, di esposizione di dati privati e di interruzioni significative del sistema che interessano milioni di utenti.

Nel 2020 ServiceNow ha acquisito un'azienda chiamata Sweagle, che ora fa parte del portfolio DevOps come DevOps Config. DevOps Config fornisce una posizione centrale per la gestione dei dati di configurazione. In questo modo si risolvono i problemi rimanenti dei team DevOps quando si utilizza l'IAC, vale a dire:

  • I controlli di accesso possono essere applicati ai dati di configurazione e solo agli/alle utenti autorizzati/e è consentito apportare modifiche e definire i file di configurazione da utilizzare nell'IAC. Ciò aiuta a proteggere le password e altri dati sensibili e impedisce modifiche che potrebbero altrimenti verificarsi negli strumenti di configurazione stand-alone.
  • Le policy possono essere applicate alle informazioni di configurazione. Ad esempio, è comune utilizzare database diversi per testare un'applicazione anziché usarla direttamente in produzione. La policy può convalidare che la stringa di configurazione del database venga modificata correttamente nell'IAC tra i test interni e il rilascio in produzione.
  • Il sistema è in grado di apprendere dalle configurazioni precedenti che hanno causato problemi. L'intelligenza artificiale e la machine learning possono essere applicate per contribuire a scrivere nuove policy e garantire che il problema non si ripresenti.
  • Il luogo centrale per la gestione delle configurazioni dell'infrastruttura offre la supervisione che un unico repository consente. Non è necessario cercare nei repository di codice Git, negli strumenti di configurazione di rete e in altre fonti per comprendere le configurazioni: sono tutte disponibili in un unico luogo. Questo include anche la possibilità di conservare un'istantanea delle versioni di configurazione precedenti, per aiutare nella risoluzione dei problemi successivi.

Funzionalità che crescono con la tua azienda

Espandi il successo di DevOps a tutta l'azienda. Aumenta la velocità senza rischi e riduci al minimo gli attriti tra Operazioni IT e sviluppo.

Contatti
Demo