I sistemi distribuiti
Introduzione
Per sistema disribuito si intende un sistema informatico, basato o meno sulla tecnologia Web, composto da componenti diversi e geograficamente separati tra loro, che necessitano di harware e software ingrado di garantire prestazioni di un certo livello. Lo scopo è quello di condividere dati e risorse tra gli utenti del sistema.
Architettura di un sistema distribuito
Non esiste un modello unico di sistema distribuito: si definisce tale un sistema che, per qualsiasi motivo, integra diverse piattaforme hardware e software ed è presente in un'ampia fascia di territorio.
Un sistema non basato sulla tecnologia Web può vedere coinvolte risorse come main frames, midi e personal computer; non è detto nemmeno che le comunicazioni di rete avvengano attraverso gli stessi protocolli e secondo specifiche unificate. Ci possono essere database smembrati su differenti server e software non sempre versatile e ingrado di girare su qualsiasi piattaforma.
Un sistema distribuito basato sulla tecnologia Web, invece, vede coinvolte tipologie di reti come Internet, Intranet e la rete Mobile. Uno stesso sistema basato su Internet o Intranet può necessitare di un server Web, un server di posta, un server FTP, un server firewall per la sicurezza, un PROXY per le connessioni multiple e cosi via. Un sistema mobile, invece, vede coinvolte tecnologie come GSM, WIFI, GPRS, Blue Tooth ed altre, che collaborano tra loro al fine di fornire un servizio unificato.
La fine dei monopoli
Grazie alla scalata al successo della filosofia dell'open-source, colossi come IBM e Microsoft hanno implementato sistemi hardware e software ingrado di rendere maggiormente portabili i sistemi informatici, slegandoli in buona percentuale dalle componenti base della casa madre.
Ad esempio, un sistema scritto in PHP non deve necessariamente girare su sistemi Linux ma può girare anche su server di casa Microsoft. Più difficile il contrario, per quanto sono anni che sento parlare di supporto di .NET da parte del pinguino e non si vede ancora la via per concretizzare.
Grande merito va riconosciuto da XML ed a componenti basati, o quanto meno, scritti in Java. Sfruttando questi due miti della programmazione i sistemi distribuiti hanno vita più semplice e diventa interesse di tutti, anche dei colossi, essere presenti su tutto il mercato e non isolarsi nella propria fetta senza far entrare nessuno.
Problematiche e soluzioni
Finora abbiamo parlato di tecnologie e di sistemi informatici, ma non bisogna dimenticare che l'informatica non è nulla e non serve a nulla senza la presenza dell'uomo, quindi del sistema informativo.
L'uomo, oltre ad essere utente, è anche creatore del sistema, e com'è ovvio che sia si trova di fronte ad una serie di problematiche da risolvere, alcune delle quali già affrontate in maniera discorsiva.
Facciamo uno schema riepilogativo.
- Eterogeneità - Un sistema distribuito è caratterizzato, come già detto, dalla presenza di sistemi, macchine, linguaggi e strutture dati differenti, ovvero tutti elementi non semplici da gestire. Qualora non fosse possibile unificare il sistema in uno stesso ambiente, la soluzione da adottare è quella di un middleware ingrado di gestire le richieste e le risposte di sistemi differenti tra loro. Le tecnologie tipicamente utilizzate solo Java, XML e .NET.
- Sicurezza - Per sicurezza si intende sia l'esclusione dal sistema da parte di utenti non riconosciuti, potenzialmente dannosi, sia la gestione dell'integrità dei dati all'interno del sistema stesso, sia la disponibilità del servizio nel tempo. Allo scopo è necessario costruire un sistema di base robusto, basato su componenti hardware e software testati ed affidabili; è necessario avere uno staff sistemistico capace di far fronte, nel più breve tempo possibile, ad eventuali disfunzioni, sia (cosa più difficile per certi versi) una fascia di utenza formata e capace.
- Scalabilità - Il sistema dev'essere operativo nel tempo e non subire crolli, o quantomeno tentare di evitarli o di ripararli. I possibili inconvenienti a cui far fronte sono i limiti massimi di utenza attiva da gestire, i colli di bottiglia in una fase hardware o software, la gestione delle periferiche, ed i guasti hardware e software. La soluzione rimane simile alle altre: uno staff capace e competente. Molto dipende dalla bontà dei prodotti, dalla bravura dei programmatori e degli analisti nello svolgere un lavoro oculato, e nella capacità dei sistemisti di gestire con versatilità la rete, ad esempio organizzandosi per aggiungere server, aggiungere o duplicare i DNS, e cosi via.
- Concorrenzialità - Una banca dati che viene interrogata ed aggiornata dagli utenti di un sistema distribuito è una banca dati soggetta al lavoro di centinaia o addirittura migliaia di utenti al giorno, ragion per cui è possibile che l'integrità dei dati sia messa a rischio. La prima soluzione dipende dalla scelta iniziale del DBMS, dall'analisi della struttura del database, dalla scalabilità dell'applicazione che vi interagisce e dalla bravura dei sistemisti ingrado di configurare il tutto secondo determinati criteri di sicurezza, sui livelli di accesso degli utenti e sulla manipolazione dei lock del database.
- Trasparenza - E' necessario permettere agli utenti di un sistema distribuito di accedere alle risorse, locali o remote che siano, con semplicità. E' necessario rendere reperibili le risorse senza conoscerne l'allocazione e di configurare, all'occorrenza, i permessi il sola lettura, riservando quelli in scrittura all'amministratore ed agli organi abilitati a mettere a disposizione le risorse.







