Cloud Computing, Cloud Gaming e Next-gen: proviamo a fare chiarezza!

[banner]

Mi è già capitato di scrivere sul Cloud Gaming in riferimento alle console next-gen, ma il tema è molto caldo e in rete si legge e si sente dire in proposito di tutto e di più. Ho deciso, allora, di tornare sull’argomento in modo più accurato per provare a mettere un po’ i puntini sulle “i”. Se vi state domandando qualcosa tipo: “ma chi sei per pretendere di fare chiarezza su un argomento così delicato e complesso?”. Beh è sicuramente una domanda più che legittima ma, nel mio piccolo, credo di disporre del background necessario almeno per provarci. Infatti sono sia un appassionato di videogames (e questo già si sapeva) ma frequento (e sto quasi per concludere) anche un Master universitario proprio in Cloud Computing e Servizi Software.

Ma non perdiamoci in chiacchiere e passiamo al dunque. Vediamo, però, di farlo per gradi senza tuffarci subito sul Cloud Gaming, ma chiarendo prima cosa si intende con il più ampio concetto di Cloud Computing in cui esso rientra.

Cloud Computing: una definizione ufficiale esiste, allora usiamola (o almeno proviamoci)!

Se è nella natura umana parlare, parlare e poi ancora parlare anche di ciò che si conosce poco o per nulla, ultimamente mi pare che questo tipo di comportamento abbia raggiunto picchi mai visti soprattutto quando l’argomento in questione è il Cloud Computing (in seguito CC). Molti ritengono che ciò sia inevitabile data, da un lato, la nebulosità (termine quanto mai azzeccato) intrinseca del concetto e, dall’altro, l’azione disinformativa (ma d’altronde informare non è il suo scopo) del marketing “grazie” al quale oggi praticamente tutto è cloud (o smart, o ancora meglio sia cloud che smart).

In realtà a ben guardare, anche se molto articolata e poco operativa, una definizione di CC riconosciuta a livello internazionale esiste ed è quella fornita dal NIST (National Institute of Standards and Tecnology) del governo federale statunitense, secondo il quale:

Il cloud computing è un modello per l’abilitazione dell’accesso on-demand attraverso la Rete ad un pool condiviso di risorse di calcolo configurabili (es. reti, server, storage, applicazioni e servizi) che possono essere rapidamente rilasciate con un minimo impegno e una minima interazione con il fornitore di servizi. Si tratta di un modello che promuove la disponibilità ed è composto da 5 caratteristiche essenziali, 3 modelli di servizio e 4 modelli di implementazione.

Immagine

Le 5 caratteristiche essenziali del CC secondo il NIST

Le 5 caratteristiche essenziali sono:

  • On-demand self-service – Un consumatore deve poter rifornirsi ogni volta che ne ha bisogno di risorse computazionali, senza dover richiedere sempre supporto al personale del provider.
  • Broad network access – Le risorse devono essere distribuite attraverso la rete e rese accessibili dalle diverse piattaforme adoperate dai clienti.
  • Resource pooling – Le risorse fornite dal provider devono essere raggruppate per servire contemporaneamente più consumatori, usando modelli multi-tenant (più utenti serviti dalla medesima istanza e non una istanza diversa per ciascun utente) e l’assegnazione e riassegnazione dinamiche delle stesse risorse fisiche e virtuali in accordo con la domanda;
  • Rapid elasticity – Le risorse devono essere fornite in modo rapido e soprattutto elastico. Cioè, è necessario che siano rapidamente scalabili (nel modo più automatico possibile) sia verso l’alto che verso il basso, in modo da rimanere sempre allineate alle mutevoli esigenze dell’utente;
  • Measured Service – Gli ambienti cloud devono prevedere un sistema automatico di controllo e misurazione dell’effettivo utilizzo delle risorse da parte degli utenti (questione connessa anche al billing). Le misurazioni effettuate devono essere appropriate al tipo di servizio considerato (es. processing, storage, etc.).

Da notare che nulla viene detto circa la localizzazione delle risorse. Un aspetto peculiare del CC, infatti, è che le risorse si trovano semplicemente “nella nuvola”: di solito gli utilizzatori dei servizi non sanno (e spesso non hanno interesse a sapere) dove si trovino fisicamente le risorse a cui accedono. Questo aspetto deriva dal fatto che nel CC non esiste “un server” come tradizionalmente lo si intende, ovvero una singola macchina, eventualmente ridondata contro eventuali perdite d’informazioni, situata in una qualche località nota. Esiste, invece, un gruppo distribuito di server/datacenter interconnessi (“la nuvola”) che gestiscono servizi (spesso mediante politiche di bilanciamento automatico del carico di lavoro), eseguono applicazioni ed archiviano dati, il tutto in modo totalmente trasparente all’utente finale.

Inoltre una delle cinque caratteristiche tira direttamente in ballo il concetto di scalabilità (capacità di un sistema di crescere/decrescere in funzione delle necessità e delle disponibilità) e ciò che ci si deve aspettare da un servizio cloud è che sia possibile, in modo semplice ed immediato, scalare lo stesso verso l’alto o verso il basso, a seconda delle esigenze del momento.

I 3 modelli di servizio del CC secondo il NIST

I 3 modelli di servizio (che possiamo visualizzare come impilati uno sull’altro perché ciascuno di essi dipende dalle risorse fornite dal livello sottostante) sono:

  • SaaS (Software as a Service) – Sfruttando l’ambiente applicativo messo a disposizione dal livello sottostante, fornisce agli utenti l’accesso on-demand a delle applicazioni erogate sotto forma di servizio [es. Google Docs, Office 365];
  • PaaS (Platform as a Service) – Sfruttando le risorse infrastrutturali messe a disposizione dal livello sottostante, fornisce agli utenti l’accesso, sotto forma di servizio, ad uno stack applicativo e ad un ambiente di sviluppo completo. Un programmatore può concentrarsi solo sullo sviluppo delle applicazioni, senza doversi più preoccupare della gestione dell’infrastruttura sottostante [es. AppEngine di Google, Windows Azure di Microsoft];
  • IaaS (Infrastructure as a Service) – Fornisce l’accesso, on-demand e sotto forma di servizio, a risorse infrastrutturali virtualizzate (elaborazione, storage, rete). [es. Amazon EC2]

Alla base di tutto, ovviamente, vi è il “ferro”. Per questo motivo alcuni riportano giustamente, sotto lo IaaS, l’ulteriore livello del HaaS (Hardware as a Service) sul quale poi, a ben vedere, si va ad innestare il livello della Virtualizzazione (che non sto qui a trattare perché si aprirebbe un mondo a parte), senza il quale il Cloud non potrebbe esistere perché verrebbe meno tutta la flessibilità del modello, apportata proprio dalla possibilità di astrarsi dai vincoli stringenti del livello fisico mediante il ricorso massivo a macchine virtuali.

Ciò che emerge con chiarezza è che nel paradigma cloud praticamente tutto è erogato nella modalità *aaS, cioè sotto forma di servizio.

I 4 modelli di implementazione del CC secondo il NIST

I 4 modelli di implementazione sono:

  • Public Cloud – l’infrastruttura cloud è resa accessibile ad un pubblico ampio per iniziativa di un fornitore di servizi cloud. Non appartiene dunque ad una singola organizzazione/utente bensì viene condivisa tra più “soggetti” diversi;
  • Private Cloud – l’infrastruttura cloud è ad uso esclusivo di un’organizzazione, amministrata in proprio (cloud privato interno), oppure da terzi (cloud privato esterno). Nel secondo caso l’infrastruttura è resa accessibile al cliente (e mantenuta sicura) attraverso reti di tipo VPN (Virtual Private Network);
  • Community Cloud – l’infrastruttura cloud è condivisa e dunque serve più organizzazioni diverse che, però, condividendo medesime esigenze e usufruendo di analoghi servizi, decidono di riunirsi in un’unica comunità . Come il cloud privato, può essere amministrato direttamente dal cliente oppure da terzi.
  • Hybrid Cloud – l’infrastruttura è composta da due o più cloud (privato, comunitario o pubblico) che rimangono distinte, ma sono legate da tecnologie che consentono la portabilità delle risorse (macchine virtuali, dati, applicazioni, etc.). Si tratta dunque di una combinazione, in varia misura, dei precedenti modelli. Ad esempio: dati e servizi sensibili/riservati trattati in una cloud privata, applicazioni e dati non sensibili su una cloud pubblica.

Cloud Computing: la mia definizione imprecisa ma più alla mano

Dopo tutto questo spiegare, avete capito cos’è il CC? Non ancora? Ok, allora fatemi provare a tirare un po’ le somme (operazione che per forza di cose porterà a banalizzare un po’ il fenomeno CC, altrimenti il NIST non avrebbe elaborato una definizione tanto articolata):

Il Cloud Computing è un insieme di tecnologie che consentono un accesso semplice, flessibile e on-demand (cioè solo quando serve “aprendo semplicemente il rubinetto”) a risorse informatiche (CPU, reti, server , storage, dati, informazioni, applicazioni e servizi) che non risiedono localmente o in un ben preciso sito remoto ma sono distribuite da qualche parte nella cosiddetta nuvola (un pool di asset di elaborazione sia fisici che virtuali interconnessi e tipicamente organizzati all’interno di uno o più data center del cloud provider).

Si fa presto a dire Cloud Gaming

Prendendo per buona la definizione semplificata che ho provato ad abbozzare qui sopra, ne consegue che il Cloud Gaming (CG) non è altro che una tipologia di Cloud Computing nel quale le risorse informatiche a cui si accede sono in qualche modo connesse con il mondo videoludico. In effetti le cose stanno proprio così e, a seconda dell’utente su cui focalizziamo l’attenzione, le risorse in questione potrebbero essere:

  • il gioco o alcune sue parti/feature (qui l’utilizzatore è il videogiocatore finale)
  • o le piattaforme/infrastrutture per lo sviluppo e il deploy del gioco (in questo caso lo user va a coincidere con l’organizzazione che sviluppa/distribuisce il videogioco).

Nel primo caso avremo a che fare con logiche di SaaS, mentre nel secondo con quelle di PaaS (pensiamo ad un framework per la programmazione di videogiochi installato e manutenuto presso le strutture del provider ed erogato agli sviluppatori sotto forma di servizio) e di IaaS (si pensi, ad esempio, alla infrastruttura fisica/virtuale di server che ospita il multiplayer o l’intero mondo di gioco che, invece di essere messa in piedi dallo sviluppatore viene da questo acquisita da un provider, sotto forma di servizio estremamente scalabile).

Già da questi cenni dovrebbe emergere come per il CG, così come accade per il CC, non sia possibile generalizzare ma occorra almeno provare ad individuarne le diverse tipologie. A questo fine, volendo semplificare, è possibile focalizzare l’attenzione su due principali metodi di fare CG: video streaming-based e file-based.

 Cloud Gaming video streaming-based

Questo tipo di CG è il più conosciuto e, spesso, è erroneamente considerato l’unica variante possibile di gaming “on the cloud”. In pratica si tratta di un insieme di tecnologie (spesso proprietarie) che consentono l’accesso diretto e on-demand ad un videogames che non gira sulla propria console, sul proprio pc o sul proprio device mobile, bensì su qualche server (o meglio cluster di server) del cloud provider. Il dispositivo adoperato dall’utente (che potrà anche essere poco performante grazie al fatto che l’elaborazione è totalmente spostata altrove) riceverà tramite la Rete lo streaming video del gioco ed invierà, invece, al server remoto gli input provenienti dal controller (sia esso una tastiera, un mouse, un pad o una periferica di rilevamento della voce e dei movimenti).

Senza dover essere dei super esperti, è chiaro a tutti che il nemico numero uno di questo tipo di approccio si chiama lag, perché a quello intrinseco nel controller, nel device e nello schermo va ad aggiungersi quello della rete; nonostante il ricorso a tecniche di compressione e decompressione dello streaming video anche molto efficaci, solo una connessione di rete veloce e stabile può garantire un’esperienza di gioco soddisfacente e fluida.

Cloud Gaming file-based

Questa tipologia di CG, molto meno nota, prevede un supporto completamente differente proveniente dal cloud provider. Infatti tutta (o comunque buona parte) dell’elaborazione ha luogo presso il device da gioco dell’utente e, quindi, l’infrastruttura cloud del provider non invia alcun streaming video “limitandosi”, invece, ad inviare quando necessario (e tipicamente prima di quando saranno effettivamente necessari) dei file e dei dati aggiuntivi. In questo caso, ovviamente, il dispositivo dell’utente non può essere un thin client perché deve supportare l’installazione e l’elaborazione del gioco e la memorizzazione in locale dei dati provenienti dalla nuvola. In compenso, la velocità e la stabilità della connessione di rete (seppur ancora rilevanti) non sono più così stringenti come nel caso dello streaming video.

Cloud Gaming e Next-gen: l’approccio di Microsoft vs quello di Sony

Per i più attenti alle notizie videoludiche, a questo punto, dovrebbe essere molto semplice collocare sotto il giusto cappello sia il cloud che troveremo su Playstation 4 sia quello che ci attende su Xbox One.

Ad ogni modo, per dovere di completezza, fatemi ribadire che la strategia in termini di CG di Microsoft sarà ben diversa (sia nella tipologia sia nelle finalità) da quella che adotterà Sony:

il CG di Sony su PS4 il CG di Microsoft su Xbox One
tipologia di CG video streaming-based file-based
piattaforma tecnologica Gaikai Window Azure (adattato alle esigenze di videogiocatori e sviluppatori)
infrastruttura di supporto al momento non nota 300 mila server (sia fisici che virtuali) dedicati e sparsi per il mondo nei vari cloud datacenter di Microsoft, in grado di garantire per ogni console reale la disponibilità di una potenza extra (sia in termini di CPU che di RAM) equivalente a quella di altre 3 Xbox One.
finalità d’uso aprire su PS4 le porte al retrogaming online, dando ai possessori della console la possibilità di giocare via streaming titoli della Playstation, della Playstation2 e anche della PS3. Il gioco non sarà, dunque, running sulla console ma su server remoti che invieranno in tempo reale lo streaming del video alla PS4, e riceveranno da questa gli input provenienti dal controller. consentire alla console, quando collegata in rete, di delegare (se e quando necessario) parte del carico computazionale ai server distribuiti dell’infrastruttura cloud di Microsoft. Non è quindi previsto un totale spostamento dell’elaborazione nel datacenter ma l’impiego di una sorta di modello ibrido console-datacenter il cui obiettivo è duplice: semplificare la vita agli sviluppatori grazie alla flessibilità del cloud e, laddove possibile, migliorare l’esperienza di gioco offerta agli utenti. Ovviamente, a causa della latenza intrinseca nella rete infinitamente più elevata di quella che caratterizza la comunicazione tra i componenti interni della console, il cloud computing (come sostenuto anche da Microsoft) non potrà supportare la Xbox One nel calcolo di flussi di dati in tempo reale. Per intenderci, ad esempio, non potrà contribuire alla miglior resa grafica di quegli elementi soggetti a continue ed immediate modifiche. In compenso potrà essere adoperato per supportare la console (inviandole, prima che servano, i dati necessari) in quegli aspetti che non necessitano di una risposta immediata ma che, comunque, potrebbero essere lo stesso molto esosi in termini di cicli di clock necessari per elaborarli. In pratica, il CG pensato da Microsoft potrà essere adoperato dagli sviluppatori, oltre che per le attività più standar come la creazione dinamica (grazie alla rapidità di accensione, spegnimento, duplicazione e migrazione delle macchine virtuali) dei server di gioco per le sessioni multiplayer, anche per scenari d’uso più avanzati nei quali:

  • Xbox One potrebbe effettuare i calcoli su quello che è nelle nostre immediate vicinanze e che deve rispondere con maggior efficacia ed immediatezza alle nostre azioni
  • mentre al Cloud potrebbe essere demandata la simulazione di tutto quello che accade nel resto del mondo (magari persistente) di gioco, come l’IA secondaria (che apparirebbe meno ripetitiva) e la fisica di oggetti e ambienti lontani dallo spettatore (che apparirebbero più vivi e dinamici)
  • il tutto senza che gli sviluppatori debbano dotarsi di costosi server proprietari.
disponibilità del servizio la tecnologia, per ammissione della stessa Sony, non è ancora del tutto matura. Il servizio di retrogaming online, infatti, non sarà disponibile al lancio della console ma solo a partire dal 2014/2015 e comunque in modo graduale; prima i titoli più semplici (PS e PS2) e dunque meno esosi dal punto di vista del peso sulla banda dello streaming video, e solo in un secondo momento quelli della PS3. il servizio è già a disposizione degli sviluppatori che potranno decidere se utilizzarne nei propri titoli determinate feature (come avverrà, ad esempio, su Forza MotorSport 5 e su Titanfall) oppure no.
banda necessaria ai videogiocatori per usufruire del servizio Al momento non ci è dato sapere questo tipo di informazione, anche perché il range potrebbe essere molto ampio; titoli più recenti e graficamente più complessi richiederanno molta più banda di quella necessaria per un gioco della prima Playstation. Ad ogni modo, non è difficile prevedere che, per un’esperienza di gioco fluida, lo streaming video richiederà una connessione di rete molto veloce e soprattutto stabile (due caratteristiche che di sicuro non userei per descrivere le connessioni italiane) L’assenza di un flusso dati in tempo reale, sostituito da un download sulla console di dati (elaborati nel cloud) prima che questi servano effettivamente, porta ad una situazione nella quale la quantità di banda necessaria sarà meno elevata rispetto a quella che può servire per uno streaming video privo di rallentamenti e blocchi. Anche in questo caso non è possibile dire con precisione quanta banda servirà per usufruire senza problemi dei vantaggi provenienti dalla nuvola, però è plausibile ipotizzare che Microsoft richiederà, agli sviluppatori che vogliono creare un gioco per Xbox One, di studiare e ottimizzare l’eventuale ricorso al supporto cloud in modo che il trasferimento asincrono di dati e file verso la console richieda una banda in linea con la connessione pari a 1.5Mbps che Redmond ha indicato come soglia minima raccomandata per un uso ottimale della sua futura console.

Con questo è tutto. Se avete avuto la pazienza di arrivare fino a qui spero di aver contribuito a chiarire un po’ le idee sull’argomento CC, CG e Console Next-gen, o almeno di avervi fatto percepire quanto questo sia articolato e leggibile su più livelli, tanto da non poter essere liquidato con un banale “è meglio il cloud di Sony/Microsoft”.

Se avete dubbi, domande o critiche (si spera costruttive) da sottopormi non esitate a farlo commentando questo post o direttamente su twitter (@GamingAdd_slp).