• Non ci sono risultati.

3. CLOUD COMPUTING IAAS

3.1 Applicazioni per il Cloud Computing IaaS

Alcune tipologie di applicazioni si adattano particolarmente ad essere sviluppate per l’esecuzione su piattaforme cloud, si tratta principalmente di tutte quelle applicazioni che hanno determinate caratteristiche sia per quanto riguarda le richieste di risorse, sia per la tipologia di utilizzo da parte degli utenti. Una delle maggiori potenzialità dell’IaaS è di essere elastico e di garantire la possibilità alle applicazioni di scalare facilmente, mettendo a disposizione una quantità di risorse virtualmente illimitata, per questo un’applicazione trarrà il massimo del vantaggio se le risorse di cui ha bisogno sono abbastanza variabili, o comunque poco prevedibili nel tempo. Una delle situazioni più rappresentative di questo tipo di situazione riguarda le applicazioni che gestiscono servizi legati ai social network, che in certi casi hanno registrato forti aumenti dell’utenza, e di conseguenza delle risorse computazionali richieste, molto rapidi e improvvisi. Per soddisfare tali richieste la soluzione IaaS è decisamente la migliore, visto che è possibile aggiungere risorse in tempi brevissimi e a discrezione dell’utente. Inoltre non è neppure necessario effettuare grandi investimenti iniziali per l’avvio del sistema, infatti le spese da sostenere saranno proporzionate alla quantità di risorse utilizzate, che a loro volta sono collegati al numero di richieste che il sistema deve elaborare.

I servizi di IaaS possono anche essere utilizzati per implementare applicazioni che non richiedono di essere rese disponibili agli utenti, o più in generale di essere eseguite, per periodi di tempo molto lunghi; casi di questo tipo possono accadere sostanzialmente per soddisfare dei picchi di richieste che avvengono in concomitanza di eventi mediatici importanti, come eventi sportivi, oppure all’esecuzione di procedure non standard in un’azienda, come può essere il rilascio di una nuova versione di un software o di un aggiornamento. In questi casi si richiede spesso di dover disporre di molte risorse IT per poter soddisfare tutte le richieste in arrivo, tuttavia se si volesse fare un upgrade del data center interno affinchè possa gestire picchi di richieste di tale intensità si dovrebbero affrontare degli investimenti molto importanti, che risulteranno poi poco sfruttati una volta terminata la fase di massimo utilizzo. Situazioni del genere si presentano anche quando un’azienda deve effettuare delle operazioni interne per effettuare delle modifiche al proprio sistema IT, dovendo elaborare grandi quantità di dati,

operazioni che richiederebbero molto tempo e risorse se dovessero essere eseguite internamente. Una soluzione che può essere adottata è quindi quella di utilizzare delle macchine virtuali IaaS dedicate a svolgere queste operazioni, riuscendo quindi a completare le procedure richieste in tempi più brevi e senza sovraccaricare il sistema; il vantaggio principale però è quello di non dover fare investimenti di nessun tipo per ottenere le risorse IT di cui si necessita, si dovranno solo pagare le tariffe del provider IaaS in base al tempo-macchina effettivamente utilizzato.

Web Applications

L’utilizzo più diffuso del Cloud Computing IaaS, e ad oggi quello che più vi si adatta, è costituito dalle applicazioni web. Le necessità che hanno tali applicazioni sono estremamente compatibili con tutti i servizi forniti dai provider IaaS: elasticità nell’allocazione delle risorse, tempi di risposta alle richieste brevi, connettività a banda larga efficiente, sistema di networking personalizzabile, ecc. La caratteristica più importante però riguarda la scalabilità intrinseca delle web applications, nella maggior parte dei casi è sufficiente replicare i diversi componenti (webservers, database servers, ecc) per aumentare il carico di richieste che l’applicazione può soddisfare.

Le applicazioni web sono spesso soggette a carichi di lavoro non costanti, con picchi che si discostano in maniera molto significativa rispetto alla media; l’elasticità tipica del cloud computing consente di allocare, in alcuni casi in maniera completamente automatica, risorse aggiuntive per sopportare carichi di lavoro elevati e poi di ridurre il numero di macchine una volta che il picco di richieste è terminato. Tutto questo è abbinato al modello di fatturazione a consumo, ideale anche per i casi di start-up, che possono attivare i propri servizi a basso prezzo, potendo comunque scalare a fronte di un aumento dell’utenza.

Testing di Applicazioni

Utilizzare un’infrastruttura cloud-based come piattaforma di test è un sistema largamente diffuso, l’obiettivo è solitamente quello di verificare che le applicazioni sviluppate siano sufficientemente scalabili in casi reali. Si possono infatti implementare delle piattaforme di testing di prestazioni per tutte quelle applicazioni che dovranno poi essere eseguite sui propri data center, al fine di verificarne le effettive potenzialità; i test di performance infatti potrebbero sovraccaricare eccessivamente il data center aziendale, compromettendo le funzionalità legate alle altre applicazioni. Utilizzando le risorse fornite dai provider IaaS si ha la possibilità di effettuare dei test in un ambiente totalmente separato, ad un costo molto basso, visto che la tariffazione è calcolata in base all’effettivo consumo di risorse. Ovviamente questo tipo di utilizzo di un’infrastruttura IaaS si applica solamente se l’architettura da utilizzare è compatibile con quella che impone il provider IaaS per le macchine virtuali fornite.

Applicazioni Mobile Interattive

Una tipologia di applicazioni che sta nascendo in questi ultimi anni è costituita da software sviluppati per i telefonini di nuova generazione, le quali devono essere in grado di rispondere in tempo reale alle richieste effettuate dagli utenti. Tale tipologia di applicazioni può trarre vantaggio dai sistemi cloud non

3.1. Applicazioni per il Cloud Computing IaaS 35 solo perché i servizi offerti devono essere sempre disponibili, ma anche perché basano le proprie elaborazioni su grandi insiemi di dati, che possono essere acceduti facilmente se gestiti dalla cloud stessa. Tutte queste applicazioni sono soggette a picchi di richieste molto imprevedibili, soprattutto perché si possono diffondere in tempi brevi, aumentato in maniera consistente il numero di utilizzatori. Il fatto di poter sviluppare tutti i servizi di questo genere utilizzando risorse di tipo IaaS garantisce ottimi livelli di disponibilità, oltre che la possibilità di scalare facilmente, qualora fosse necessario per soddisfare un aumento del numero di utenti.

Applicazioni Batch “Parallele”

Un’altra tipologia di applicazioni che ultimamente viene eseguita su piattaforme IaaS è costituita da tutti quei servizi che si occupano dell’elaborazione intensiva di dati, come gli strumenti di analisi che si utilizzando per effettuare operazioni di Business Intelligence. Anche in questo caso le applicazioni in questione necessitano di una quantità di risorse estremamente variabile, infatti molto spesso le richieste di elaborazione di dati vengono inviate sporadicamente e richiedono grandi capacità di calcolo durante la loro esecuzione, mentre una volta terminate queste operazioni il sistema non richiede molte risorse. Per questi motivi è utile poter usufruire di un servizio IaaS per eseguire le operazioni da svolgere, richiedendo le risorse durante le fasi di elaborazione, e rilasciandole quando l’applicazione ha completato il proprio lavoro. Un particolare utilizzo per applicazioni di calcolo intensive è quella della business analysis: ultimamente vengono utilizzate molte risorse per monitorare costantemente i comportamenti dei clienti, le loro abitudini di acquisto, la gestione delle supply chain, ecc. Le richieste computazionali di questi applicativi tendono sempre ad aumentare, visto che i dati da elaborare sono in continua crescita, inoltre le operazioni che devono svolgere non richiedono un utilizzo costante delle risorse informatiche, ma solamente quando l’utente richiede di visualizzare i dati aggiornati.

Applicazioni di questo genere spesso sono sviluppate per analizzare grandi quantità di dati (dell’ordine delle centinaia di GB o più) e richiedono molte ore di computazione, essendo per lo più CPU-intensive. Nel caso, molto frequente, in cui sia presente un buon livello di parallelismo delle operazioni che devono essere svolte, l’utente può trarre vantaggio dal modello pay-as-you-go del Cloud Computing, visto che è possibile ottenere una grande quantità di risorse ed utilizzarle solo per il periodo di tempo, anche relativamente breve, necessario per l’esecuzione delle operazioni pianificate. In questo modo si possono ridurre di molto i tempi di esecuzione di tutte quelle procedure che, se svolte nel data center locale, avrebbero richiesto tempi di elaborazione molto più lunghi. Un esempio di tali applicazioni è rappresentato da un’operazione eseguita per il giornale The Washington Post [28] che ha utilizzato 200 macchine Cloud per convertire un intero database di documenti in un formato adatto ad essere utilizzato nel web. Lo sviluppo di applicazioni di questo tipo è facilitato da alcune piattaforme di programmazione quali MapReduce di Google e la sua versione opensource HAdoop [29], che consentono al programmatore di dedicarsi al solo sviluppo dell’applicazione, lasciando ad esse il compito della gestione della parallelizzazione delle operazioni.

Esecuzione di applicazioni Desktop CPU-intensive

È possibile utilizzare le risorse cloud anche per eseguire alcune operazioni avviate da programmi desktop, al fine di velocizzarne i tempi di risposta. Applicazioni quali Matlab e Mathematica sono già in grado di sfruttare il Cloud Computing per effettuare alcune operazioni particolarmente costose, mentre altre applicazioni utilizzano risorse esterne per il rendering 3D. La categoria di applicazioni appena descritta è ancora in fase di sviluppo, infatti non sono presenti molte soluzioni che utilizzano questa tipologia di calcolo remoto, tuttavia è possibile che in certi campi si possano ottenere dei risultati molto buoni. Un esempio di un servizio che è stato lanciato da qualche mese degli USA è OnLive [30], che consente agli utenti di giocare con videogames di ultima generazione senza dover disporre dell’hardware necessario all’esecuzione del gioco stesso, infatti tutte le operazioni di calcolo, grafico e non, vengono effettuate dai server di OnLive, che invieranno solamente le immagini risultanti, visualizzate direttamente sullo schermo dell’utente. Sicuramente servizi così strutturati possono essere molto validi e in certi casi possono migliorare di molto le prestazioni che si potrebbero ottenere eseguendo i propri programmi il locale, tuttavia l’usabilità di tali soluzioni è vincolata ad una disponibilità di banda sufficientemente elevata. È fondamentale infatti evitare di avere tempi di risposta troppo lunghi, in particolare quando le applicazioni richiedono un livello di interattività molto elevato, coma accade appunto per i videogames.

Diffusione del Cloud Computing

L’utilizzo di tecnologie cloud si sta diffondendo sempre di più anche all’interno delle aziende, come rivelano alcune ricerche di mercato1. Si è visto che circa il 75% delle compagnie stanno già utilizzando, o hanno in programma di utilizzare entro i prossimi tre anni, risorse fornite da sistemi cloud. I prodotti più utilizzati sono quelli di tipologia SaaS, come le applicazioni offerte da Salesforce.com, essendo sicuramente le più user friendly e le più facili da implementare; per quanto riguarda le offerte IaaS tra i più interessanti si trovano lo storage remoto e la capacità di calcolo on-demand.

In which of the following ways is your organization currently using cloud computing offerings?

Percent

Access to extra computing power on demand 16.2%

Running application using a software as a service (SaaS) model 44.3%

Storage 23.4%

Other, please specify 3.8%

Not applicable - do not currently use any cloud computing offerings 46.8% Tabella 1 Utilizzi dei servizi cloud

Le applicazioni più gettonate per essere eseguite su piattaforme cloud sono applicazioni collaborative (wiki,web conferencing) , applicazioni web e software di progettazione, ma anche l’utilizzo di storage on-demand. In particolare le aziende preferiscono eseguire su cloud tutte applicazioni che devono

3.2. Case Studies 37