Insight,

Applicazioni in cloud

Immagine in evidenza per applicazioni in cloud

Le applicazioni in cloud sono software a cui gli utenti accedono principalmente attraverso internet, l’app quindi non risiede sul device dell’utente, ma su un server remoto. Questa modalità si presta in modo efficace sia a supportare software che forniscono direttamente un servizio, sia per applicazioni sviluppate a sostegno di altra attività. In questo senso, lo scopo di un’applicazione è abbastanza indifferente nel definire la sua idoneità ad essere gestita tramite cloud, sono invece altri gli aspetti che determinanti per scelta di andare in cloud.

Il software in cloud può rispondere a tutti i tipi di esigenze. Può ad esempio prestarsi per :

  • un software destinato al grande pubblico con cui l’azienda si mette in contatto con i suoi clienti e offre servizi;
  • un software gestionale, che supporta l’operatività dell’azienda in tutto il mondo;
  • un servizio tecnologico che gestisce ed elabora dati di altri software e macchinari per abilitare complesse logiche di produzione.

Alcuni vantaggi di un’applicazione in cloud

Sviluppare un’applicazione in Cloud può essere motivato dalla ricerca di diversi tipi di vantaggi, tra cui:

  • risparmio delle risorse
    Rispetto a quella on premise, una soluzione Cloud infatti offre notevoli vantaggi in termini di provisioning delle risorse in modalità “self-service”, ridondanza efficiente ed un modello di costo flessibile, “pay per use”. La possibilità di scegliere tra molteplici tipologie di fornitori, servizi ed architetture permette di ottimizzare il costo/performance molto più di ciò che è permesso da un’infrastruttura on-prem, tipicamente rigida e caratterizzata da costi spesso non competitivi a parità di servizio.
  • alta disponibilità del servizio e potenziamento flessibile
    Uno dei vantaggi maggiori legati alla migrazione di un’applicazione in Cloud è indubbiamente la possibilità di scalarla verticalmente e (soprattutto) orizzontalmente, ovvero di accedere a risorse aggiuntive in caso di incremento del carico di lavoro – anche temporaneo – mantenendo i livelli di servizio (SLA) concordati con il fornitore. 
  • rapidità di aggiornamento
    I sistemi in cloud permettono aggiornamenti di tutta l’infrastruttura anche in modo automatico e/o gestito. Gli aggiornamenti stessi si propagano immediatamente su l’infrastruttura, e sono quindi subito disponibili a tutti gli utenti. La facilità con cui si può accedere ad ulteriori risorse, inoltre, abilita schemi di alta affidabilità (HA) che possono rendere questi aggiornamenti anche totalmente trasparenti agli utenti finali. 
  • semplificazione delle attività di sviluppo
    La tecnologia cloud permette di sviluppare funzionalità particolarmente avanzate in modo efficiente grazie a piattaforme rese disponibili in modalità PaaS o a servizi digitali completi (SaaS), senza costringere gli sviluppatori ad uno sviluppo ex-novo di funzionalità comuni particolarmente complesse.

Quali competenze per creare applicazioni in cloud?

Un applicativo in cloud può essere molto diverso rispetto ad uno on premise, soprattutto se si vuole sfruttare veramente il potenziale di questa tecnologia. Per realizzare un’applicazione in cloud che ottenga realmente i vantaggi promessi, dunque, sono necessarie diverse competenze aggiuntive rispetto a quelle tradizionalmente presenti nei reparti IT. Competenze che vanno a coprire l’intera catena di valore dei prodotti software, dalle scelte strategiche aziendali al riscontro da parte degli utenti finali. Ecco perché l’ingresso nel mondo cloud non può essere affrontato senza specifiche competenze, che comprendano:

  • sviluppo (ambito IT) 
  • progettazione
  • design

Sviluppare applicazioni in cloud: risvolti lato IT

In mancanza di una corretta pianificazione, la migrazione in cloud non solo non porta i vantaggi promessi, ma potrebbe addirittura ridurre le prestazioni dei sistemi IT e accrescere i costi delle infrastrutture informatiche. Osserviamo alcuni aspetti principali.

Preparare una corretta infrastruttura di hosting

Nel progettare un’app in cloud non si può prescindere dal considerare il fatto che questa dovrà essere in grado di servire un’utenza potenzialmente molto numerosa e dislocata anche in tutto il mondo. Pertanto, il primo aspetto da definire con cura è quello legato alla scelta e predisposizione dei server su cui farla girare, che dovranno assicurare prestazioni all’altezza e una solida connessione alla rete. Al contempo, è fondamentale definire un range controllato per i costi, in modo da non annullare i benefici economici del passaggio al cloud. 

La scalabilità orizzontale, ovvero la possibilità di richiedere maggiori risorse all’infrastruttura cloud quando necessarie per permettere di gestire in modo efficiente i picchi di traffico, richiede un’ottimizzazione oculata di software e risorse. Sono quindi necessarie  le competenze  per calcolare e prevedere i picchi di richieste di accesso al software, i carichi di lavoro richiesti, la stabilità dei servizi, e, non ultima, la sicurezza dell’intera infrastruttura.

Gestire l’affidabilità e la sicurezza dell’applicazione

Un altro aspetto da valutare con attenzione è quello della qualità del software. Certo, è un tema fondamentale per qualsiasi prodotto digitale, ma un’applicazione in cloud ha alcune peculiarità:

  • gli aggiornamenti diventano subito disponibili a livello globale per tutti gli utenti non appena rilasciati
  • il  grado di ownership sullo stack tecnologico dell’applicazione è variabile e così anche la visibilità sui suoi componenti
  • le eventuali interruzioni di servizio colpiscono tutti gli utenti (o una gran parte) contemporaneamente causando notevoli danni  – economici e d’immagine all’azienda.

Per questo la verifica dell’affidabilità del software e delle sue nuove release è fondamentale. Chi si occupa dell’applicazione deve anche predisporre un’adeguata attività di tenuta in opera del servizio, che comprenda una strategia di gestione e testing che verifichi sia l’affidabilità end-to-end del prodotto, sia la funzionalità dei sistemi che sottostanno ad esso, così da garantire pipeline di sviluppo sicure ed evitare interruzioni di servizio. 

Pari competenze sono richieste nel mantenere il software sicuro da attacchi informatici con appropriati aggiornamenti e contromisure nel proteggere l’applicazione stessa e soprattutto i dati che conserva. In questo ambito si rivela fondamentale l’approccio “security by design”, ovvero la capacità di progettare software sicuro dalla prima riga di codice, affiancata da un lavoro costante di testing e supervisione (automatizzata e non) dell’intera infrastruttura.

Un applicativo in cloud “fully managed”

Per tutte le sue applicazioni in cloud,  Bottega52 offre il servizio di tenuta in opera completo, con cui provvede alla progettazione dell’infrastruttura, al monitoraggio applicativo e alla gestione completa di tutto quanto necessario alla corretta operatività del servizio in Cloud.

Ti piace leggere?

A noi piace scrivere, dai un’occhiata alle nostre guide e approfondimenti

Library di Innovazione Digitale
       .--.                   .---.
   .---|__|           .-.     |~~~|
.--|===|--|_          |_|     |~~~|--.
|  |===|  |'\     .---!~|  .--|   |--|
|%%|   |  |.'\    |===| |--|%%|   |  |
|%%|   |  |\.'\   |   | |__|  |   |  |
|  |   |  | \  \  |===| |==|  |   |  |
|  |   |__|  \.'\ |   |_|__|  |~~~|__|
|  |===|--|   \.'\|===|~|--|%%|~~~|--|
^--^---'--^    `-'`---^-^--^--^---'--' 

Progettare un applicativo in cloud 

Nell’ambito della progettazione è necessario conoscere come sviluppare software che sia pensato per la performance e la sicurezza in cloud.

Parola d’ordine: sicurezza 

In termini di progettazione, la sicurezza è il focus, in tutte le sue sfaccettature. Imprescindibile è la “security by design”, grazie a cui ogni parte del sistema viene pensata e costruita al fine di essere sicura per se stessa, così che chi utilizza l’applicazione possa farlo con la tranquillità di operare in un ambiente sicuro. 

Efficienza e modalità di gestione del trasferimento

Mantenere un software efficiente in cloud spesso significa anche doverlo riprogettare per permettergli di gestire in modo sicuro ed efficiente un numero di richieste tipicamente molto elevato. Il semplice trasferimento in cloud di software già on premise, nonostante possa mantenerne il funzionamento, difficilmente si rivela un’operazione vincente. Un software che viene semplicemente trasferito da una macchina locale al cloud con pura logica “Lift & Shift” non è in grado di concretizzare tutti i potenziali benefici del cloud stesso. Benché veloce e economicamente meno oneroso, un tale metodo di migrazione (che può essere approfondito nel White paper “Cloud Migration”) comporta infatti alcuni svantaggi, come:

  • miglioramento limitato della scalabilità, se l’applicativo non è stato pensato per supportare in maniera trasparente una scalabilità orizzontale
  • sicurezza ridotta, se per esempio l’applicativo originale era pensato solo per essere raggiunto tramite una VPN

Di conseguenza, spesso si rivela necessaria una riprogettazione più o meno massiccia, che può andare dalla revisione di alcuni suoi aspetti fino alla riprogettazione totale dell’applicativo.

Sviluppo Cloud Native

Bottega52 è un partner Cloud-Native dotato delle competenze tecniche e di business indispensabili per gestire tanto lo sviluppo di servizi digitali basati sull’impiego di soluzioni Cloud, quanto la loro migrazione e tenuta in opera. 

Effettuare il design di un applicativo in cloud

Come già detto, un’applicazione in cloud sarà subito a disposizione di moltissimi utenti, siano essi clienti, operatori, o altri servizi digitali. Se ben progettate a livello di infrastruttura, la rapidità con cui queste applicazioni vedono crescere la loro customer base si ripercuote in modo direttamente proporzionale sull’andamento degli introiti per l’azienda. Mai come in questo caso, quindi, il successo del prodotto dipende in gran parte dalla solidità dell’idea che le ha generate, da come è stata poi trasformata in un design appetibile, e dalla stabilità e sicurezza del servizio.

Ecco perchè un’adeguata fase di product design e validazione dell’idea è imprescindibile nel realizzare un’applicazione in cloud. È quindi necessario far precedere qualsiasi attività di sviluppo e messa in opera da un’attività di product design che validi l’idea attraverso un confronto diretto con una rappresentanza del mercato. Seguita poi da un’attenta fase di valutazione tecnica che produca un documento di specifiche chiaro e comunicabile al team di sviluppo.

Si tratta di un’attività ancora poco diffusa, vuoi per la scarsa abitudine del mercato in proposito, vuoi perchè viene ancora vista da molti come un costo aggiuntivo e non strettamente indispensabile. In realtà questo costo viene poi largamente ammortizzato in quanto permette di:

  • ridurre il rischio imprenditoriale legato allo sviluppo del nuovo prodotto 
  • creare un piano lavori ben definito e validato, grazie a cui la rapidità con cui possono svolgersi le fasi successive aumenta notevolmente.

Product design con Bottega52

Convinta dell’importanza di questa attività, Bottega52 ha deciso di introdurre come parte integrante del suo normale percorso l’Enterprise Digital Product Design – finalizzato allo sviluppo di prodotti software – anche una fase di Product Design completamente gestita. L’azienda ha infatti deciso di investire nello ricerca e nello sviluppo del processo di Product Design, diventando a tutti gli effetti un partner completo per il product design e dello sviluppo di servizi digitali gestiti.

Hai visto qui?

Abbiamo molti altri articoli da leggere, vai a vedere!

Insights52
,---------------------------------------.---------.    
|                                       |         |    
|    ,-----------------------------.    |    .    |    
|    |                             |    |    |    |    
|    |    ,-------------------.    |    |    |    |    
|    |    |                   |    |    |    |    |    
|    |    `----     ,----     |    |    |    |    |    
|    |              | @       |    |    |    |    |    
|    |    ,---------"---------:    |    `----'    |    
|    |    |                   |    |              |    
|    `----:    ,---------.    |    `---------.    |    
|         |    |         |    |              |    |    
|    .    |    |    .    |    |     ---------'    |    
|    |    |    |    |    |    |                   |    
:----'    |    |    |    |    |    ,--------------:    
|         |    |    |    |    |    |              |    
|    .    |    `----'    |    |    |     ----.    |    
|    |    |              |    |    |         |    |    
|    `----"---------     |    |    `---------'    |    
|                        |    |                   |    
`------------------------'    `-------------------'