T.P.S.I.T. Applicazioni distribuite




  Per applicazione distribuita si intende un'applicazione costituita da due o più processi che vengono eseguiti in parallelo su macchine distinte connesse da una rete di comunicazione. Un sistema distribuito è costituito da un insieme di applicazioni logicamente indipendenti che collaborano per il perseguimento di obiettivi comuni attraverso una infrastruttura di comunicazione hardware e software. Tutti i grandi sistemi informatici sono oggi dei sistemi distribuiti e presentano come ogni sistema un insieme di vantaggi e di svantaggi.
I principali vantaggi sono:
  1.   Affidabilità: grazie alla sua ridondanza intrinseca un sistema distribuito è in grado di “sopravvivere” a un guasto di un suo componente;
  2.  Integrazione: la capacità che ha un sistema distribuito di integrare componenti spesso eterogenei tra loro, sia per tipologia hardware che per sistema operativo. Ogni componente deve poter interfacciarsi allo stesso modo con il sottosistema di comunicazione del sistema distribuito. Di fondamentale importanza è la possibilità di connettere dispositivi di nuova generazione con legacy system che, di fatto, utilizzano tecnologie in altro modo incompatibili;ù
  3. Trasparenza: il sistema distribuito deve essere visto non come un insieme di componenti ma come un unico sistema di elaborazione: l’utente non deve accorgersi che di interagire con un sistema distribuito ma deve avere la percezione di utilizzare un singolo elaboratore. E' fondamentale garantire trasparenza in termini di accesso (permettere di accedere a risorse locali e remote con le stesse operazioni in modo unico e uniforme) e di locazione (si deve nascondere dove è localizzata una risorsa e permettere di accedere a essa senza conoscerne la locazione);
  4. Economicità: i sistemi distribuiti offrono spesso un miglior rapporto prezzo/qualità rispetto ai sistemi centralizzati;
  5. Apertura: con la definizione di protocolli standard si favorisce l’apertura all’hardware e software di fornitori diversi in modo da avere: interoperabilità, portabilità e ampliabilità. 
  6. Connettività e collaborazione: la possibilità di condividere risorse hardware e software comporta vantaggi economici; 
  7. Prestazioni e scalabilità: la crescita di un sistema distribuito con l’aggiunta di nuove risorse e, quindi, di nuovi servizi, fornisce a tutti i suoi componenti un miglioramento delle prestazioni e permette di sostenere l’aumento del carico di richieste; 
  8. Tolleranza ai guasti: la possibilità di replicare risorse offre una certa garanzia di tolleranza ai guasti. 



     I principali svantaggi sono:
  1.    Complessita': per la struttura hardware i sistemi distribuiti sono più complessi di quelli centralizzati e richiedono strumenti per l’interconnessione degli host e tecniche per l’instradamento corretto dei messaggi e dei dati;
  2.     Sicurezza: con la connessione di più host tra loro si crea la possibilità di accedere a dati e risorse anche a chi non ne ha il diritto; nascono nuove problematiche connesse alla sicurezza che nel caso di sistemi centralizzati erano inesistenti. Oggi l’accesso avviene via etere e via cavo e anche le trasmissioni sono soggette a rischio di intercettazione (sniffing) e quindi richiedono l’applicazione di appositi accorgimenti per tutelare tutti gli utenti e garantire sicurezza e riservatezza nei dati, sia memorizzati sui proprio computer personali, sia trasmessi per transazioni commerciali o semplicemente personali (email). 
  3.     Comunicazione: il trasferimento a distanza delle informazioni richiede nuove tipologie di sistemi di telecomunicazione, sia cablati che wireless, e l’aumento esponenziale degli utenti fa sì che giornalmente aumenti la richiesta di bande trasmissive, anche per migliorare la qualità del servizio offerto e offrire nuove tipologie di applicazioni sempre più performanti (alta velocità, alta definizione, video streaming ecc.).


  
Architettura client-server



Le applicazioni distribuite sono basate su un'architettura client/server. Tale architettura è costituito da un insieme di host che gestiscono una (o più) risorse, i server, e da un insieme di client che richiedono l’accesso ad alcune risorse distribuite gestite dai server. Inoltre ogni processo server può a sua volta diventare client per richiedere accesso ad altre risorse gestite da altri (processi) server.
Nel modello client/server, la comunicazione avviene attraverso lo scambio di messaggi.
Un server è in ascolto tramite un socket su una determinata porta in attesa di richiesta di connessione da parte di un client. Un client, quindi, per comunicare con un server usando il protocollo TCP/IP deve, per prima cosa, “connettersi” al socket dell’host dove il server è in esecuzione specificando l’indirizzo IP della macchina e il numero di porta sulla quale il server è in ascolto.
Le architetture client-server sono normalmente organizzate a “livelli” (tier) dove ogni livello corrisponde a un nodo o gruppo di nodi di calcolo su cui è distribuito il sistema: ciascun livello funziona da server per i suoi client nel livello precedente e da client per il livello successivo ed è organizzato in base al tipo di servizio che fornisce.
Possono essere suddivise in tre livelli applicativi (sw): 
  1. Presentazione (front-end o presentation tier): gestisce le modalità di interazione con l’utente. viene anche detto Presentation Layer (PL). Nei sistemi Web che visualizzano pagine HTML, il Presentation Layer è costituito dai moduli del web server che concorrono a creare i documenti HTML, come gli script PHP, mentre il client può essere identificato con il browser;
  2.   Logica applicativa o middle tier: gestisce le funzioni da mettere a disposizione dell’utente;
  3.   Logica di accesso (back-end o data tier): gestisce l’informazione con eventuale accesso alla base di dati e può essere implementata tramite un DBMS, in questo caso prende il nome di Data Access Layer (DAL).
Un’applicazione distribuita può essere configurata come: 
  1. Architettura a un livello – 1 tier: i tre livelli si trovano su un’unica macchina; Questa architettura non rientra nella tipologia client-server e può essere classificata come architettura a un solo livello; 
  2. Architettura a due livelli – 2 tier: i tre livelli sono divisi tra una macchina client e una macchina server. Si possono individuare due sottocategorie di architetture a due livelli:
      Il modello thin-client, dove il server è responsabile della logica applicativa e gestione dei dati e il client è responsabile dell’esecuzione del software di presentazione
    Il modello thick-client (o fat-client), dove il server è responsabile della gestione dei dati mentre il client è responsabile di presentazione e logica applicativa. 
Il passaggio dal modello thin-client al modello thick-client è avvenuto verso la fine degli anni ’80 con l’aumentare della potenza di calcolo dei PC ed è stato alla base delle architetture distribuite moderne. Tuttavia il modello thin-client è stato il primo passo per effettuare il passaggio dai sistemi mainframe centralizzati alle architetture distribuite con il thick-client si è spostata parte della applicazione sul client favorendo la connessione di host di tipo diverso che era di fatto praticamente impossibile nei modelli precedenti. Il limite delle architetture client/server a due livelli è che sono poco scalabili dato che il server deve gestire la connessione e lo stato della sessione di ciascun client: questo carico di elaborazione porta alla limitazione del numero limitato di client che possono essere gestiti contemporaneamente. 
3. Architettura a tre livelli – 3 tier: ogni livello si trova su una macchina  dedicata. Le macchine comunicano tra loro grazie al livello relativo alla logica applicativa che svolge il ruolo di middleware ed ha lo scopo di realizzare la comunicazione e le interazioni tra i diversi componenti software del sistema distribuito. I vantaggi dell’introduzione del middleware sono notevoli, soprattutto in termini di prestazioni, in quanto in questo modo si favorisce la distribuzione della quantità di elaborazione a scapito, però, dei tempi di comunicazione. Inoltre il sistema è facilmente scalabile in quanto all’aumentare delle richieste di un servizio è possibile aggiungere qualche server in grado di compensare il carico di lavoro ed è inoltre più tollerante ai guasti. Anche in termini di sicurezza il modello a tre livelli porta notevoli vantaggi in quanto rende possibile l’introduzione di sicurezza a livello di servizio e quindi più facilmente gestibile. Nei sistemi 3 tier, data la loro maggiore complessità. è però più difficile la loro progettazione, lo sviluppo e l’amministrazione;


4.   Architettura a n tier: le architetture client-server a N livelli sono una generalizzazione del modello client-server a tre livelli dove vengono scomposti e introdotti un numero qualunque di livelli e server intermedi.

Commenti

Post popolari in questo blog

Storia - La Seconda Rivoluzione Industriale

Matematica - L'intensità di corrente