Architetture
◆
1. Architetture tipiche
•
•
•
repository-based
client server
peer-to-peer
Gabriele Monfardini - Corso di Ingegneria del Software
1
1. Architetture tipiche
Differiscono fra loro per il modo in cui:
•
•
•
•
i dati vengono ripartiti
le risorse e le funzionalità/responsabilità vengono
distribuite
i sottosistemi si interfacciano e comunicano fra
loro
il controllo viene organizzato.
Gabriele Monfardini - Corso di Ingegneria del Software
2
1.1 – Architettura basata su repository
◆
In generale, i sottosistemi possono
condividere dati in due modi:
•
•
◆
Ciascun sottosistema mantiene un suo database, e
passa dati esplicitamente agli altri
I dati condivisi sono mantenuti in un database centrale,
o repository accessibile a tutti
L’architettura a repository è conveniente
quando devono essere condivise grandi
quantità di dati
• Esempi: CAD, CASE tools
Gabriele Monfardini - Corso di Ingegneria del Software
3
Esempio: architettura di un ambiente
CASE (Computer Aided Software
Engineering)
Design
editor
Design
translator
Code
generator
Project
repository
Design
analyser
Program
editor
Report
generator
Gabriele Monfardini - Corso di Ingegneria del Software
4
Caratteristiche della architettura a
repository
◆
Vantaggi
•
•
•
•
◆
Modo efficiente di condividere grandi moli di dati: write once for all to
read
Un sottosistema non si deve preoccupare di come i dati sono
prodotti/usati da ogni altro sottosistema
Gestione centralizzata di backup, security, access control, recovery da
errori...
Il modello di condivisione dati è pubblicato come repository schema
==> facile aggiungere nuovi sottosistemi
Svantaggi
•
•
•
•
I sottosistemi devono concordare su un modello dati di compromesso
==> minor performance
Data evolution: la adozione di un nuovo modello dati è difficile e costosa:
(a) esso deve venir applicato a tutto il repository, e (b) tutti i
sottosistemi devono essere aggiornati
Diversi sottosistemi possono avere diversi requisiti su backup, security…
Non supportati
E’ difficile distribuire efficientemente il repository su piu’ macchine
(continuando a vederlo come logicamente centralizzato): problemi di
ridondanza e consistenza dati.
Gabriele Monfardini - Corso di Ingegneria del Software
5
1.2 – Architettura Client-server
◆
E’ una architettura distribuita dove dati ed
elaborazione sono distribuiti su una rete di nodi di
due tipi:
•
•
I server sono processori potenti e dedicati: offrono servizi
specifici come stampa, gestione di file system,
compilazione, gestione traffico di rete, calcolo.
I clienti sono PC o workstation sui quali girano le
applicazioni-utente, che utilizzano i servizi dei server
(tramite remote procedure calls).
◆
I Clienti devono conoscere i nomi e la natura dei Server;
◆
I Server non devono conoscere identità e numero dei Clienti.
Gabriele Monfardini - Corso di Ingegneria del Software
6
Computers in rete locale
c1
CC1
c2
CC2
CC3
Network
s1, s2
c3, c4
s3, s4
Server
computer
SC1
SC2
c5, c6, c7
c8, c9
CC4
CC5
c10, c11, c12
Client
computer
CC6
Gabriele Monfardini - Corso di Ingegneria del Software
7
Client-server- Biblioteca elettronica di
foto e film
The client program is an integrated user-interface
to the services
Client 1
Client 2
Client 3
Client 4
Wide-bandwidth network
Catalogue
server
Video
server
Picture
server
Hypertext
server
Catalogue
Film clip
files
Digitiz ed
photographs
Hypertext
web
Providing links
to other servers
Transmit quickly,
in synchrony,
low resolution
High resolution,
no stringent timing
requirements
Gabriele Monfardini - Corso di Ingegneria del Software
(complementary
info)
8
Strati funzionali nell’architettura C/S
◆
Presentation layer
•
◆
Application processing layer
•
◆
Presentazione dei risultati
dell'elaborazione, raccolta input
Presentation layer
Funzionalità specifiche
dell'applicazione (in un sistema
bancario, ad es., apertura conti,
gestione titoli ecc...)
Application processing
layer
Data management layer
•
Amministrazione dei
dati/database
Data management
layer
Gabriele Monfardini - Corso di Ingegneria del Software
9
Architettura one-tier
◆
E' una architettura client/server nella
quale tutto gira su una singola macchina
•
•
Dal momento che l'applicazione è
centralizzata e funziona in un ambiente
noto e circoscritto, è facile da manutenere,
controllare ed è sicura riguardo all'accesso
improprio ai dati
Manca però di scalabilità, portabilità,
flessibilità
Gabriele Monfardini - Corso di Ingegneria del Software
10
Architettura two-tier
◆
E' una architettura client/server nella
quale l'interfaccia utente gira sul client
mentre il database ed i dati sono sul
server. La logica dell'applicazione può
essere elaborata sia sul client (‘fat
client’) che sul server (‘thin client’).
Gabriele Monfardini - Corso di Ingegneria del Software
11
Architettura two-tier: thin client e fat
client
Presentation
Thin-client
model
Server
Data management
Application
processing
Client
Presentation
Application processing
Fat-client
model
Client
Gabriele Monfardini - Corso di Ingegneria del Software
Server
Data
management
12
Architettura three-tier
◆
E' una architettura client/server con tre processi
ben separati che vengono eseguiti su tre
piattaforme diverse:
•
1. L'interfaccia utente che viene eseguita sul client
•
2. I moduli che realizzano l'elaborazione dei dati e le
funzionalità specifiche dell'applicazione. Questo strato gira su
una piattaforma che è spesso chiamata application server.
3. Il DBMS che mantiene i dati necessari all'application server.
La piattaforma che implementa questo strato è spesso detta
database server.
•
◆
L'architettura three-tier ha diversi vantaggi
rispetto a quella one-tier o two-tier:
•
•
Una maggiore modularità che rende più facile modificare
i componenti di uno strato senza che vi siano influenze
sugli altri
Separare le funzioni rende più facile avere performance
più elevate all'aumentare delle richieste
13
Three-tier architecture – struttura
ed esempio
Presentation
Client
Client
Server
Server
Application
processing
Data
management
HTTP interaction
Database server
Web server
Client
SQL query
Account service
provision
SQL
Customer
account
database
Client
Client
Gabriele Monfardini - Corso di Ingegneria del Software
14
Caratteristiche dell'architettura
client-server
◆
Vantaggi
•
•
•
◆
La distribuzione dei dati (quando c’è) è ovvia
Economico: permette di dimensionare l’hardware a seconda del
servizio supportato
Facile aggiungere nuovi server, o aggiornare quelli
presenti, senza toccare gli altri sottosistemi (server)
Difficoltà
•
•
•
I sottosistemi usano diversa rappresentazione e organizzazione
dei dati. Lo scambio dati (quando serve…) puo’ essere
inefficiente
Management (backup, recovery…) ridondante in ciascun server
Non c’è un registro centrale di server e servizi: puo’ essere
difficile individuare i servizi disponibili (in WAN piu’ che in LAN)
Gabriele Monfardini - Corso di Ingegneria del Software
15
Uso delle architecture
Architetture
Two tier
Sistemi
•
•
•
Sistemi legacy nei
quali separare la
logica dai dati non è
fattibile /
economicamente
conveniente
Sistemi con un alto
livello di
computazione ma con
pochi dati
Sistemi orientati ai
dati (navigazione o
ricerche) ma poca
computazione
16
Uso delle architecture
Architetture
Two-tier
con fat
clients
Sistemi


Applicazioni dove
l'eleborazione, di solito
piuttosto elevata, viene
eseguita sul client
(esempio visualizzazione di
dati)
Applicazioni con
funzionalità lato utente
sufficientemente stabili
Gabriele Monfardini - Corso di Ingegneria del Software
17
Uso delle architecture
Architetture
Three tier
Sistemi


Applicazioni grandi con
centinaia/migliaia di clienti
Applicazioni che integrano
ed elaborano informazioni
provenienti da fonti diverse
Gabriele Monfardini - Corso di Ingegneria del Software
18
Architettura peer-to-peer
◆
Una rete peer-to-peer (P2P) pura non ha
il concetto di client e server ma soltanto
di nodi paritetici che ad ogni istante
funzionano come client e come server
rispetto agli altri nodi della rete
Gabriele Monfardini - Corso di Ingegneria del Software
19
Architectura peer-to-peer pura
◆
◆
Non esistono server centrali che tengono
traccia dei nodi e delle informazioni loro
associate e che rispondono alle
interrogazioni che li riguardano
Non ci sono server centrali che
controllino la rete
Gabriele Monfardini - Corso di Ingegneria del Software
20
Architetture peer-to-peer ibride
◆
◆
◆
Esistono server centrali che tengono le
informazioni sui nodi e rispondono alle
interrogazioni su di essi
I nodi tengono le risorse disponibili
(mentre i server non hanno risorse) ed
informano di tali risorse i server
I nodi condividono le risorse fra loro
Gabriele Monfardini - Corso di Ingegneria del Software
21
BitTorrent
◆
◆
◆
◆
◆
Sviluppato da Bram Cohen nel 2002 in
Python
Disponibile per Windows, MacOS e
Linux
Ha bisogno di un server, il tracker che
tiene traccia dei client per poterli
mettere in comunicazione
Il tracker gestisce le risorse e può
bannare clienti che non rispettino le
regole
Tracker pubblici/privati (a invito)
Gabriele Monfardini - Corso di Ingegneria del Software
22
BitTorrent: file .torrent
◆
◆
◆
◆
Il file originale è diviso in tante parti
(frammenti o segmenti) di cui si calcola
un codice hash con SHA1
Il numero dei frammenti e i codici hash
necessari a garantire l'integrità dei dati
sono contenuti nel file .torrent
Tutti i client sono in grado di leggere e
produrre file .torrent
Il file .torrent contiene anche l'URL del
tracker in una apposita sezione
announce
Gabriele Monfardini - Corso di Ingegneria del Software
23
BitTorrent: come trovare il
.torrent
◆
◆
Il file .torrent è messo a disposizione
da chi ha distribuito la prima copia del
file
Esistono motori di ricerca specifici che
indicizzano solo file .torrent
Gabriele Monfardini - Corso di Ingegneria del Software
24
BitTorrent: seeds e peers
◆
◆
Seed: nodo che possiede il file e sta
solo facendo upload (questa fase è
detta seeding)
Peer: nodo che non possiede ancora
l'intero file e sta quindi facendo
download e upload ossia funge
contemporaneamente da client e da
server.
Uno dei vantaggi del protocollo BT è
che l'upload inizia non appena il peer è
in possesso di un frammento completo
Gabriele Monfardini - Corso di Ingegneria del Software
25
BitTorrent: leechers
◆
Share ratio=upload/download
◆
Tanto più è alto, quanto più il
comportamento è “collaborativo”
I peer con share ratio molto basso o
nullo sono detti leechers (sanguisughe)
e sono penalizzati in vari modi (ad
esempio essendo bannati da certi
tracker, oppure venendo penalizzati nel
download)
◆
Gabriele Monfardini - Corso di Ingegneria del Software
26
Seeders promotion problem
◆
◆
◆
Il protocollo è molto efficiente per i
contenuti “popolari” ma non favorisce a
sufficienza la disponibilità di contenuti
più rari
Dato che mantenere un seed per un
contenuto poco richiesto comporta dei
costi, la maggior parte dei contenuti
rari diventa non disponibile poco dopo
la sua pubblicazione
Per contrastare il problema si usa il
bundling ossia il mettere insieme più
file simili nello stesso .torrent
Gabriele Monfardini - Corso di Ingegneria del Software
27
Trackerless torrent e DHT
◆
◆
◆
Il tracker limita la resistenza del
protocollo a guasti e attacchi in quanto
è il single point of failure, l'anello
debole della catena
Nel 2005 alcuni client BT hanno
cominciato ad offrire il supporto a
torrent trackerless, senza server
tracker
Il meccanismo funziona implementando
una Distributed Hash Table
Gabriele Monfardini - Corso di Ingegneria del Software
28
DHT
◆
◆
◆
L'idea è quella di costituire un sistema
distribuito che permetta di fare lookup
di una chiave ottenendo un valore
Le coppie (chiave,valore) sono
distribuite tra i vari nodi secondo un
algoritmo noto
Il sistema è congegnato per scalare
bene fino a numeri di nodi molto
elevati (miliardi) e per avere la minima
redistribuzione di chiavi in caso di
scomparsa/comparsa di nodi
Gabriele Monfardini - Corso di Ingegneria del Software
29
DHT
◆
◆
◆
Si inizia da uno spazio astratto (ad
esempio le stringhe di 160 bit)
Dato un filename con i dati ad esso
relativi, tramite una hash function (ad
esempio SHA1) si genera la chiave k
lunga 160 bit del filename
A questo punto l'operazione put(k,dati)
porterà il nodo assegnatario della
chiave k a memorizzare il contenuto e
a rispondere alle seguenti operazioni di
get(k)
Gabriele Monfardini - Corso di Ingegneria del Software
30
DHT
◆
◆
Il collegamento fra nodi è detto overlay
network e le sue proprietà, dal punto di
vista della teoria dei grafi, sono
influenzate dal grado massimo di ogni
nodo (il numero di collegamenti ad altri
nodi) e quindi dal diametro della rete
Come si scelgono i nodi a cui collegarsi
e come vengono distribuite le chiavi
dipende dall'implementazione, ma
spesso si fa riferimento al concetto di
hashing consistente
Gabriele Monfardini - Corso di Ingegneria del Software
31
DHT
◆
◆
◆
L'hashing consistente stabilisce una
funzione distanza fra l'ID del nodo e la
chiave, assegnando ciascuna chiave al
nodo più vicino.
Allo stesso tempo i nodi sono collegati
ciascuno a quelli più vicini ad esso
secondo la funzione distanza
Quando un nodo scompare/riappare
solo i “vicini” saranno influenzati,
dovendo acquisire o cedere parte delle
coppia chiave/valore
Gabriele Monfardini - Corso di Ingegneria del Software
32
Peer eXchanging (PEX)
◆
◆
Con questo meccanismo ogni peer
contatta i peer noti per venire a
conoscenza di altri peer
Quindi questo consente di non avere
tracker fintanto che si possa contattare
uno o più peer iniziale da cui poi
ottenere liste di peer
Gabriele Monfardini - Corso di Ingegneria del Software
33
BitTorrent: traffico e
throttling
◆
◆
Il traffico generato da BT è una
percentuale non indifferente della
banda totale consumata (~20-40%
secondo studi di diversi anni fa)
Per questo motivo alcuni ISP hanno
deciso di limitare la banda concessa al
p2p per non penalizzare il resto del
traffico (throttling), utilizzando
algoritmi di traffic shaping e
alimentando polemiche relative alla
cosiddetta “Net Neutrality”
Gabriele Monfardini - Corso di Ingegneria del Software
34
Contromisure al throttling
◆
◆
MSE/PE: algoritmo di criptazione del
traffico
Alcuni algoritmi avanzati di traffic
analysis sono in grado di capire il tipo
di traffico usando tecniche statistiche
(anche se non il contenuto inviato)
Gabriele Monfardini - Corso di Ingegneria del Software
35