Il cloud offre molti vantaggi al moderno processo di sviluppo delle applicazioni di un’azienda. Uno dei più significativi è la capacità di automatizzare azioni critiche che tradizionalmente richiedevano passaggi manuali. L’automazione è forse il singolo vantaggio più significativo dell’utilizzo del cloud e gli architetti del cloud la stanno sfruttando sempre di più laddove possibile, come dimostrano le seguenti cinque operazioni che andrebbero automatizzate durante la progettazione, la creazione e la distribuzione di applicazioni ospitate nel cloud.

Scalabilità

Lo scaling automatizzato è il più fondamentale ed essenziale processo di automazione per l’utilizzo del cloud. Sia che si parli di auto-scaling delle risorse del server, sia che si intenda lo scaling elastico integrato in servizi cloud-native come Amazon S3 e DynamoDB, lo scaling è una parte essenziale del cloud. La creazione di un’infrastruttura scalabile è uno dei motivi principali per cui le persone passano al cloud, ma gran parte di questa scalabilità automatizzata richiede l’avvio di nuove istanze del server in modo rapido e indolore, il che ci porta alla prossima automazione.

Provisioning del server

Nei giorni prima del cloud, il provisioning di un nuovo server poteva richiedere giorni o settimane. L’automazione del cloud consente invece il provisioning di un’istanza server completamente funzionale e operativa (con tutti i software e i servizi richiesti installati e in esecuzione) in pochi minuti. Il provisioning automatizzato dei server non è la chiave solo per lo scaling automatico, ma anche per le infrastrutture autoriparanti (un’altra forma di automazione del cloud). Terminare un’istanza del server guasta o compromessa e lasciare che l’automazione la sostituisca con una nuova cambia il modo in cui avviene la risoluzione dei problemi nel cloud. Questa capacità è fondamentale per migliorare l’MTTR (tempo medio di risoluzione) di molte classi di problemi ed errori.

Il provisioning automatizzato del server funziona allo stesso modo se state avviando nuove istanze di macchine virtuali in un servizio di calcolo come Amazon EC2 o nuove istanze di container in un ambiente Kubernetes come Google Kubernetes Engine. In entrambi i casi, l’automazione migliora sia la velocità, sia l’affidabilità durante l’avvio, lo scaling e la riparazione delle istanze del server, cosa fondamentale per la maggior parte delle applicazioni abilitate per il cloud.

Un altro vantaggio del provisioning automatico dei server è la migliore disponibilità. Automatizzare il provisioning significa che un numero inferiore di server più grandi può essere facilmente sostituito con un numero maggiore di server più piccoli. Tale modello può migliorare notevolmente la disponibilità di un’applicazione, riducendo l’impatto dei guasti. Il provisioning automatico dei server funziona però solo se anche il resto dell’infrastruttura necessaria per il funzionamento dei server può essere configurato in modo rapido e semplice. Questo ci porta alla prossima automazione.

Creazione di infrastrutture

Il provisioning automatico dei server non è, di per sé, sufficiente per far funzionare la vostra applicazione cloud e servire gli utenti. È inoltre necessario eseguire il provisioning dei bilanciatori del carico, dei firewall, dei segmenti di rete, dei database e di qualsiasi altro servizio su cui si basa l’applicazione,. Tutta l’infrastruttura di supporto deve essere impostata, configurata e connessa all’applicazione prima che sia completamente funzionante.

Tutto questo provisioning può richiedere molto tempo se eseguito manualmente. Se eseguivate la distribuzione in un data center locale, potevano essere necessari giorni o più per configurare tutti i componenti necessari. Nel cloud, tuttavia, una tecnica di automazione nota come Infrastructure as Code (IaC) consente di eseguire il provisioning dell’infrastruttura dell’applicazione utilizzando le chiamate alle API.

IaC consente di specificare come volete configurare la vostra infrastruttura nel codice sorgente (spesso un file JSON o YAML), che può essere gestito utilizzando i tradizionali sistemi di controllo della versione del software (come Git). Quindi, si prende la configurazione dell’infrastruttura codificata e la si fa passare attraverso uno strumento che eseguirà automaticamente il provisioning, la configurazione e la connessione dei componenti dell’infrastruttura a una rete funzionante. Sono disponibili molti strumenti che eseguono questo livello di automazione dell’infrastruttura cloud. Due strumenti popolari sono Terraform di HashiCorp e CloudFormation di AWS.

automazione intelligente

L’infrastruttura come codice offre vantaggi esclusivi al processo di provisioning dell’infrastruttura, tra cui il controllo e l’approvazione delle modifiche, il rilevamento delle modifiche e il riutilizzo del codice dell’infrastruttura. L’infrastruttura come codice è possibile solo in un data center cloud o simile a un cloud, dove le API dell’infrastruttura consentono la creazione automatizzata dell’infrastruttura. Gli architetti cloud dovrebbero sfruttare gli strumenti IaC per creare modelli cloud affidabili, sicuri e ripetibili per il provisioning dell’infrastruttura. La configurazione automatizzata dell’infrastruttura basata sulla gestione del codice porta alla nostra prossima automazione.

Distribuzione del codice

Le pipeline di distribuzione automatizzata del codice non sono univoche per il cloud. Ma dato l’uso massiccio di altri tipi di automazione, le distribuzioni di codice automatizzato sono un’estensione naturale per le applicazioni abilitate per il cloud e sono fortemente utilizzate dagli architetti del cloud.

Uno dei metodi più popolari di distribuzione automatizzata del codice è la pipeline CI/CD. CI/CD (integrazione continua/distribuzione continua), modello che consente di applicare automaticamente le distribuzioni del codice alle applicazioni di produzione in base al codice archiviato in un sistema di controllo della versione del software (di nuovo, come Git). A seconda dell’applicazione e delle policy aziendali, le distribuzioni automatizzate possono essere pianificate (ad esempio giornalmente o ogni ora), oppure attivate ogni volta che viene apportata una modifica alla base di codice e resa disponibile per la distribuzione.

Sono disponibili molti strumenti per abilitare le distribuzioni automatizzate del codice (Jenkins, Bamboo, GitLab, CircleCI, AWS CodeDeploy e altri ancora). Ognuno di questi funziona in modo diverso e l’architetto del cloud deve scegliere la giusta strategia di automazione per soddisfare le esigenze dell’organizzazione. Tuttavia, tutte (o quasi) le applicazioni sofisticate con architettura cloud utilizzano una qualche forma di distribuzione automatizzata del codice.

Servizi cloud nativi

Spesso trascurato come tipo di automazione, è lo scaling dinamico automatizzato integrato in molti servizi cloud. I servizi di queuing nel cloud (come Amazon Simple Queue Service), l’archiviazione dei dati nel cloud (come Amazon S3) e i database nel cloud (come Amazon DynamoDB) fanno molto affidamento sull’automazione per gestire le esigenze di scalabilità delle applicazioni dinamiche che li utilizzano.

Gli architetti del cloud spesso preferiscono utilizzare un archivio dati come S3 rispetto alla creazione del proprio archivio dati perché è semplice, sicuro, affidabile, facile da integrare e automatico nella sua funzionalità. Lo stesso si può dire per molti altri servizi forniti dai cloud pubblici. Usandoli, potete approfittare dell’automazione che avviene in background.

Cloud significa automazione

L’automazione è una delle caratteristiche distintive del cloud ed è uno degli elementi che distingue il cloud dal data center tradizionale. Ovviamente, potete eseguire la vostra applicazione nel cloud senza sfruttare l’automazione (e molti lo fanno), ma vi state perdendo qualcosa di molto utile. L’automazione è infatti la strada per migliorare coerenza, affidabilità, sicurezza, scalabilità e reattività alle esigenze della vostra azienda.

Il sollevamento e lo spostamento di un’applicazione locale nel cloud “così com’è” è una migrazione relativamente semplice e diretta e in genere non richiede un architetto cloud qualificato per l’implementazione. Ma un’applicazione del genere perde la maggior parte dei vantaggi dell’esecuzione in un cloud. La creazione di un’applicazione realmente abilitata per il cloud richiede un architetto del cloud, ma trarrà vantaggio da tutto ciò che il cloud ha da offrire.

E praticamente qualsiasi applicazione con architettura cloud farà un uso massiccio dell’automazione. Ecco perché un buon architetto cloud automatizzerà il più possibile ed ecco perché dietro alle distribuzioni delle applicazioni di maggior successo c’è l’automazione del cloud.