Di Lino Telera – System Architect at InfoCert
Le crescenti richieste del mercato, l’introduzione dei modelli DevOps in continuos integration e delivery e la necessità di delegare il consumo delle risorse al personale non IT, hanno portato aziende grandi e piccole, verso nuovi modelli di infrastruttura e all’introduzione di strumenti di automazione.
Vediamo quindi in dettaglio i concetti e le teconologie a supporto delle pipeline di automazione nel Cloud.
L’automazione nell’IT
Come nella rivoluzione industriale, l’automazione è da sempre considerata come l’elemento chiave in grado di cambiare approcci, tempi e organizzazioni aziendali. Ma nell’IT grazie all’introduzione del Software Defined infrastructure si è potuti superare il limite della “fisicità” di una infrastruttura informatica a favore di un modello dinamico che permette di realizzare sistemi scalabili e efficienti. Questa è la base di un sistema cloud.
Ma allora è possibile essere un cloud provider affidandosi alle semplici infrastrutture presenti nei propri datacener?
La risposta ovviamente è si ma con qualche accorogimento: se da un lato le infrastrutture fisiche basate su processori x86 e ARM sono l’elemento infrastrutturale di base, è necessario aggiungere uno strato software che riaggrega le risorse come CPU, Memoria, Rete e Disco in modo dinamico e on-demand. La differenza con i grandi cloud provider alla fine risiede quindi nella qualità del servizio offerto, nel costo e nei Service Level Agreement.
Con l’avvento delle Cloud-Native application, cioè delle applicazioni di ultima generazione che nascono nel pieno paradigama Cloud, l’esigenza di automatizzare sviluppo e messa in produzione diventa un passo obbligato se si vuole restare allineati con le richeste di mercato riducendo le tempistiche di realizzazione. È naturale che l’automazione implichi cambiamenti di approccio e organizzazione delle attività.
Infatti gli oramai obsoleti canoni di sviluppo delle applicazioni monolitiche e i lunghi e spesso complicati processi approvativi rischiano di minare la competitività. Allora quale modello è in grado di garantire agilità e libertà nelle scelte architeturali rispettando nel contempo le compliance e la sicurezza?
Gli strumenti nella continuous integration e delivery
L’automazione nel cloud segue fedelmente il concetto di continuous integration e delivery. Sia in contesti aziendali rivolti allo sviluppo del software e sia in realtà di consumer finali, l’introduzione di Infrastrcuture as code unito alla predisposizione delle pipeline di CI/CD sono il must-to-have per una gestione applicativa Agile e in grado di ridurre drasticamente il time-to-market.
Quindi occorre ripensare al deploy dell’infrastruttura in modo dichiarativo, cioè attraverso sistemi in grado di attuare tutte le automazioni e le eventuali retroazioni necessarie alla realizzazione dell’infrastruttura desiderata. Occorre quindi abbandonare l’idea del semplice “script” in bash che implementa le API del provider, per andare verso sistemi dichiarativi.
HashiCorp Terraform è una delle tecnologie di punta in grado di automatizzare il delivery e la gestione delle risorse infrastrutturali in modo dichiarativo e nel contempo agnostico rispetto al cloud provider utilizzato. Grazie alle integrazioni sviluppate dal team ufficiale unito dall’elevato numero di contributi da parte della community, le possibilità offerte da questa piattaforma sono davvero illimitate.
Nello stesso eco-sistema di Terraform troviamo Vault, Consul e Boundary, tre strumenti che insieme completano l’automazione con un layer di sicurezza necessario a gestire le Zero-Trust infrastructure, cioè le infrastutture dove gli accessi e policy di sicurezza solo legati ad un ruolo aziendale e non alla conoscenza di credenziali.
Ma la scelta del sistema di infrastrcuture-as-code può ricadere anche nelle soluzioni cloud dependent come AWS CloudFormation. In una infrastruttura full AWS l’impiego degli stack Cloudformation risulta più conveniente, specialmente durante predisposizione degli elementi infrastrutturali di base, come VPC, subnet, Gateway, istanze EC2 che fungono da Bastion-Host, ecc.
Per alimentare in modo automatico il flusso di dati e la gestione del processo infrastructure-as-code servono strumenti come Git e Jenkins che oltre ad essere già noti al pubblico degli sviluppatori rappresentano una soluzione rodata e collaudata per la gestione del codice sorgente e dell’automazione nella costruzione delle applicazioni.
È quindi possibile unire il flusso produttivo del software con quello di delivery degli elementi infrastrutturali necessari per completare la gestione dell’intero ciclo di vita delle Cloud-Native Application.
L’automazione nell’hybrid cloud
Il posizionamento del sistema di automazione in modello ibirdo è una decisione critica: da un lato occorre sgravare i sysadmin dall’onere di gestione dei sistemi coinvolti, dall’altro occorre localizzare il baricentro dell’esecuzione dei processi aziendali in una infrastruttura cloud pubblica o privata che risulti compatibile con i futuri cambiamenti. Di fatto avere l’automazione in cloud mediante AWS, costituita quindi da elementi specifici come AWS Step Function e AWS DynamoDB potrebbe non essere la scelta giusta specalmente in realtà aziendali dinamiche dove non esistono contatti pluriennali con un singolo cloud provider.
In linea di principio è sempre bene sviluppare la filiera di automazione utilizzando tecnologie portabili come containers e strutture dati relazionali o nosql supportate da sistemi standard.
In conclusione, l’automazione è la chiave di utilizzo dei sistemi cloud e la sua implementazione diventa un elemento portante sia per lo sviluppo delle applicazioni di ultima generazione e sia per il consumo sicuro e efficiente delle risorse infrastrutturali. Anche se la sua implementazione non è facile, i risultati nel lungo periodo sono apprezzabili sia nei tempi di realizzazione delle applicazioni e sia nella qualità del software costruito con questo paradigma.
Quindi con un colpo d’occhio alla sicurezza e l’adeguata formazione del personale, il mio consiglio per le aziende che approcciano al cloud è quello di implementare fin da subito un adegauto sistema di automazione coinvolgendo tutti gli interlocutori che direttamente o indirettamente utilizzeranno questo strumento.
Autore: