Che cos’è lo sviluppo Cloud Native?

Si sente sempre più spesso parlare di sviluppo cloud-native, ma che cos’è?

Molti fanno un uso omnicomprensivo del termine per indicare i vari strumenti e tecniche richiesti dagli sviluppatori per costruire, distribuire e mantenere le moderne applicazioni sviluppate su infrastruttura cloud.

Cerchiamo quindi di dare una definizione al termine, esaminiamo e identificando alcuni dei vantaggi e delle insidie di diventare nativi del cloud.

Definizione del cloud-native

Il cloud-native è un approccio moderno alla creazione e all’esecuzione di applicazioni software che sfrutta la flessibilità, la scalabilità e la resilienza del cloud computing.

Con cloud-native si identificano i vari strumenti e tecniche utilizzati oggi dagli sviluppatori per creare applicazioni per il cloud pubblico, al contrario delle architetture tradizionali adatte a un datacenter on-premise.

L’approccio cloud-native è stato sperimentato da un gruppo di società comunemente indicate come “nate nel cloud”, tra queste troviamo giganti come Netflix e Spotify, Uber e Airbnb. Da allora l’approccio cloud-native è stato adottato da altre aziende alla ricerca di un’agilità simile e di un vantaggio competitivo dirompente.

La Cloud Native Computing Foundation (CNCF) definisce il cloud-native in modo un po’ più ristretto, concentrandosi sulla containerizzazione delle applicazioni, metodo in cui le applicazioni vengono suddivise in microservizi e inserite in contenitori leggeri da distribuire e orchestrare su una varietà di server.

Nelle parole del CNCF: «Le tecnologie cloud-native consentono alle organizzazioni di creare ed eseguire applicazioni scalabili in ambienti moderni e dinamici come cloud pubblici, privati e ibridi».

In estrema sintesi, quindi, lo sviluppo di applicazioni cloud-native, include in generale l’unione di microservizi, piattaforme cloud, container, orchestratori Kubernetes, API dichiarative e tecnologia di distribuzione CI/CD basate su tecniche devops e metodologia Agile.

Paesaggio al cloud-native

Questo cambiamento nelle tecniche di sviluppo software ha visto emergere un nuovo panorama di strumenti, prevalentemente open source, e andando a delineare quattro livelli del cloud computing che sono importanti da comprendere:

  • Livello di definizione e sviluppo applicativo.
    Il livello superiore dello stack cloud-native si concentra sugli strumenti utilizzati dagli sviluppatori per creare applicazioni, come database, sistemi di messaggistica, immagini container e pipeline di integrazione e distribuzione continua (CI/CD).
  • Livello di provisioning.
    Il livello di provisioning dello stack cloud-native include tutto ciò che è necessario per creare e proteggere l’ambiente in cui verrà eseguita un’applicazione, idealmente tale infrastruttura è istanziabile in modo ripetibile. Nel mondo cloud, ciò comporta il trattamento dell’infrastruttura via codice (IaC, Infrastructure as Code), l’archiviazione di immagini in un repository, l’automazione delle build e la risoluzione delle esigenze di sicurezza delle applicazioni con la scansione delle vulnerabilità, la gestione di chiavi e strumenti di autenticazione.
  • Livello di runtime.
    Il livello di runtime riguarda tutto ciò che è associato all’esecuzione di un’applicazione cloud-native, ad esempio il runtime del contenitore, ad esempio Docker, nonché lo storage d’archiviazione e la rete.
  • Livello di orchestrazione e gestione.
    Il livello di orchestrazione e gestione riunisce gli strumenti necessari per distribuire, gestire e scalare le applicazioni containerizzate, tra cui l’orchestrazione e la pianificazione. Nella maggior parte dei casi, ciò significa adottare Kubernetes, nonché servizi proxy, API gateway e mesh.

Al di fuori di questi livelli è poi fondamentale implementare pratiche di osservabilità, in modo tutti i livelli ed i servizi al loro interno siano monitorati in modo efficace.

I vantaggi delle architetture cloud-native rispetto a quelli on-premise

Lo sviluppo di applicazioni native del cloud richiede un’architettura molto diversa rispetto alle applicazioni aziendali tradizionali, che in genere vengono eseguite in un data center locale.

Ecco alcune differenze chiave e i vantaggi che le applicazioni cloud-native portano rispetto ai modelli di sviluppo tradizionali.

Linguaggi.
Le app locali scritte per l’esecuzione sui server aziendali tendono ad essere scritte in linguaggi tradizionali, come C/C++, C# e Java aziendale. Le applicazioni cloud-native hanno invece maggiori probabilità di essere scritte in un linguaggio incentrato sull’uso via Web, come HTML, CSS, Java, JavaScript, .NET, Go, Node.js, PHP, Python e Ruby. Lavorare con linguaggi e piattaforme moderne può aiutare a sfruttare appieno tutte le potenzialità del cloud e ad essere più competitivi.

Updatability.
Le applicazioni cloud-native sono progettate per essere altamente disponibili, resilienti e aggiornabili regolarmente, mentre le applicazioni locali vengono in genere aggiornate una o due volte all’anno utilizzando una metodologia waterfall.

L’updatability del cloud-native fornisce un aumento della produttività dei team di sviluppo che possono concentrarsi sul fornire nuove funzionalità ai clienti più frequentemente di prima guidati da una metodologia Agile.

Elasticità.
Uno sviluppo cloud-native sfrutta l’elasticità del cloud stesso, flettendo il consumo in base alla domanda, al contrario di un’applicazione locale che richiede il provisioning fisico di un’infrastruttura aggiuntiva per poter scalare in modo efficace. Ciò ha anche implicazioni sui costi, in quanto il cloud consente di pagare per ciò che si utilizza cercando di evitare costosi over provisioning della propria infrastruttura.

Multitenancy.
Un’applicazione cloud non ha problemi a lavorare in uno spazio virtualizzato e a condividere risorse con altre applicazioni utilizzando un modello multi-tenant. Ciò porta un chiaro aumento dell’efficienza ai team di sviluppo.

Tempi di inattività.
Il cloud offre una maggiore ridondanza grazie alla scalabilità e alla diffusione geografica dei data center gestiti dai fornitori di cloud, le interruzioni possono essere quindi gestite meglio, reindirizzando rapidamente il traffico verso un’altra region ed evitando costosi tempi di inattività.

Automazione.
Le tecniche cloud-native facilitano l’adozione di una vasta gamma di opportunità di automazione.

Apolide.
Le applicazioni cloud-native tendono ad essere stateless, in quanto non trasportano i dati salvati da una sessione all’altra. Questo modello apre all’opportunità di scalare facilmente su più server, utiizzare più facilmente la cache per un aumentare le prestazioni, utilizzare meno spazio di archiviazione ed evitare blocchi esecutivi dovuti al collegamento ad un server specifico.

Le sfide cloud-native

Cercare di eseguire un lift & shift o un replatform di un’applicazione on-premise esistente per renderla cloud-native ma senza mettere in conto sfide architetturali è un errore comune, lo stesso refactor applicativo è una sfida ingegneristica significativa di per sé.

Trovare il giusto mix di competenze, adattarsi a un modello di cyber security incentrato sul cloud e gestire il mutevole approccio ai costi di un ambiente cloud rimangono tutte sfide chiave per le organizzazioni che desiderano passare al cloud-native e che, senza l’aiuto di un partner fidato, comporteranno grossi rischi e costi.

In BlueIT abbracciamo il cloud-native come principio organizzativo, creando nuove applicazioni già predisposte per il cloud o suddividendo le applicazioni monolitiche esistenti in microservizi in modo che siano più adatte a un ambiente cloud; possiamo quindi affiancare e consigliare le organizzazioni nostre clienti nel percorso verso il cloud fornendo tutto lo spettro di competenze necessarie a vincere questa sfida.

Ciò richiede anche un significativo spostamento della mentalità dalle tradizionali distribuzioni waterfall a principi di sviluppo Agile, come lo sviluppo di minimum value product (MVP), l’adozione dell’automazione, l’iterazione rapida, l’osservabilità e la stretta collaborazione tra il team di sviluppo e quello operativo in un modello devops.

Vuoi saperne di più? CONTATTACI.

Per non perderti i nuovi aggiornamenti iscriviti alla nostra newsletter.


Ph. Sigmund on Unsplash

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *