8 passi per sviluppare un'applicazione cloud native
MIDDLEWARE, CLOUD & DEVOPS
8 passi per sviluppare un'applicazione cloud native
event 09/08/2018
Il software oggi è sempre più strategico: da esso dipendono il modo in cui gli utenti interagiscono con le aziende e il modo in cui queste ultime innovano per restare competitive. Dunque la velocità con cui le applicazioni vengono sviluppate e distribuite è il nuovo imperativo del business digitale. E la velocità è anche una delle caratteristiche del cloud computing, che oggi non rappresenta solo un luogo che può ospitare dati e workload, ma anche un modello per lo sviluppo software.
I principi della nuvola possono aiutare a modernizzare le applicazioni esistenti e a crearne di nuove, tuttavia ci sono delle regole da rispettare, dei passi precisi da compiere per realizzare un percorso di successo verso l'approccio Cloud Native.
Cos'è un'applicazione cloud native?
Un'applicazione cloud nativa è un'applicazione creata per trarre vantaggio dai modelli del cloud computing, allo scopo di aumentare velocità, flessibilità e qualità, riducendo allo stesso tempo i rischi nel deployment. A dispetto del nome, l'approccio cloud nativo non si focalizza sul luogo in cui le applicazioni vengono messe all'opera ma piuttosto sul modo in cui vengono create, distribuite e gestite.
Gli approcci di tipo nativamente cloud assomigliano alle architetture a microservizi. Benché questi ultimi possano rappresentare uno degli esiti della realizzazione di applicazioni cloud native, per ottenere il livello di maturità adeguato a gestire i microservizi in produzione servono molti passaggi. Ecco perché molte aziende scelgono di transitare verso i "monoliti modulari", ispirati agli stessi principi dei microservices ma più semplici da adottare.
Un viaggio in 8 tappe per sviluppare app cloud native
Quella diretta verso uno sviluppo applicativo e una distribuzione cloud native è in ogni caso un'evoluzione su più dimensioni, che riguarda la cultura, i processi, le architetture software e le tecnologie. In quanto tale, più che una destinazione da raggiungere è un viaggio e rappresenta un cambiamento non facile da adottare. Il cammino che può portarti verso le applicazioni cloud native prevede otto tappe o, se preferisci, otto passi da compiere. Vediamoli uno a uno.
1. TRASFORMARE LA CULTURA E LE PRATICHE DI DEVOPS
Il DevOps non è solo una metodologia ma un modo di pensare che permette di creare applicazioni più velocemente e con migliori risultati. L'adozione rapida di tecnologie innovative e la migliore collaborazione fra team sono due tra i vantaggi. Molte aziende però fanno fatica: non basta scegliere certi strumenti o tecnologie per lo sviluppo e la produzione di applicazioni, bisogna anche adottare un approccio più integrato e collaborativo e nuovi principi.
La cultura tipica dei progetti open source può farti da guida in questo percorso, aiutandoti a realizzare prototipi più rapidamente, a sperimentare il DevOps e ad adottare flussi di lavoro più agili.
2. VELOCIZZARE LE APPLICAZIONI ESISTENTI USANDO MONOLITI VELOCI
Sbarazzarsi del passato non sempre è un'opzione praticabile né una buona idea. Nelle aziende esistono molte applicazioni legacy realizzate su architetture software monolitiche e spesso si tratta di tecnologie critiche per il business, da cui dipendono la continuità del servizio e il fatturato. Come si conciliano con l'evoluzione verso un approccio cloud nativo?
In questo viaggio, le applicazioni legacy spesso non possono essere sostituite ma piuttosto è necessario integrarle con quelle cloud native. Bisogna quindi dare velocità ai monoliti esistenti, spostandoli su architetture modulari e basate su servizi. Un "monolite veloce" rappresenta un'alternativa intermedia tra il vecchio approccio e i microservizi e, rispetto a quest'ultimi, comporta minori difficoltà e rischi assicurando simili vantaggi di agilità.
3. USARE I SERVIZI APPLICATIVI PER VELOCIZZARE LO SVILUPPO
Gli sviluppatori software conoscono l'arte del riclico: la possibilità di riutilizzare parti di un'applicazione è un'efficace scorciatoia. In questo le applicazioni cloud native non fanno eccezione, ma i loro componenti riutilizzabili devono essere ottimizzati e integrati nella infrastruttura cloud sottostante se si vogliono ottenere reali benefici. Anziché creare da zero servizi di caching, regole o motori di workflow, connettori di integrazione, funzioni di Api management, servizi di data virtualization, messaggistica o altro ancora, è possibile usare elementi già esistenti. Che si tratti di offerte Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), o integration Platform-as-a-Service (iPaaS), questi servizi applicativi rappresentano strumenti pronti all'uso per gli sviluppatori, ottimizzati e integrati nella sottostante infrastruttura basata su container.
4. SCEGLIERE LO STRUMENTO PIÙ ADATTO PER CIASCUN TASK
Intelligenza artificiale, Internet of Things, automobili a guida autonoma, riconoscimento delle immagini, data mining e altro ancora: a questi ambiti corrispondono framework, linguaggi e approcci allo sviluppo software diversi tra loro, specifici a seconda della finalità dell'applicazione. Tale complessità richiede piattaforme basate su container che siano capaci di supportare il giusto mix di framework, linguaggi e architetture, e che vengano continuamente aggiornate in base alle evoluzioni della tecnologia. Nei progetti cloud nativi, inoltre, è necessario scegliere lo strumento più indicato per ciascuno specifico task.
5. FORNIRE UNA INFRASTRUTTURA SELF-SERVICE E ON-DEMAND
Le metodologie Agile aiutano gli sviluppatori a creare e aggiornare i loro software più rapidamente. Ma quando l'applicazione entra in produzione, ecco che diventa difficile accedere all'infrastruttura con tempismo ed efficienza: compilare un ticket e attendere settimane il rilascio di risorse da parte dell'IT oggi non è più sostenibile. E spesso per non dover aspettare si ricorre a soluzioni non autorizzate dall'azienda, alimentando lo "shadow IT".
L'alternativa è quella di permettere agli sviluppatori di accedere all'infrastruttura quando e come vogliono, assicurando però al personale delle operations IT di avere visibilità e controllo su un ambiente ormai dinamico e complesso. I container e le relative tecnologie di orchestrazione consentono di astrarre e semplificare l'accesso a data center, cloud privati e cloud pubblici, mentre le container platform aggiungono a tutto questo strumenti self-service, automazione e capacità di gestione del ciclo di vita delle applicazioni.
6. AUTOMATIZZARE L'IT PER ACCELERARE IL RILASCIO DELLE APPLICAZIONI
Eliminare un po' di procedure manuali è essenziale se si vuole accelerare il rilascio di applicazioni cloud native. Definendo processi ripetibili, regole e framework, l'automazione può riguardare qualsiasi task o componente, dalle reti al provisioning delle risorse, fino alla distribuzione delle applicazioni e alle attività di configurazione. È importante prendere in esame qualsiasi operazione o elemento che possa essere automatizzato ma si può agire gradualmente, cominciando da singoli aspetti (computing, archiviazione, comunicazioni di rete o provisioning) e proseguendo poi su questa base. Nel tempo, un'automazione integrata e su larga scala produrrà come risultati maggiore efficienza, velocità nel DevOps e innovazione.
7. REALIZZARE TECNICHE DI CONTINUOUS DELIVERY E ADVANCED DEPLOYMENT
Cicli di rilascio lunghi significano ritardi tra la scoperta e la risoluzione di un bug. Oppure significano lentezza nell'adattarsi ai cambiamenti del mercato e alle richieste dei clienti. Nelle applicazioni in cui trasita un elevato traffico di dati, come quelle mobile, Web e IoT, un difetto non risolto può tradursi in problemi di sicurezza, user experience insoddisfacente o produttività ridotta.
Le metodologie di sviluppo Agile hanno creato un modello che prevede rilasci rapidi e frequenti, mentre gli approccio DevOps e di Continuous Delivery hanno ampliato questo modello mettendo insieme sviluppo, operations, controllo qualità e sicurezza. I team impegnati su diverse attività devono lavorare insieme per migliorare il processo di consegna del software. Con la Continuous Integration/Continuos Delivery (CI/CD pipeline) si procede attraverso ininterrotti feedback e modifiche, velocizzando così le operazioni di testing, scansione di vulnerabilità, conformità di sicurezza e controlli normativi. È possibile adottare diverse tecniche per realizzare tale approccio, per esempio verificando l'esito delle diverse versioni in ambienti controllati o testandoli su gruppi ristretti o, ancora, aggiornando solo alcune istanze anziché l'intera applicazione. Così si riducono i rischi di malfunzionamenti ma anche i tempi.
8. EVOLVERE VERSO UN'ARCHITETTURA MODULARE
Un'architettura basata su microservices presenta numerosi vantaggi: è più granulare, leggera e consente di impiegare i medesimi elementi e processi in differenti applicazioni. Ma adottare questo approccio può richiedere investimenti e capacità non comuni a tutte le aziende, risultando un compito troppo impegnativo o destabilizzante.
Un approccio "monolith-first" ai microservizi può essere una soluzione: le applicazioni vengono create in un primo momento come monoliti, per poi eventualmente passare su un'architettura a microservizi dopo avere verificato ciò che l'applicazione sa e può fare. In alternativa è anche possibile creare dei miniservizi, ovvero delle raccolte di servizi suddiviste in base al dominio ed eseguite solitamente su un server applicativo. Questa soluzione migliora l'agilità e la scalabilità delle applicazioni, senza la complessità di un'infrastruttura basata su microservizi. Sono comunque richiesti degli investimenti in metodologie Agile, DevOps e CI/CD.
Scopri come velocizzare il rilascio delle applicazioni grazie ai container!
article Scarica l'eBook!altri articoli sull'argomento