Architettura delle applicazioni di rete
Prima di occuparvi della codifica software, dovreste avere un progetto dettagliato dell’architettura dell’applicazione, che è significativamente diversa dall’architettura di rete (per esempio, l’architettura Internet a cinque livelli).
Per lo sviluppatore, l’architettura di rete è fissata e fornisce alle applicazioni uno specifico insieme di servizi, ma il suo compito è progettare l’architettura dell’applicazione e stabilire la sua organizzazione sui vari sistemi terminali.
Nella scelta, lo sviluppatore si baserà probabilmente su una delle due principali architetture attualmente utilizzate: l’architettura client-server o l’architettura P2P.
Nell’architettura client-server, vi è un host sempre attivo, chiamato server, che risponde alle richieste di servizio di molti altri host, detti client.
Questi ultimi possono essere sempre o solo saltuariamente attivi.
Un esempio classico è rappresentato dall’applicazione web, in cui un server web, sempre attivo, risponde alle richieste dei browser in funzione sugli host client.
Quando riceve una richiesta di un oggetto da parte di un client, il server risponde inviandolo.
Da notare che nell’architettura client-server i client non comunicano direttamente tra loro; così, nell’applicazione web, i browser non interagiscono direttamente tra loro.
Inoltre, il server dispone di un indirizzo fisso, diffusamente conosciuto, detto IP.
Il client può quindi contattare il server in qualsiasi momento, inviandogli un pacchetto.
Tra le più note applicazioni con architettura client-server, ricordiamo il Web, il trasferimento dei file FTP, Telnet e la posta elettronica.
In un’applicazione client-server spesso un singolo server non è in grado di rispondere a tutte le richieste dei suoi client.
Per esempio, un noto sito web di notizie potrebbe rapidamente soccombere qualora si basasse su un solo server per gestire tutte le richieste.
Per questo motivo, nelle architetture client-server si usano cluster di host, chiamati anche server farm, per creare un potente server virtuale e distribuire il carico di lavoro.
I servizi applicativi basati su un’architettura client-server fanno spesso un uso intensivo dell’infrastruttura in quanto richiedono che il fornitore di servizi compri, installi ed effettui la manutenzione della server farm.
Inoltre, i fornitori di servizi devono pagare periodicamente i costi di interconnessione e di banda per inviare e ricevere dati da e per Internet.
I servizi più comuni come i motori di ricerca (Google), il commercio su Internet (Amazon e Ebay), la posta elettronica basata su Web (Gmail), il social networking (Facebook, Twitter, Instagram) e la condivisione di file utilizzano in modo intensivo le infrastrutture e pertanto fornire tali servizi ha un costo non irrisorio.
In un’architettura P2P l’infrastruttura di server sempre attivi è minima o del tutto assente, si sfrutta, invece, la comunicazione diretta tra coppie arbitrarie di host, chiamati peer (ossia pari), collegati in modo intermittente.
I peer non appartengono a un fornitore di servizi, ma sono computer fissi e portatili controllati dagli utenti, e la maggior parte dei peer si trova nelle case, nelle università e negli uffici.
Dato che i peer comunicano senza passare attraverso un server specializzato, l’architettura viene chiamata peer-to-peer.
Molte tra le applicazioni attualmente diffuse e con elevata intensità di traffico sono basate su architettura P2P.
Queste applicazioni comprendono la distribuzione di file (Torrent), la ricerca/condivisione di file (eMule, LimeWire), la telefonia su Internet (Skype) e IPtv.
Alcune applicazioni hanno un’architettura ibrida, combinando sia elementi client-server che P2P. Per esempio, per molte applicazioni di messaggistica istantanea, i server sono usati per tenere traccia degli indirizzi IP degli utenti, ma i messaggi tra utenti sono inviati direttamente tra gli host degli utenti, senza passare attraverso server intermedi.
Uno dei punti di forza dell’architettura P2P è la sua scalabilità.
Per esempio, in un’applicazione di condivisione di file P2P, alcuni peer generano carico di lavoro richiedendo file, ma aggiungono anche capacità di servizio al sistema, rispondendo alle richieste di altri peer.
Le architetture P2P sono anche convenienti, perché normalmente non richiedono una significativa infrastruttura di server e di banda nei server.
Per ridurre i costi, i principali provider sono sempre più interessati a utilizzare architetture P2P nelle loro applicazioni.
D’altra parte a causa della natura fortemente distribuita e aperta delle applicazioni P2P, queste possono rappresentare una grande sfida dal punto di vista della sicurezza.