T.P.S.I.T. Applicazioni distribuite
I principali vantaggi sono:
- Affidabilità: grazie alla sua ridondanza intrinseca un sistema distribuito è in grado di “sopravvivere” a un guasto di un suo componente;
- 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;ù
- 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);
- Economicità: i sistemi distribuiti offrono spesso un miglior rapporto prezzo/qualità rispetto ai sistemi centralizzati;
- 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à.
- Connettività e collaborazione: la possibilità di condividere risorse hardware e software comporta vantaggi economici;
- 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;
- Tolleranza ai guasti: la possibilità di replicare risorse offre una certa garanzia di tolleranza ai guasti.
I
principali svantaggi sono:
- 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;
- 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).
- 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):
- 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;
- Logica applicativa o middle tier: gestisce le funzioni da mettere a disposizione dell’utente;
- 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:
- 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;
- 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 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
Posta un commento