Il termine Grid Computing fu per la prima volta utilizzato nel 1990 come metafora per descrivere un caso d’uso nel quale l’utente era in grado di accedere a risorse computazionali (processore, storage, dati ed applicazioni) con la stessa semplicità con cui era in grado di attingere energia dalla rete elettrica, senza cioè necessitare di reale cognizione sul dove tali risorse erano localizzate o con quali tecnologie hardware e software (sistema operativo) erano realizzate e gestite.
Dal punto di vista tecnico il Grid Computing é oggi sinonimo di pool (cioè una collezione gestita in modo da massimizzare l’utilità e/o minimizzare il rischio) di risorse computazionali e si riferisce quindi a tutte le tecnologie in grado di rendere l’accesso a tali risorse disponibile in modalità on-demand. Benché infatti inizialmente il Grid Computing fosse stato concepito come un modo per combinare le risorse disponibili in una rete in modo da ottenere una potenza di calcolo paragonabile a quella di un supercomputer (distributed supercomputer), l’evoluzione degli ultimi anni lo ha invece avvicinato al mondo aziendale ed alle relative esigenze. Il Grid Computing moderno ha quindi l’obiettivo fondamentale di massimizzare lo sfruttamento di una risorsa (hardware o software) disponibile presso una organizzazione rendendola accessibile a terze parti come servizio negli intervalli di tempo nei quali rimarrebbe sottoutilizzata.
In un simile contesto, il beneficio dello sfruttamento di risorse altrimenti inutilizzate per una organizzazione si traduce quindi in un beneficio in termini di capacità di elaborazione parallela, bilanciamento di carico, alta affidabilità e tolleranza ai guasti per un più vasto bacino di utenza (altre organizzazioni che operano sulla stessa grid) e porta vantaggi economici a tutti gli operatori coinvolti.
Perché tali vantaggi si realizzino é pero necessario che le applicazioni considerate siano idonee ad essere eseguite in un ambiente distribuito. Una suite di produttività personale ad esempio, che tipicamente impegna in maniera modesta l’hardware sul quale opera ed é strettamente dipendente dall’interazione con l’utente attraverso la propria interfaccia grafica, non riceverebbe significativi benefici se eseguita in una grid.
I concetti attinenti alla tematica dello sviluppo di applicazioni per un ambiente distribuito sono tuttavia ben noti agli architetti software, che da anni ormai sono abituati a operare con tecnologie nelle quali lo stesso accesso a risorse tradizionali (disco, database) avviene attraverso precise interfacce standardizzate (si pensi ad esempio ai containers J2EE) e dove l’interazione con il mondo esterno avviene attraverso web-services. Tale approccio permette infatti di realizzare software che, essendo totalmente indipendente dalla piattaforma sottostante e dalla ubicazione delle dipendenze esterne (i web-services fruiscono di un servizio di registrazione e ricerca), può essere installato (anche dinamicamente) ed eseguito in diversi nodi della rete. Ma è comunque evidente che anche in un simile contesto l’efficienza della soluzione deve essere valutata attentamente di caso in caso, poiché non sarebbe ad esempio vantaggioso eseguire su un nodo della rete una applicazione che richieda massiccio acceso a dati allocati altrove.



Ottobre 21, 2011
Informatica