Skip to main content

Cosa chiedono le aziende alle proprie applicazioni? Di fatto, che siano utili e soddisfino le esigenze degli utenti. Tuttavia, in mercati sempre più competitivi, questo è possibile solo se l’applicazione è sempre disponibile, gestisce al meglio i picchi di richieste, può essere aggiornata anche ogni giorno o più volte al giorno, è sicura ed è gestibile in modo efficiente, senza sprechi di risorse. Per soddisfare tutti questi requisiti, diventa indispensabile adottare un approccio moderno nei confronti dello sviluppo, del deployment e, più in generale, della gestione dei sistemi software, un approccio che si chiama Cloud Native.

Cloud Native, l’approccio moderno alla creazione e gestione delle app

Al di là dell’ovvia interconnessione con i servizi e le piattaforme cloud, non è facile fornire una definizione di Cloud Native, perché il fenomeno può essere osservato sotto diverse prospettive.

Per esempio, la Cloud Native Computing Foundation (CNCF) ne dà una definizione abbastanza tecnica, laddove afferma che si tratta dell’impiego di:

software open source e di tecnologie quali container, microservizi e service mesh per sviluppare e distribuire applicazioni scalabili su piattaforme di cloud computing”.

Per quanto CNCF descriva bene i pilastri tecnici del Cloud Native, altre definizioni adottano un livello di astrazione maggiore parlando di approccio moderno alla creazione e alla gestione del software. Oltre a specifici pattern applicativi e infrastrutturali, questo approccio comporta la necessità di strutturare team e cultura per gestire al meglio la complessità del software e diventare più agili e veloci a rispondere alle esigenze del mercato. Non a caso, oltre a componenti tecnici come i microservizi e i container, che mantengono un ruolo chiave, l’automazione e l’approccio DevOps sono parte integrante del paradigma, che di conseguenza riguarda il modo in cui le app vengono create e gestite, non dove risiedono.

Le tecnologie Cloud Native permettono infatti alle aziende di sfruttare dinamicamente molteplici ambienti IT e tipologie diverse di cloud, dalla declinazione pubblica degli hyperscaler come AWS e Azure ai cloud privati e ibridi, compresa la variante multicloud che le aziende adottano per ottimizzare i costi e i rischi, ovvero per contenere l’effetto lock-in.

I pilastri del Cloud Native, dai microservizi al DevOps

Come detto, Cloud Native è un nuovo paradigma a tutto tondo, che non riguarda solo le architetture e gli approcci di sviluppo del software; esso coinvolge infatti tutti i componenti dei sistemi software, dall’infrastruttura (rigorosamente API-driven e basata sul principio della immutable infrastructure) alle applicazioni, ma senza dimenticare il modo in cui i dati vengono gestiti, elaborati e condivisi. L’obiettivo ultimo è quello di realizzare sistemi scalabili, sicuri, moderni e affidabili controllando e gestendo in modo agile tutti gli elementi che condizionano l’esito finale.

Pur nella sua intrinseca complessità, il nuovo paradigma si basa su alcuni pilastri riconosciuti universalmente.

Architettura a microservizi

Nell’ambito dei pattern architetturali, i microservizi sono il pilastro del mondo Cloud Native. Questo approccio, che rappresenta un’evoluzione di SOA (Service Oriented Architecture), prevede la suddivisione dell’applicazione in tanti servizi indipendenti, ognuno con una specifica funzione.

Il microservizio può essere sviluppato, distribuito e scalato in modo autonomo, da cui molta più flessibilità, razionalizzazione dei costi e resilienza rispetto alle architetture monolitiche. È inoltre possibile isolare le criticità del singolo microservizio, impedendone la propagazione all’intera applicazione. Da notare, infine, un aspetto curioso ma anche centrale nel modello Cloud Native: i microservizi della stessa applicazione possono usare linguaggi, runtime e framework diversi.

In un contesto Cloud Native, il tema dell’Observability, che è fondamentale per ottimizzare le prestazioni dei sistemi hardware e software, non si basa più sul monitoraggio del singolo server, bensì del singolo servizio, con un livello di granularità straordinario.

Container e orchestrazione

Passando all’ambito infrastrutturale, i container sono unità software leggere e autonome comprendenti tutto il necessario per l’esecuzione dell’app: codice, librerie, dipendenze e configurazioni. Tenendo fede al loro nome, i container isolano l’applicazione dal contesto, e per questo sono ideali per un paradigma flessibile che prevede la distribuzione dinamica delle app su ambienti diversi.

Dal canto suo, l’orchestrazione dei container è il processo che gestisce automaticamente il loro deployment, dimensionamento e funzionamento in ambienti cloud distribuiti. Strumenti come Kubernetes, che assolvono proprio a questo scopo, sono fondamentali nell’universo Cloud Native poiché si fanno carico di gestire le risorse e di bilanciare costantemente il carico, potenziando la resilienza e la scalabilità delle applicazioni.

Integrazione e distribuzione continue (CI/CD)

Potremmo definire le pipeline di Continuous Integration e Continuous Delivery come un insieme di principi operativi che permettono ai team di sviluppo di offrire integrazione (CI) e deployment (CD) continui con tempi di inattività pari a zero. In particolare, la Continuous Integration è un processo in cui il codice viene integrato frequentemente in un repository condiviso e sottoposto a build e test automatici, mentre la CD estende il medesimo meccanismo al processo di rilascio del software, assicurando che le modifiche possano essere distribuite in produzione velocemente e in modo sicuro.

DevOps

Strettamente connessa al pilastro precedente, DevOps è una metodologia Agile che rende sinergici i processi di sviluppo software (Dev) e le operations IT (Ops), con l’obiettivo di accelerare il time-to-market, incrementare la collaborazione tra i team e migliorare la qualità del software. DevOps rappresenta un importante cambiamento culturale rispetto al passato, in cui i team lavoravano in silos separati.
BUSINESS CASE

Infrastruttura applicativa per una Banca con Kubernetes e GitSecOps

Cloud Native, perché è la strada giusta per le aziende?

Non è facile riassumere in un articolo l’essenza di un paradigma complesso come Cloud Native, ma è decisamente più abbordabile spiegare perché le aziende dovrebbero investirci concretamente e da subito, magari facendosi assistere da partner esperti sia sotto il profilo strategico che dell’implementazione.

1

Competitività

Il primo motivo ha a che fare con la competitività, ed è l’argomento più efficace di tutti. Le aziende basano buona parte delle aspettative di successo sulla loro capacità innovativa, e questa dipende in larga parte dai loro sistemi software, in termini di qualità, ma soprattutto di integrazione continua di nuove funzionalità e tecnologie (si pensi a tutto il capitolo dell’AI). Cloud Native, come sottolineato, allinea le applicazioni aziendali alle esigenze del mercato, del business e a tutta l’evoluzione tecnologica sottostante.
2

Costo

Semplificare, rendere modulare e riutilizzabile il software (principio dei microservizi e delle Packaged Business Capabilities), ma anche automatizzare i processi di integrazione e di distribuzione ha un impatto positivo sul costo dell’intero ciclo di vita delle applicazioni.
3

Disponibilità, scalabilità e conformità

Le applicazioni Cloud Native sono resilienti perché si basano su un’infrastruttura containerizzata e su piattaforme di orchestrazione (es, Kubernetes) che la rendono scalabile e fault tolerant, cioè resiliente. Questo garantisce uptime molto elevati che aiutano le aziende ad essere conformi con la loro normativa di riferimento.
4

Sicurezza

Le applicazioni cloud native possono contare su elevati livelli di sicurezza dovuti a molteplici fattori. Intanto, all’impiego dei container che di fatto “isolano” le applicazioni, ma anche (e soprattutto) alla possibilità di integrare pratiche DevSecOps nel ciclo di vita dello sviluppo del software, fattore che automatizza i controlli di sicurezza e garantisce aggiornamenti e patch costanti. Strumenti avanzati di monitoraggio e observability offrono infine una visibilità continua, facilitando la rilevazione di comportamenti anomali.

Per quanto concerne, infine, il percorso di adozione, tutto dipende dal modo in cui l’azienda sta attualmente sviluppando e gestendo i suoi sistemi software. Spesso, il percorso comprende attività di modernizzazione applicativa, con contestuale evoluzione verso il paradigma Cloud Native. Il percorso non è banale, richiede una pianificazione strategica e un approccio graduale e progressivo per garantire una migrazione senza intoppi. Data la criticità del tema, è sempre auspicabile farsi accompagnare da un Cloud Native Service Provider esperto, che si faccia carico non soltanto delle inevitabili attività tecniche, ma anche di supportare l’azienda in tutte le fasi del cambiamento.

Diventa più competitivo con un percorso strategico di modernizzazione IT basato sull’approccio cloud native

Paolo Varalta

Autore Paolo Varalta

Amo l'automazione, il monitoraggio e la documentazione. In Intesys Networking mi occupo di definire e implementare i vari servizi gestiti offerti dall'azienda e di aiutare le aziende ad approcciare il Cloud e le tematiche di sicurezza.

Altri post di Paolo Varalta
CONTATTACI