Una Grid Computing formata solo da browser

Scopriamo il grid computing – I browser sono la tecnologia del futuro per il calcolo distribuito.

Cos’ è una grid computing e quali sono i campi di applicazione

Una grid computing è una infrastruttura di computer collegati  (fisicamente o via etere) tra di loro al fine di effettuare dei calcoli in parallelo.

L’utilizzo di una grid computing nel campo dell’analisi è notevole, poiché permette di velocizzare il calcolo di moltissime applicazioni pratiche.

Di seguito una lista NON esaustiva dei campi di applicazione.

  • Scacchi: per il calcolo della mossa ottimale (usando per esempio algoritmi come l’alpha-beta)
  • Gaming Online: giochi strategici in cui l’intelligenza artificiale del gioco debba fare analisi complesse per rendere il gioco più avvincente
  • Image processing: per il rendering delle immagini
  • Risk Management e Ottimizzazione di portafoglio: analisi di rischio e ottimizzazione di grandi portafogli finanziari
  • Ottimizzazione di trading system: ottimizzazioni in real time di un trading system per speculare sugli andamenti delle azioni, monete …
  • Mining di Crypto Valute: mining delle crypto valute come Bitcoin, Litecoin, Doge…
  • Intelligenza Artificiale per Robotica: per l’utilizzo di algoritmi di intelligenza artificiale
  • Data mining: per effettuare elaborazioni di cluster analysis
  • Ricerca pura: simulazioni in ambito fisico, tecnologico/industriale, farmaceutico…

Un esempio pratico

Facciamo un esempio per capire come una grid computing può velocizzare un calcolo complesso.

Immaginiamo di avere un Risk Manager di un società di investimento, che ogni 5 minuti (per 8 ore al giorno) debba calcolare il rischio di un grosso portafoglio di azioni, opzioni e titoli governativi.

Consideriamo che questo Risk Manager usi un modello dove il calcolo può essere suddiviso in un certo numero di scenari che utilizzano tutti lo stesso algoritmo ma che per ogni scenario si ha un input diverso. Infine immaginiamo che il numero di scenari da calcolare sia 10.000 e che per ognuno di esso l’elaborazione impieghi 1 secondo.

Se il Risk Manger facesse l’elaborazione con un computer standard, impiegherebbe per avere i risultati ben 10.000 secondi, cioè quasi 3 ore! In questi termini il calcolo non serve a nulla al nostro Risk Manager, poiché deve pervenire entro 5 minuti e deve essere ripetuto con lo stesso lasso di tempo per 8 ore al giorno.

La soluzione in questi casi, cioè in presenza di un’analisi formata da un insieme di processi di calcolo tutti con il medesimo algoritmo ma con un differente input, è sicuramente l’utilizzo di una grid computing.

Con un grid computing, i 10.000 scenari verrebbero calcolati tutti in parallelo, cioè contemporaneamente; i risultati quindi arriverebbero entro un tempo che è la somma:

  • del tempo di un singolo scenario (cioè 1 secondo per l’ipotesi fatta)
  • del tempo tecnico di inviare ai 10.000 computer che compongono la grid il codice dell’algoritmo più gli input (qualche secondo)
  • del tempo tecnico per ricevere i risultati e archiviarli (qualche secondo)

Sicuramente la somma delle tempistiche di cui sopra è inferiore ai 5 minuti, permettendo quindi al Risk Manager di poter analizzare il rischio del portafoglio assegnatoli con le tempistiche richieste dalla società di investimento.

Creare una grid computing con i browser

Dal 2009 sono presenti diverse pubblicazioni universitarie nel web relativamente alla possibilità di creare una grid computing utilizzando come “calcolatrici” i browser di chi naviga in rete.

La trasformazione del browser in un vero e proprio motore di calcolo è permesso grazie all’avvento dell’Html5 e in particolare dei web worker (che tutti i browser moderni hanno nativamente implementato).

I web worker sono dei processi di calcolo dove gira del codice in javascript. Questo codice può tranquillamente essere l’algoritmo di calcolo del Risk Manager portato prima ad esempio.

La possibilità quindi di far calcolare a migliaia di browser in parallelo il medesimo algoritmo, ma con diversi input, ha fatto nascere una nuova frontiera del computing:

il JAVASCRIPT DISTRIBUTED COMPUTING, cioè il calcolo che vede letteralmente una “distribuzione” estesa di codice javascript a tutti i browser collegati ad una piattaforma che permette questo tipo di calcolo distribuito.

Pro e contro di una grid computing di browser

Una piattaforma di JAVASCRIPT DISTRIBUTED COMPUTING ha però dei pro e dei contro:

Vantaggi:

Grid enormi a costo zero
si può costruire una grid con migliaia di nodi, utilizzando semplicemente i browser degli utenti connessi alla piattaforma. Considerando che in ogni famiglia sono presenti almeno 4-5 device (tra pc, tablet e smartphone), basterebbero poche migliaia di utenti per riprodurre la potenza di calcolo di un grosso data center.
I costi in tal caso sono pari solo a quelli relativi alla gestione della piattaforma che fa da collettore tra i vari browser.

Il calcolo distribuito è green
Essendo i device che ospitano i browser già costruiti, non si devono spendere altre risorse per creare la grid computing, come invece si farebbe per la costruzione di un data center di pari prestazioni.

Utilizzo nativo del Javascript
il javascript è uno dei linguaggi di scripting più veloci e i browser (come Chrome, Forefox, Internet Explorer) fanno a gara per chi sviluppa l’interprete per javascript più performante.

La sicurezza è garantita
Grazie ai web worker non ci sono problematiche di sicurezza relativamente al codice inviato, poiché i web worker possono solo fare calcoli, non è possibile infatti che il codice inserito nel web worker possa aprire e leggere i file presenti nell’hard disk dell’utente. In altre parole la risoluzione dei problemi di sicurezza è delegata a chi sviluppa il browser (Google, Mozilla, Microsfot …).

Svantaggi:

Chiusura preventiva del browser
Poiché un utente può chiudere in qualsiasi momento il browser, il calcolo a lui assegnato rimane in sospeso, generando un ritardo, poiché la piattaforma di JAVASCRIPT DISTRIBUTED COMPUTING dovrà riassegnare il job di calcolo ad un altro utente.

Mancanza di validazione del risultato
Il risultato non ha nessuna validazione, bisogna prenderlo così com’è stato calcolato dal browser che fa da nodo alla grid computing.

Il dato di input e l’algoritmo sono in chiaro
Come l’html, anche il codice javascript può essere visto nella sua struttura da chi usa il browser (in Chrome basta fare Ctrl+Shift+I).
Questo problema lo si può comunque minimizzare tramite le tecniche di offuscamento del codice (di tool online che eseguono l’offuscamento ce ne sono a decine).

Ritardi strutturali
Esistono dei ritardi strutturali, dovuti all’invio del codice dell’algoritmo e del file di input a tutti i browser che compongono la grid.

Ogni nodo è un differente device con differenti prestazioni
I browser utilizzati possono essere dei device dalle prestazioni molto differenti (pc, tablet e smartphone); questo implica che i tempi di calcolo per ogni nodo della grid possono essere molto diversi anche in presenza dei medesimi input.

Le piattaforme esistenti di JAVASCRIPT DISTRIBUTED COMPUTING 

Al momento di piattaforme che permettono il calcolo distribuito usando i browser degli utenti ce ne sono pochissime.

Nei prossimi anni comunque è probabile che ne nasceranno diverse considerando che i vantaggi che portano questo tipo di piattaforme superano di gran lunga gli svantaggi sopra descritti.

Tali piattaforme probabilmente si differenzieranno tra di loro per come riusciranno ad esaltare i vantaggi del JAVASCRIPT DISTRIBUTED COMPUTING e a minimizzarne gli svantaggi.

Ciurmy : una piattaforma di grid computing con i browser

In quest’ultima parte dell’articolo presento alcune caratteristiche della piattaforma Ciurmy (ciurmy.com) indicando in particolare come vengono minimizzati gli svantaggi sopra descritti.

Ciurmy è essenzialmente una piattaforma di JAVASCRIPT DISTRIBUTED COMPUTING, ma con delle particolarità interessanti.

All’interno di Ciurmy esiste un mercato (chiamato Mercato Cpu Spot), dove chi vuole far parte della grid computing deve semplicemente vendere la propria disponibilità a calcolare.

Per vendere tale disponibilità, l’utente (chiamato Venditore) dovrà solo scegliere il prezzo (in c€ per ora di calcolo) e cliccare il tasto “vendi” nell’interfaccia apposita.

Chi vuole invece utilizzare la grid computing per le proprie analisi (chiamato Acquirente), dovrà comprare la potenza di calcolo offerta dagli utenti che la stanno vendendo.

Per acquistare l’utente dovrà selezionare il codice su cui dovranno essere fatti i calcoli, definire il prezzo di acquisto e cliccare il tasto “acquista”.

Come in un mercato finanziario, se i prezzi dell’acquirente sono uguali o superiori a quelli dei venditori, il calcolo parte in automatico.

I risultati dei calcoli sono archiviati nel sito e visibili direttamente da Excel usando un apposito Addin rilasciato gratuitamente dalla piattaforma.

Perché Ciurmy ha scelto una logica di mercato e non il classico abbonamento mensile ai propri servizi?

Perché con una logica di mercato si hanno i seguenti benefici:

  • La potenza di calcolo offerta dagli utenti con i propri browser diventa una materia prima. La prima commodity digitale esistente al mondo.
  • Il prezzo di acquisto della potenza di calcolo per gli Analisti è trasparente (perché sono loro a sceglierlo) e poi la spesa è on demand. Non ci sono ulteriori spese fisse che un Acquirente deve pagare.
  • Il prezzo di vendita per gli utenti che fanno da nodo per la grid computing è anch’esso trasparente
  • Con una logica di mercato la grid computing diventa dinamica e social.

Come Ciurmy minimizza gli svantaggi del JAVASCRIPT DISTRIBUTED COMPUTING

Ciurmy ha deciso di minimizzare gli svantaggi tipici di queste piattaforme implementando delle logiche che permettano alla community del sito di autoregolarsi.
In altre parole la soluzione offerta non nasce dall’utilizzo di una tecnologia particolare, ma punta invece a implementare delle regole per costruire una community virtuosa.

Come risolve: la chiusura preventiva del browser
In Ciurmy, quando un acquirente di potenza di calcolo compra la disponibilità di calcolare dei venditori, crea per ogni job di calcolo una gara tra venditori (con al massimo 10 utenti diversi), dove solo chi manda per primo il risultato avrà il denaro da parte dell’acquirente.
La modalità a gara permette all’acquirente di minimizzare la possibilità che i risultati non arrivino se un venditore chiude il browser. La gara poi permette anche all’acquirente di avere sempre a disposizione i migliori device che sono connessi alla grid.

Poiché il mantenere aperto il browser è un modo virtuoso con cui partecipare al calcolo distribuito, Ciurmy premia in automatico chi manda i risultati assegnando dei punti (detti punti rank). In altre parole gli utenti vengono “rankizzati” al fine che emergano i migliori.
I punti rank hanno un ruolo fondamentale in questa piattaforma, permettono infatti ai venditori di avere maggiore visibilità nel book (dove sono presenti le offerte di acquisto e vendita) e di poter essere venduti in un mercato apposito, chiamato Mercato dei Punti Rank.

Come risolve:  la mancanza di validazione del risultato
In Ciurmy per supplire al problema che i risultati non sono validati, è stata creata la figura del Guardiano.
Un Guardiano è semplicemente un altro utente della community di Ciurmy che con un browser effettuerà nuovamente l’elaborazione di ogni job di calcolo comprato dall’acquirente.
Il processo di assegnazione dei job di calcolo ai Guardiani in Ciurmy è totalmente automatico e permette anche ai device più lenti che difficilmente vinceranno delle gare (tipo gli smarthphone)  di poter avere una retribuzione per i calcoli effettuati.

Conclusioni

Il JAVASCRIPT DISTRIBUTED COMPUTING è una realtà che dovrebbe pervadere le nostre vite nei prossimi anni.

Il mondo ha una gran fame di calcoli e una grid computing fatta da milioni di browser sicuramente potrà ritagliarsi un ruolo interessante in questo contesto.

Speriamo che ogni casa diventi nel prossimo futuro una piccola computing farm.

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

gestione-team
Up Next:

Come gestire un team di sviluppo con successo

Come gestire un team di sviluppo con successo