Infrastruttura come codice: che cos'è e perché dovrebbe interessarti?
Pubblicato il
1 settembre 2020
Di:
Exigo
La necessità è la madre dell'invenzione, certo, ma si può facilmente sostenere che l'invenzione è la madre della necessità, in particolare in un'era guidata dalla tecnologia dell'informazione. Si pensi ad esempio a Internet. La sua invenzione ha dato vita a idee prima inimmaginabili che sono rapidamente diventate necessità. In questa fase avanzata dell'era dell'informazione, la connettività Internet e l'accesso ubiquitario tramite il web sono necessità fondamentali.
Affinché la tua azienda rimanga rilevante e competitiva oggi, non solo è necessaria una presenza sul web, ma anche strumenti che ti consentano di sfruttare la potenza di Internet per semplificare la creazione, la gestione e la distribuzione delle risorse che ospitano la soluzione software adatta al tuo settore. L'infrastruttura come codice è uno dei risultati tecnologici di questa esigenza aziendale.
Che cos'è l'infrastruttura come codice?
L'infrastruttura come codice è un codice che include definizioni leggibili da macchina in grado di automatizzare il processo di provisioning e configurazione delle risorse che ospiteranno una soluzione software.

L'infrastruttura come codice può essere eseguita su un data center in loco per semplificare la gestione delle risorse di tale centro. Può anche contenere codici proprietari che vengono eseguiti in un data center privato e successivamente migrati sul cloud. Questi tipi di soluzioni rappresentano un miglioramento rispetto alla gestione manuale costante dei server bare metal che compongono i data center.
Tuttavia, questo tipo di soluzioni non sfruttano un altro potenziale vantaggio dell'esecuzione dell'infrastruttura come codice. Quando l'infrastruttura codificata è progettata per comunicare direttamente con un cloud utilizzando le interfacce di programmazione delle applicazioni (API) del cloud, essa e la piattaforma su cui è configurata per funzionare sfruttano appieno i vantaggi del cloud, compreso l'accesso illimitato a risorse che utilizzano sempre le tecnologie più recenti.
Microsoft Azure è una delle principali piattaforme cloud pubbliche e ha aperto la strada allo sviluppo delle API e dei modelli di risorse che rendono possibile l'Infrastructure as Code. In Exigo, la nostra Infrastructure as Code comunica con la piattaforma Azure sfruttando queste API per allocare e configurare le risorse. Quando abbiamo sviluppato la nostra infrastruttura e piattaforma codificate, abbiamo utilizzato in gran parte .NET, un linguaggio di programmazione sviluppato da Microsoft che, non a caso, è un cittadino di prima classe in Azure. (Quando dico "cittadino di prima classe", intendo dire che Azure riconosce e accoglie .net e che .net a sua volta funziona bene e comodamente nella sandbox di Azure).
Il nostro utilizzo delle informazioni come codice automatizza il processo di gestione dei nostri data center basati su cloud, creando e fornendo automaticamente nuove risorse (come database e macchine virtuali) secondo necessità.
Perché dovrebbe interessarti?
L'infrastruttura come codice, e in particolare la nostra implementazione della stessa, offre numerosi vantaggi. (Alcuni di questi coincidono con i "Vantaggi del cloud computing").
- Provisioning istantaneo
- Scalabilità
- Test prima del lancio
- Affidabilità
Provisioning istantaneo:
Dall'acquisto alla produttività in un attimo
Quando scegli una soluzione Software as a Service (SaaS) per ottimizzare i processi aziendali della vendita diretta, il tempo necessario per passare dall'acquisto alla produttività può variare da mesi a settimane, o addirittura minuti.
Il modo in cui abbiamo progettato e implementato la nostra infrastruttura come codice consente quest'ultimo, un vantaggio noto come "provisioning istantaneo". Quello che facciamo è che quando decidiamo di creare una risorsa, come un database o una macchina virtuale, utilizziamo un modello Azure Resource Manager (ARM) per definire non solo la risorsa che desideriamo, ma tutte le proprietà associate a tale risorsa, quindi salviamo quel codice in un repository.
Questo ci consente di creare infrastrutture per nuovi clienti semplicemente eseguendo il codice salvato, che a sua volta provvede automaticamente alle risorse necessarie. Ciò ci permette di rendere operativo un cliente entro pochi minuti dalla firma del contratto.
Quando le nuove risorse vengono allocate nel cloud, riceverai automaticamente le credenziali di accesso per poter iniziare a personalizzare la nostra soluzione e, potenzialmente, ricevere il tuo primo ordine nel giro di poche ore.
Scalabilità:
Il cielo è il limite
La scalabilità è la capacità di un sistema di allocare risorse e quindi migliorare le prestazioni in base alle necessità. Esistono due metodi di scalabilità: scalabilità verticale e scalabilità orizzontale.
Il ridimensionamento verticale comporta l'aggiunta o l'aggiornamento dell'hardware esistente. Questo processo richiede una gestione pratica che è costosa e non consente necessariamente un'espansione senza soluzione di continuità.
Il ridimensionamento orizzontale comporta l'approvvigionamento automatico delle risorse quando e come necessario, una piccola funzionalità molto utile resa possibile quando l'infrastruttura è implementata come codice.
La nostra infrastruttura codificata contiene metriche che determinano i requisiti di prestazione, in modo che se il carico di un cliente diventa improvvisamente troppo pesante per le risorse che sta utilizzando, la nostra soluzione provvede automaticamente a fornire un accesso maggiore.
La nostra soluzione è come un elastico che si espande e si contrae per adattarsi rapidamente alle vostre esigenze di aumento o riduzione dei carichi su richiesta. Il processo è fluido, il che significa che non vi accorgerete di nulla, ma potrete semplicemente godere dei vantaggi di ottenere sempre le prestazioni per cui pagate senza dover pagare per risorse che non utilizzate.
Poiché la nostra soluzione è stata progettata per comunicare direttamente con Azure, i nostri clienti ottengono i vantaggi sia del ridimensionamento verticale che di quello orizzontale senza alcuna difficoltà. La nostra soluzione garantisce un ridimensionamento orizzontale automatico e senza interruzioni, mentre Azure gestisce i costi e le difficoltà del ridimensionamento verticale.
In conclusione: quando il tuo sito web necessita di maggiore potenza, la nostra soluzione si adatta al volo per gestire l'aumento del carico. E poiché siamo su Azure, non ci sono limiti al carico che possiamo gestire.
Test prima del lancio:
Assicurazione Smooth Computing
Quando si implementa l'infrastruttura come codice, l'infrastruttura viene trattata come qualsiasi altro codice, con vantaggi che includono aggiornamenti semplici che possono essere testati prima di entrare in produzione.
Con l'infrastruttura come codice, qualsiasi modifica all'infrastruttura può essere apportata in un unico luogo e quindi testata per garantire che sia priva di problemi di compatibilità e integrazione (tra le altre cose) prima di essere messa in produzione.
Ad esempio, quando necessario, Exigo apporta modifiche alla propria infrastruttura codificata, le testa e solo successivamente le applica a tutti gli elementi dell'infrastruttura in produzione direttamente tramite le API di Azure utilizzando i propri modelli online. Questo processo elimina il rischio di errore umano: basta apportare e testare la modifica una sola volta per poi applicarla su tutta la linea.
Affidabilità:
Ripristina i dettagli più piccoli
Un altro vantaggio dell'esecuzione della nostra infrastruttura come codice in Azure è che possiamo fornire la nostra piattaforma in qualsiasi parte del mondo con un semplice clic.
Ad esempio, supponiamo che un data center Azure nella parte orientale degli Stati Uniti smetta di funzionare e che proprio in quel data center fossero in esecuzione il database e altre risorse. Grazie al modo in cui abbiamo progettato la nostra soluzione, siamo in grado di fornire tutto molto rapidamente altrove (Australia, parte occidentale degli Stati Uniti, Europa, ovunque) in modo che il tempo di inattività associato a quel disastro sia minimo, un vantaggio noto come failover.
Infatti, promettiamo ai nostri clienti non solo tempi di inattività minimi in caso di guasto, ma anche una duplicazione esatta di ciò per cui hanno pagato, con tutti i dettagli, tutto come era prima. Tutti i dati Exigo, compresi quelli dei nostri clienti, vengono replicati in tempo reale in più di un data center. Inoltre, tutti i nostri database sono ripristinabili in qualsiasi momento per 35 giorni, il che significa che i nostri clienti possono scegliere qualsiasi minuto, compreso quello attuale, e ripristinare il database esattamente com'era in quel momento.
Le soluzioni SaaS limitate a data center in loco o privati che continuano a gestire i propri database dai propri data center devono sostenere i costi associati alla creazione e alla gestione di sedi ridondanti per garantire il backup in caso di guasti. Questi costi vengono trasferiti direttamente ai clienti. Exigo sfrutta la potenza del cloud Azure per garantire la protezione dei dati a un costo inferiore e sfruttare appieno la portata globale della piattaforma Azure.
Infrastruttura come codice:
Invenzione e necessità
Quindi, quando cerchi una soluzione web-based che soddisfi le tue esigenze aziendali, tieni presente che le soluzioni più veloci ed efficienti si basano su un'infrastruttura come codice che si interfaccia direttamente con un cloud pubblico. Valuta la possibilità di porre domande come queste ai potenziali fornitori di servizi:
- La tua soluzione funziona in locale o nel cloud?
- Quale tecnologia utilizzi per gestire le risorse informatiche e tale tecnologia consente l'infrastruttura come codice?
- La vostra soluzione consente di definire un'infrastruttura codificata tramite API o modello?
- La vostra soluzione automatizza il processo di creazione e provisioning delle risorse?
- La tua soluzione ti garantisce di ottenere sempre ciò che desideri quando crei nuove risorse?
Glossario
Macchina virtuale:una macchina virtuale è un'emulazione di un sistema operativo completo che viene eseguito nella memoria di un altro sistema operativo, fornendo essenzialmente a un singolo computer host le funzionalità di due computer.
API:un'interfaccia di programmazione dell'applicazione (API) è l'intermediario che consente a diversi sistemi informatici di comunicare efficacemente senza che nessuno dei due sistemi debba condividere informazioni riservate. (Immaginate di dover comunicare la stessa richiesta a quattro persone che parlano lingue diverse. Un'API è come un traduttore che comunica il vostro messaggio e restituisce quattro risposte nella lingua che voi comprendete.)
Modello Azure Resource Manager (ARM):utilizzato per implementare l'infrastruttura come codice per le soluzioni Azure. Il modello è un file JSON (Javascript Object Notation) che definisce l'infrastruttura e la configurazione della soluzione. Il modello consente di definire una risorsa senza dover scrivere una sequenza di comandi di programmazione per crearla. In questi modelli è possibile specificare le risorse che si desidera creare e le rispettive proprietà.
Database:insieme strutturato di dati che gira su un computer ed è accessibile elettronicamente.
Data center:un insieme di computer (possibilmente ospitati in un unico edificio o collegati in rete) che memorizzano, elaborano e distribuiscono grandi quantità di dati.
Failover:la capacità di fornire rapidamente un gemello identico di un programma o piattaforma software per ridurre al minimo i tempi di inattività in caso di guasto dovuto, ad esempio, a un disastro naturale.
Alta disponibilità:il processo di esecuzione di più istanze di un programma software, un'applicazione o una piattaforma su server diversi, possibilmente situati in diverse parti del mondo, per garantire zero tempi di inattività. Il processo è efficace ma molto costoso. Con l'alta disponibilità, si pagano risorse di riserva che non vengono utilizzate.
Cloud pubblico:di proprietà e gestito da fornitori terzi, il cloud pubblico fornisce risorse informatiche (come server e archiviazione) tramite Internet. I consumatori accedono a questi servizi utilizzando un browser web.
SaaS:Software as a Service o SaaS (pronunciato "sass") è un metodo di fornitura di software tramite un abbonamento online a cui il cliente accede tipicamente tramite il web. Il SaaS si allontana dal paradigma tradizionale che prevede la creazione di un programma, la sua installazione e il suo funzionamento su un computer fisico.
Scalabilità verticale:il processo di aggiunta di ulteriori risorse a un sistema informatico esistente per aumentare o migliorare in altro modo le prestazioni. Ad esempio, la scalabilità verticale potrebbe comportare l'aggiunta di server bare-metal più potenti a un data center o l'aumento della memoria su quelli esistenti.
Scalabilità orizzontale: il processo di aumento del numero di istanze di una soluzione software per gestire un aumento del carico (e quindi migliorare le prestazioni) o di riduzione delle istanze per garantire che un cliente paghi solo per ciò che utilizza.
Provisioning:il processo di avvio o arresto di un'istanza di una piattaforma in esecuzione nel cloud. Con una piattaforma software in esecuzione su un'infrastruttura come codice progettata per interfacciarsi direttamente con il cloud, l'intera piattaforma può essere avviata con un semplice clic.






