Il di­stri­bu­ted computing (in italiano “calcolo di­stri­bui­to”) è ormai parte in­te­gran­te nell’ambito della vita quo­ti­dia­na e la­vo­ra­ti­va. Chi naviga in Internet ed effettua una ricerca su Google utilizza proprio il di­stri­bu­ted computing. Le ar­chi­tet­tu­re di sistema di­stri­bui­te ca­rat­te­riz­za­no anche molte attività d’impresa e for­ni­sco­no a un gran numero di pre­sta­zio­ni e servizi, suf­fi­cien­ti capacità di calcolo ed ela­bo­ra­zio­ne. Vi spie­ghe­re­mo di seguito come funziona questa procedura e raf­fi­gu­re­re­mo le ar­chi­tet­tu­re di sistema uti­liz­za­te e gli ambiti di impiego. Verranno anche trattati i vantaggi del calcolo di­stri­bui­to.

Cos’è il di­stri­bu­ted computing?

Il termine “di­stri­bu­ted computing” definisce un’in­fra­strut­tu­ra digitale in cui un cluster risolve dei compiti di calcolo. No­no­stan­te la distanza fisica, i computer lavorano au­to­no­ma­men­te e in modo stret­ta­men­te in­ter­con­nes­so in un processo di sud­di­vi­sio­ne dei compiti. Per la procedura è se­con­da­rio il tipo di server uti­liz­za­to, oltre a computer par­ti­co­lar­men­te per­for­man­ti e po­sta­zio­ni di lavoro di tipo pro­fes­sio­na­le, si possono collegare anche mi­ni­com­pu­ter e computer desktop di utenti privati.

Visto che l’hardware condiviso non può avere una memoria comune a causa della se­pa­ra­zio­ne fisica, i computer in­te­res­sa­ti si scambiano messaggi e dati come risultati di calcolo tramite una rete. La co­mu­ni­ca­zio­ne tra computer avviene lo­cal­men­te per mezzo di Intranet (ad esempio in un centro di calcolo) o a livello in­ter­re­gio­na­le o globale via Internet. La tra­smis­sio­ne dei messaggi è ef­fet­tua­ta tramite pro­to­col­li Internet come TCP/IP e UDP.

All’insegna del principio di tra­spa­ren­za, il di­stri­bu­ted computing aspira a mostrarsi ester­na­men­te come un’unità fun­zio­na­le e a sem­pli­fi­ca­re il più possibile il controllo della parte tecnica. Gli utenti che ad esempio ef­fet­tua­no la ricerca di un prodotto nella banca dati di un negozio online, con­si­de­ra­no l’espe­rien­za d’acquisto come un processo unico e non devono pre­oc­cu­par­si dell’ar­chi­tet­tu­ra di sistema modulare dell’in­fra­strut­tu­ra uti­liz­za­ta.

Infine il di­stri­bu­ted computing è anche una com­bi­na­zio­ne di di­stri­bu­zio­ne dei compiti e in­te­ra­zio­ne coor­di­na­ta. Lo scopo è quello di rendere il più ef­fi­cien­te possibile la gestione dei compiti e di trovare soluzioni fles­si­bi­li e pratiche.

Come funziona il di­stri­bu­ted computing?

Il punto di partenza di un calcolo nel di­stri­bu­ted computing è una par­ti­co­la­re strategia per la ri­so­lu­zio­ne dei problemi. Un singolo problema viene suddiviso e ciascun sotto-settore viene elaborato da un’unità di calcolo. Le ap­pli­ca­zio­ni di­stri­bui­te (Di­stri­bu­ted Ap­pli­ca­tions), che girano su tutte le macchine del cluster, si occupano dell’at­tua­zio­ne operativa.

Le ap­pli­ca­zio­ni di­stri­bui­te si servono spesso di un’ar­chi­tet­tu­ra client-server. Client e server operano tramite sud­di­vi­sio­ne del lavoro e coprono con i software in­stal­la­ti de­ter­mi­na­te funzioni di ap­pli­ca­zio­ne. La ricerca di un prodotto avviene come segue: il client funge da istanza di in­se­ri­men­to e in­ter­fac­cia utente, che accoglie la richiesta dell’utente e la pre­di­spo­ne di modo che venga inoltrata a un server. Il server remoto si fa carico della parte prin­ci­pa­le della funzione di ricerca ed effettua la ricerca in una banca dati. Il risultato della ricerca viene preparato lato server per essere tra­spor­ta­to nuo­va­men­te al client e co­mu­ni­ca­to allo stesso per mezzo della rete. Alla fine si ha l’output del risultato sul display dell’utente.

Nel processo di­stri­bui­to vengono più spesso inclusi dei Midd­leware-Services. Il midd­leware, come speciale strato software, definisce lo schema (logico) di in­te­ra­zio­ne tra partner e ga­ran­ti­sce nel sistema di­stri­bui­to la con­ci­lia­zio­ne e un’in­te­gra­zio­ne ottimale. Così vengono messi a di­spo­si­zio­ne in­ter­fac­cia e servizi che servono ad eliminare i gap tra diverse ap­pli­ca­zio­ni, con­sen­ten­do e mo­ni­to­ran­do la co­mu­ni­ca­zio­ne tra questi (per esempio tramite con­trol­ler di co­mu­ni­ca­zio­ne). Per lo svol­gi­men­to operativo, il midd­leware mette ad esempio a di­spo­si­zio­ne con il Remote Procedure Call (RPC) un com­pro­va­to sistema di co­mu­ni­ca­zio­ne tra processi per di­spo­si­ti­vi diversi, che viene spesso uti­liz­za­to nelle ar­chi­tet­tu­re client-server per trovare prodotti nelle ricerche nelle banche dati.

Questa funzione di in­te­gra­zio­ne, che lavora secondo il principio della tra­spa­ren­za, può essere in­ter­pre­ta­ta anche come funzione di tra­du­zio­ne. Sistemi ap­pli­ca­ti­vi e piat­ta­for­me ete­ro­ge­nei dal punto di vista tecnico, che nor­mal­men­te non po­treb­be­ro co­mu­ni­ca­re tra loro, parlano per così dire la stessa lingua e lavorano assieme in maniera pro­dut­ti­va grazie al midd­leware. Il midd­leware, oltre che per l’in­te­ra­zio­ne tra di­spo­si­ti­vi e piat­ta­for­me, si occupa anche di altri compiti, come la gestione dei dati. Inoltre regola l’accesso delle ap­pli­ca­zio­ni di­stri­bui­te alle funzioni e ai processi dei sistemi operativi, che sono di­spo­ni­bi­li lo­cal­men­te sui computer collegati.

Quali tipi di di­stri­bu­ted computing esistono?

Il di­stri­bu­ted computing è un fenomeno sfac­cet­ta­to con in­fra­strut­tu­re in parte anche molto diverse. Risulta quindi difficile de­ter­mi­na­re tutte le varianti del di­stri­bu­ted computing. A questa area dell’in­for­ma­ti­ca vengono però più fre­quen­te­men­te at­tri­bui­ti tre sotto-aree o sotto-settori:

  • Cloud Computing
  • Grid Computing
  • Cluster Computing

Nel Cloud Computing si utilizza il calcolo di­stri­bui­to per mettere a di­spo­si­zio­ne dei clienti in­fra­strut­tu­re e piat­ta­for­me altamente scalabili e van­tag­gio­se dal punto di vista economico. I fornitori in cloud prov­ve­do­no per lo più fornendo le loro capacità sotto forma di servizi hostati. Nella pratica si sono affermati diversi modelli:

  • Software as a Service (SaaS): con il servizio SaaS il cliente utilizza le ap­pli­ca­zio­ni di un fornitore cloud e le relative in­fra­strut­tu­re (come server, memoria online, capacità di calcolo). L’accesso alle ap­pli­ca­zio­ni è possibile con diversi di­spo­si­ti­vi tramite un co­sid­det­to “Thin Client Interface” (per esempio una web app basata su browser). La gestione e l’am­mi­ni­stra­zio­ne delle in­fra­strut­tu­re dislocate viene assunta dal fornitore del cloud.
  • Platform as a Service (PaaS): nel caso del servizio PaaS viene messo a di­spo­si­zio­ne un ambiente basato su cloud, come per lo sviluppo di ap­pli­ca­zio­ni web. Il cliente assume il controllo delle ap­pli­ca­zio­ni messe a di­spo­si­zio­ne e può con­fi­gu­ra­re delle im­po­sta­zio­ni ad hoc per l’utente, il gestore del cloud si occupa dell’in­fra­strut­tu­ra tecnica per il di­stri­bu­ted computing.
  • In­fra­struc­tu­re as a Service (IaaS): nel caso del servizio IaaS viene messa a di­spo­si­zio­ne del provider in cloud un’in­fra­strut­tu­ra tecnica, alla quale gli utenti possono avere accesso tramite reti private o pubbliche. Fanno ad esempio parte dei com­po­nen­ti dell’in­fra­strut­tu­ra resi di­spo­ni­bi­li: server, capacità di calcolo e di rete, di­spo­si­ti­vi di co­mu­ni­ca­zio­ne come router, switch o firewell, spazio di sal­va­tag­gio e sistemi per l’ar­chi­via­zio­ne e backup dati. Il cliente, dal canto suo, assume il controllo sui sistemi operativi e sulle ap­pli­ca­zio­ni rese ac­ces­si­bi­li.

Il grid computing si orienta verso l’idea di un su­per­com­pu­ter con un’enorme capacità di calcolo. Le attività di calcolo sono però svolte non da una, bensì da molte istanze. I server e i PC possono farsi carico in modo in­di­pen­den­te l’uno dall’altro di diversi compiti. I grid computing può avere accesso in maniera molto fles­si­bi­le alle risorse per la gestione dei compiti. So­li­ta­men­te i par­te­ci­pan­ti a un progetto comune mettono a di­spo­si­zio­ne de­ter­mi­na­te capacità di calcolo la sera, quando l’in­fra­strut­tu­ra tecnica non è molto sfruttata.

Un vantaggio è dato dal fatto che possono essere uti­liz­za­ti sistemi molto per­for­man­ti in maniera rapida e, a seconda della necessità di potenza di calcolo, è possibile scalarli. Per aumentare la potenza non è ne­ces­sa­rio so­sti­tui­re o po­ten­zia­re un costoso su­per­com­pu­ter con un oneroso modello più al­l'a­van­guar­dia.

Visto che il grid computing è in grado di creare un su­per­com­pu­ter virtuale da un singolo computer ac­cop­pia­to a un cluster, è anche spe­cia­liz­za­to in problemi che ri­chie­do­no un elevato volume di calcolo. Questa procedura viene spesso uti­liz­za­ta per progetti scien­ti­fi­ci ambiziosi o per de­co­di­fi­ca­re codici crit­to­gra­fi­ci.

Il cluster computing non è fa­cil­men­te di­stin­gui­bi­le dal grid computing. Il termine viene uti­liz­za­to in maniera più generale e si riferisce a tutte le forme che uniscono il singolo computer e le sue capacità di calcolo a un cluster (in italiano “grappolo”, “fascio”). Così abbiamo ad esempio cluster di server, cluster per big data e ambiente cloud, cluster di banche dati e cluster di ap­pli­ca­zio­ni. Inoltre i cluster sono mag­gior­men­te inclusi nell’High-Per­for­man­ce-Computing, che mira a risolvere problemi complessi.

È anche possibile definire diversi tipi di di­stri­bu­ted computing, quando si uti­liz­za­no ar­chi­tet­tu­re di sistema e modelli d’ite­ra­zio­ne di un’in­fra­strut­tu­ra condivisa. Date le complesse ar­chi­tet­tu­re di sistema del di­stri­bu­ted computing si parla spesso anche di di­stri­bu­ted systems (in ita. “sistemi di­stri­bui­ti”).

Tra i più diffusi modelli di ar­chi­tet­tu­re del di­stri­bu­ted computing troviamo:

  • modello client-server
  • modello peer-to-peer
  • modelli a strati (ar­chi­tet­tu­re multi-tier)
  • ar­chi­tet­tu­ra orientata ai servizi (in ingl. service-oriented ar­chi­tec­tu­re, SOA)

Il modello client-server è un semplice modello di in­te­ra­zio­ne e co­mu­ni­ca­zio­ne nel di­stri­bu­ted computing. Un server riceve una richiesta da un client, esegue le procedure di ela­bo­ra­zio­ne ne­ces­sa­rie e rimanda allo stesso una risposta (messaggio, dati, risultati di calcolo).

Un’ar­chi­tet­tu­ra peer-to-peer organizza l’in­te­ra­zio­ne e la co­mu­ni­ca­zio­ne del di­stri­bu­ted computing secondo punti di vista de­cen­tra­ti. Tutti i computer (chiamati anche nodes, in italiano “nodi”) hanno gli stessi diritti e assumono gli stessi compiti e funzioni all’interno della rete. Ogni computer può quindi fungere sia da client che da server. Un esempio di ar­chi­tet­tu­ra peer-to-peer è la bloc­k­chain delle crip­to­va­lu­te.

Nella con­ce­zio­ne di un’ar­chi­tet­tu­ra a strati i singoli aspetti di un sistema software vengono suddivisi in più livelli (ingl. tier, layer), così da aumentare l’ef­fi­cien­za e la fles­si­bi­li­tà del di­stri­bu­ted computing. Questa ar­chi­tet­tu­ra di sistema può essere or­ga­niz­za­ta come ar­chi­tet­tu­ra a due livelli (two-tier), a tre livelli (three-tier) o a N livelli (N-tier) e viene spesso uti­liz­za­ta dalle agenzie pub­bli­ci­ta­rie.

Un’ar­chi­tet­tu­ra orientata al servizio (SOA) mette al centro i servizi e si rivolge in maniera per­so­na­liz­za­ta alle esigenze e alle procedure di un’azienda. Così i singoli servizi si uniscono in un processo aziendale pensato ad hoc. Ad esempio l’intero processo di un “ordine online” può essere rap­pre­sen­ta­to in un SOA, che prevede i servizi “ac­cet­ta­zio­ne ordine”, “verifica credito” e “invio fattura”. Le com­po­nen­ti tecniche (server, banca dati, ecc.), fungono da strumenti ausiliari, ma non sono in primo piano. In questo progetto di di­stri­bu­ted computing ad avere la priorità sono l’in­tel­li­gen­te rag­grup­pa­men­to, col­la­bo­ra­zio­ne e or­ga­niz­za­zio­ne dei servizi, prestando at­ten­zio­ne a come svolgere nel modo più ef­fi­cien­te e senza intoppi i processi aziendali.

In un’ar­chi­tet­tu­ra orientata ai servizi si at­tri­bui­sce par­ti­co­la­re im­por­tan­za a in­ter­fac­cia ben definite, che uniscano i com­po­nen­ti in maniera operativa e aumentino l’ef­fi­cien­za. Quest’ultima trae vantaggio anche dalla fles­si­bi­li­tà del sistema, visto che i servizi possono essere applicati in maniera variabile a più contesti e riu­ti­liz­za­ti nei processi aziendali. Le ar­chi­tet­tu­re orientate ai servizi, che puntano sul di­stri­bu­ted computing, si basano spesso su servizi web. Vengono ad esempio rea­liz­za­ti su piat­ta­for­me condivise come CORBA, MQSeries e J2EE.

I vantaggi del di­stri­bu­ted computing

Il di­stri­bu­ted computing presenta molti vantaggi. Le aziende possono rea­liz­za­re un’in­fra­strut­tu­ra per­for­man­te e ac­ces­si­bi­le che, al posto di grandi computer estre­ma­men­te costosi (main­fra­mes), utilizza computer co­mu­ne­men­te in commercio con mi­cro­pro­ces­so­ri. I grandi cluster possono ad­di­rit­tu­ra superare le capacità di singoli su­per­com­pu­ter e risolvere complesse attività di calcolo dell’High-Per­for­man­ce-Computing.

Dato che le ar­chi­tet­tu­re di sistema del di­stri­bu­ted computing sono basate su molte com­po­nen­ti, a volte ri­don­dan­ti, è facile com­pen­sa­re la perdita di singole unità (maggior sicurezza in caso di mal­fun­zio­na­men­to). Grazie all’elevata sud­di­vi­sio­ne dei compiti, i processi possono essere dislocati e il carico di calcolo suddiviso (di­stri­bu­zio­ne dei carichi).

Molte soluzioni del di­stri­bu­ted computing puntano ad una maggior fles­si­bi­li­tà, che so­li­ta­men­te accresce anche ef­fi­cien­za e red­di­ti­vi­tà. Per trovare una soluzione a de­ter­mi­na­ti problemi possono essere incluse piat­ta­for­me spe­cia­liz­za­te come server per banche dati. Per esempio, tramite le ar­chi­tet­tu­re SOA in ambito aziendale si creano delle soluzioni per­so­na­liz­za­te, che ot­ti­miz­za­no ad hoc de­ter­mi­na­ti i processi aziendali. I gestori possono offrire capacità di calcolo e in­fra­strut­tu­re a livello in­ter­na­zio­na­le, con­sen­ten­do così anche il lavoro in cloud. In questo modo è possibile far fronte alle esigenze dei clienti con offerte sca­glio­na­te e cor­ri­spon­den­ti ai loro bisogni.

Uno degli elementi che con­tri­bui­sco­no alla fles­si­bi­li­tà del di­stri­bu­ted computing è il fatto che permette di sfruttare anche capacità tem­po­ra­nea­men­te inu­ti­liz­za­te per progetti par­ti­co­lar­men­te ambiziosi. Gli utenti sono in grado di contare sulla fles­si­bi­li­tà anche nell’acquisto degli hardware, visto che non sono legati ad un singolo pro­dut­to­re.

Un notevole vantaggio è dato dalla sca­la­bi­li­tà. Alle aziende viene messa a di­spo­si­zio­ne una sca­la­bi­li­tà a breve termine e rapida o, in caso di continua crescita di organico, l’ade­gua­men­to pro­gres­si­vo delle pre­sta­zio­ni di calcolo ne­ces­sa­rie per le proprie esigenze. Nel caso in cui per la sca­la­bi­li­tà si punti su hardware propri, il parco di­spo­si­ti­vi può essere con­ti­nua­men­te ampliato in step eco­no­mi­ca­men­te ac­ces­si­bi­li.

No­no­stan­te i notevoli vantaggi, il di­stri­bu­ted computing presenta anche alcuni svantaggi, un notevole impegno in termini di im­ple­men­ta­zio­ne e ma­nu­ten­zio­ne nel caso di ar­chi­tet­tu­re di sistema complesse. Inoltre i problemi di timing e di sin­cro­niz­za­zio­ne devono essere superati tra istanze di­stri­bui­te. Per quanto riguarda la sicurezza in caso di mal­fun­zio­na­men­to, l’approccio de­cen­tra­liz­za­to è van­tag­gio­so rispetto ad una singola istanza di ela­bo­ra­zio­ne. Però le procedure connesse al di­stri­bu­ted computing com­por­ta­no anche problemi di sicurezza, come lo scambio dati tramite reti aperte e la vul­ne­ra­bi­li­tà a sabotaggi e hac­ke­rag­gi. Le in­fra­strut­tu­re di­stri­bui­te sono in generale più soggette all’errore, visto che a livello di hardware e di software ci sono più in­ter­fac­ce e po­ten­zia­li fonti di problemi. La diagnosi dei problemi e degli errori è inoltre resa più difficile dalla com­ples­si­tà in­fra­strut­tu­ra­le.

Dove viene uti­liz­za­to il di­stri­bu­ted computing?

Il di­stri­bu­ted computing è diventato una tec­no­lo­gia di base es­sen­zia­le per la di­gi­ta­liz­za­zio­ne della vita quo­ti­dia­na e la­vo­ra­ti­va. Internet e i servizi che questo offre sarebbero im­pen­sa­bi­li senza le ar­chi­tet­tu­re client-server e i sistemi di­stri­bui­ti. Il di­stri­bu­ted computing entra in gioco ad ogni ricerca ef­fet­tua­ta con Google, quando istanze di fornitura in tutto il mondo generano in stretta col­la­bo­ra­zio­ne un adeguato risultato di ricerca. Anche Google Maps e Google Earth per i loro servizi si servono del di­stri­bu­ted computing.

Anche sistemi mail e per le con­fe­ren­ze, sistemi di pre­no­ta­zio­ne di compagnie aeree e di catene di hotel, bi­blio­te­che e sistemi di na­vi­ga­zio­ne uti­liz­za­no le procedure e le ar­chi­tet­tu­re del calcolo condiviso. I processi di au­to­ma­zio­ne così come i sistemi di pia­ni­fi­ca­zio­ne, pro­du­zio­ne e pro­get­ta­zio­ne nel mondo del lavoro sono i campi di ap­pli­ca­zio­ne d’elezione di questa tec­no­lo­gia. Le reti sociali, i sistemi mobile, l’on­li­ne­ban­king e l’on­li­ne­ga­ming (sistemi mul­ti­player) uti­liz­za­no ef­fi­cien­ti di­stri­bu­ted systems.

Altri campi di ap­pli­ca­zio­ne del di­stri­bu­ted computing sono le piat­ta­for­me di e-learning, l’in­tel­li­gen­za ar­ti­fi­cia­le e l’e-commerce. Gli acquisti e gli ordini negli shop online vengono so­li­ta­men­te sup­por­ta­ti da sistemi di­stri­bui­ti. In me­teo­ro­lo­gia i sistemi di ri­le­va­men­to e mo­ni­to­rag­gio nella pre­vi­sio­ne delle ca­ta­stro­fi puntano sulle capacità di calcolo di sistemi di­stri­bui­ti. Molte ap­pli­ca­zio­ni digitali og­gi­gior­no si basano su banche dati di­stri­bui­te.

Progetti di ricerca che ri­chie­do­no elevate capacità di calcolo, per i quali prima servivano costosi su­per­com­pu­ter (ad esempio computer Cray), possono ora essere rea­liz­za­ti con i sistemi di­stri­bui­ti. Il progetto Volunteer-Computing Seti@home è stato lo standard di ri­fe­ri­men­to nell’ambito del calcolo condiviso dal 1999 al 2020. Un numero in­de­fi­ni­to di computer domestici di utenti privati hanno valutato i dati del ra­dio­te­le­sco­pio Arecibo che si trova a Puerto Rico, e hanno così aiutato l’uni­ver­si­tà di Berkeley nella ricerca della vita al di fuori del nostro pianeta.

Una par­ti­co­la­ri­tà è stata quella dell’approccio ef­fi­cien­te nell’uso delle risorse: il software di va­lu­ta­zio­ne lavorava solamente nelle fasi in cui i computer degli utenti non erano al­tri­men­ti occupati. Dopo l’analisi dei segnali, i risultati tornavano alla centrale di Berkeley. Esistono progetti com­pa­ra­bi­li in tutto il mondo anche in altre uni­ver­si­tà e istituti.

Consiglio

Le basi del di­stri­bu­ted computing vengono rap­pre­sen­ta­te in modo semplice tramite vari video espli­ca­ti­vi sul canale YouTube di Education 4u.

Vai al menu prin­ci­pa­le