In questo articolo spiego l’evoluzione dei sistemi informativi. Inizialmente i sistemi erano centralizzati, attualmente sono sistemi distruibuiti. Vedremo qual è stato il percorso che ha consentito di sviluppare i sistemi distribuiti, le loro caratteristiche ed i vantaggi

In questo articolo spiego l’evoluzione dei sistemi informativi. Inizialmente i sistemi erano centralizzati, attualmente sono sistemi distruibuiti. Vedremo qual è stato il percorso che ha consentito di sviluppare i sistemi distribuiti, le loro caratteristiche ed i vantaggi

Indice dei contenuti

Introduzione

All’inizio degli anni ’40, si è avviata l’era dei moderni calcolatori elettronici. A partire dagli anni ’80, due sviluppi tecnologici hanno iniziato a rivoluzionare il settore: l’introduzione dei microprocessori e la creazione di reti di computer connessi tra loro per formare sistemi di calcolo potenti e complessi.

Architetture dei Sistemi Informativi

Le architetture dei sistemi informativi hanno subito una notevole evoluzione nel corso degli anni, passando da modelli centralizzati a soluzioni distribuite, più adatte alle moderne esigenze di decentralizzazione e collaborazione nelle organizzazioni.

Sistemi Centralizzati

Nei sistemi centralizzati, le applicazioni operano su un unico processore o host, l’unico componente autonomo del sistema, condiviso da più utenti. In questo contesto, tutte le risorse sono sempre accessibili. Un sistema informatico è centralizzato quando dati e applicazioni risiedono in un unico nodo di elaborazione.

Sistemi Distribuiti

Nei sistemi distribuiti, le applicazioni sono costituite da più processi collaborativi, eseguiti in parallelo su diverse unità di elaborazione autonome. Questi sistemi sono formati dall’aggregazione di CPU, sistemi di memorizzazione e periferiche singole.

Un sistema informatico è definito distribuito se almeno una delle seguenti condizioni è soddisfatta:

  • Elaborazione distribuita: le applicazioni sono distribuite su più host che cooperano tra loro.
  • Base di dati distribuita: i dati sono distribuiti su più host.

Definizioni di Sistema Distribuito

Numerose sono state le definizioni di sistema distribuito date a partire dagli anni Settanta. Riportiamo le più note:

  1. Tanenbaum: Un sistema distribuito consiste in un insieme di calcolatori indipendenti che appaiono all’utente del sistema come un singolo calcolatore.
  2. Coulouris & Dollimore: È un sistema in cui i componenti hardware o software posizionati in calcolatori collegati in rete comunicano e coordinano le proprie azioni solo tramite lo scambio di messaggi.
  3. Lamport: È un sistema in cui il fallimento di un calcolatore di cui nemmeno conosci l’esistenza può rendere inutilizzabile il tuo calcolatore.

Nella nostra trattazione adotteremo la definizione più astratta riportata di seguito:

Sistema Distribuito Un sistema distribuito è costituito da un insieme di applicazioni logicamente indipendenti che collaborano per il perseguimento di obiettivi comuni attraverso un’infrastruttura di comunicazione hardware e software.

Ruoli delle Applicazioni nei Sistemi Distribuiti

Su ogni componente del sistema distribuito viene eseguito un programma che può essere differente sia per il compito che svolge che per il ruolo di elaborazione che assume nella rete. Alle applicazioni vengono dati quindi nomi diversi in funzione dei diversi ruoli:

  • Cliente (client): Un’applicazione assume il ruolo di cliente quando è utilizzatore di servizi messi a disposizione da altre applicazioni.
  • Servente (server): Un’applicazione assume il ruolo di servente quando è fornitore di servizi usati da altre applicazioni.
  • Attore (actor): Un’applicazione assume il ruolo di attore quando assume in diverse situazioni nel contesto del sistema sia il ruolo di cliente che quello di servente.

Classificazione dei Sistemi Distribuiti

I sistemi distribuiti possono essere suddivisi in tre grandi categorie principali:

  1. Sistemi di Calcolo Distribuiti: Solitamente configurati per prestazioni di calcolo elevate.
    • Cluster Computing: Connessione di computer omogenei tramite una rete per parallelizzare l’elaborazione.
    • Grid Computing: Cooperazione di calcolo utilizzando macchine eterogenee.
  2. Sistemi Informativi Distribuiti: Oltre al Web, che è il più grande sistema distribuito, le nuove tecnologie mobili hanno favorito l’evoluzione dei sistemi informativi tradizionali. Questi integrano sistemi legacy (legacy system (sistemi legacy) sono i sistemi presenti in azienda, realizzati su architetture basate su mainframe al quale si collegano terminali poco sofi-sticati) con nuove tecnologie di comunicazione, dando vita a moderni sistemi informativi e transazionali, dove ogni transazione consiste in una serie di operazioni elementari incapsulate in comandi di inizio-fine transazione.
  3. Sistemi Distribuiti Pervasivi: Una nuova generazione di sistemi con connessioni di rete wireless, spesso parti di sistemi più ampi. Tra questi troviamo sistemi domestici, personal area network (PAN), wearable computing e reti di sensori.

Vantaggi dei Sistemi Distribuiti

I grandi sistemi informatici di oggi sono in gran parte distribuiti e offrono una serie di vantaggi e svantaggi. Esaminiamoli in dettaglio.

Affidabilità

Il principale vantaggio dei sistemi distribuiti è l’affidabilità. Grazie alla ridondanza intrinseca, un sistema distribuito può continuare a funzionare anche in caso di guasto di un componente. È necessario, però, predisporre strumenti per intervenire automaticamente al verificarsi di situazioni indesiderate, implementando algoritmi che permettano alle entità non guaste di sostituire quelle danneggiate e proseguire l’elaborazione.

Integrazione

Un altro importante vantaggio è la capacità di integrare componenti eterogenei, sia per tipo di hardware (da PC a mainframe, da smartphone a tablet) che per sistema operativo. Ogni componente deve poter interfacciarsi con il sottosistema di comunicazione del sistema distribuito, rendendo trasparenti i componenti dello strato inferiore del sistema. È fondamentale la possibilità di connettere dispositivi di nuova generazione con sistemi legacy, utilizzando tecnologie come Ethernet o piattaforme Web. Linguaggi come XML (eXtensible Markup Language) e notazioni JSON (JavaScript Object Notation) facilitano lo scambio di informazioni nel Web.

Trasparenza

La trasparenza in un sistema distribuito significa che l’utente vede il sistema come un unico elaboratore, senza accorgersi che interagisce con un insieme di componenti. L’ANSA, nell’ISO 10746 (Reference Model of Open Distributed Processing), identifica otto forme di trasparenza:

  1. Trasparenza di Accesso: Nasconde le differenze nella rappresentazione dei dati e nelle modalità di accesso alle risorse.
  2. Trasparenza di Locazione: Nasconde la posizione delle risorse, permettendo l’accesso senza conoscerne la locazione (ad esempio, l’URL nasconde l’indirizzo IP).
  3. Trasparenza di Concorrenza: Permette ai processi di operare in maniera concorrente, mantenendo la consistenza delle risorse condivise.
  4. Trasparenza di Replicazione: Le operazioni di duplicazione vengono effettuate senza che gli utenti se ne accorgano, aumentando l’affidabilità e le prestazioni.
  5. Trasparenza ai Guasti: Maschera i guasti e il recupero delle risorse.
  6. Trasparenza alla Migrazione: Nasconde lo spostamento logico o fisico delle risorse senza influenzare le operazioni degli utenti.
  7. Trasparenza delle Prestazioni: Nasconde le operazioni necessarie per riconfigurare il sistema al variare del carico per migliorare le prestazioni.
  8. Trasparenza di Scalabilità: Espande il sistema senza interrompere o modificare il funzionamento.

Efficienza Economica

I sistemi distribuiti spesso offrono un miglior rapporto prezzo/qualità rispetto ai sistemi centralizzati basati su mainframe. Una rete di PC connessi è molto più economica rispetto a un mainframe e, grazie alle tecnologie moderne, la capacità computazionale è comparabile. Inoltre, è possibile connettere sistemi legacy a basso costo, evitando di abbandonare tecnologie precedentemente adottate.

Apertura

L’adozione di protocolli standard favorisce l’apertura a hardware e software di fornitori diversi, consentendo:

  • Interoperabilità: Implementazioni diverse possono coesistere in un unico sistema.
  • Portabilità: Un’applicazione sviluppata su un sistema operativo può funzionare su un altro, mantenendo la stessa interfaccia utente.
  • Ampliabilità: È semplice aggiungere componenti hardware e software per far crescere il sistema.

Connettività e Collaborazione

I sistemi distribuiti permettono la condivisione di risorse hardware e software, comportando vantaggi economici. Ad esempio, è possibile condividere apparecchiature costose come stampanti speciali, plotter o sistemi di storage. Lo scambio di informazioni arricchisce ogni utente, favorendo la creazione di groupware con interessi specifici.

Prestazioni e Scalabilità

Un sistema distribuito può variare da due workstation e un file server a una LAN con molti server, migliaia di workstation e molte stampanti. L’aggiunta di nuove risorse migliora le prestazioni e supporta l’aumento del carico di richieste, un concetto noto come scalabilità orizzontale. Questo consente di superare i limiti dei sistemi centralizzati, dove le risorse condivise sono spesso limitate.

Tolleranza ai Guasti

La possibilità di replicare le risorse offre una certa garanzia di tolleranza ai guasti. La presenza di un componente guasto non deve compromettere il funzionamento del sistema, ma al massimo introdurre inefficienze in termini di tempo di risposta. In questa situazione si parla di “guasto parziale”, cioè un guasto che non influisce pesantemente sul funzionamento del sistema. Una soluzione è duplicare interamente le risorse, ma questa è spesso costosa. È meglio optare per un sistema software di recupero che riporti il sistema in uno stato consistente precedente e trovi un’alternativa al componente guasto.

Svantaggi dei Sistemi Distribuiti

I sistemi distribuiti presentano anche una serie di svantaggi, che le nuove tecnologie cercano di ridurre o eliminare in fase di progettazione dei nuovi dispositivi di rete. Di seguito descriviamo sinteticamente i principali problemi.

Produzione di Software

I programmatori del passato hanno dovuto adattare il loro stile di programmazione e aggiornarsi con nuovi linguaggi e strumenti di sviluppo per poter creare applicazioni distribuite. Il passaggio è avvenuto in tre fasi principali:

  1. La definizione dello standard TCP/IP, che ha stabilito la base per lo sviluppo di applicazioni di rete attraverso la comunicazione tramite socket.
  2. Lo sviluppo di architetture Web e di tutti i linguaggi ad esse connessi, sia lato client (HTML, CSS, JavaScript) che lato server (CGI, servlet, JSP, PHP, ASP, ecc.), che hanno permesso un salto di qualità nella produzione del software.
  3. La diffusione del linguaggio Java, che grazie alla sua tecnologia a macchina virtuale, consente ai programmi di essere eseguiti su macchine anche completamente differenti tra loro.

Complessità

A causa della loro struttura hardware, i sistemi distribuiti sono più complessi rispetto a quelli centralizzati. Richiedono strumenti per l’interconnessione degli host e tecniche per il corretto instradamento dei messaggi e dei dati. È anche più complesso valutare le performance di un sistema distribuito rispetto a un unico elaboratore.

Sicurezza

La connessione di più host tra loro aumenta la possibilità di accesso ai dati e alle risorse anche da parte di chi non ne ha il diritto. Nascono nuove problematiche legate alla sicurezza, che nei sistemi centralizzati erano inesistenti. Nei vecchi sistemi era sufficiente proteggere fisicamente i dispositivi, ma oggi l’accesso avviene via etere e via cavo, rendendo necessario l’utilizzo di misure di sicurezza per tutelare gli utenti e garantire la riservatezza dei dati, sia memorizzati su computer personali che trasmessi per transazioni commerciali o personali (come email).

Comunicazione

Il trasferimento a distanza delle informazioni richiede nuove tipologie di sistemi di telecomunicazione, sia cablati che wireless. L’aumento esponenziale degli utenti aumenta la richiesta di bande trasmissive per migliorare la qualità del servizio offerto e offrire nuove tipologie di applicazioni sempre più performanti (alta velocità, alta definizione, video streaming, ecc.).

La maggiore difficoltà risiede nel fatto che si è sempre di fronte a nuove problematiche, spesso non ben definite, che rendono difficile prevedere le richieste e possono causare situazioni di carico casuali e risposte del sistema molto variabili nel tempo. L’utilizzo di tecniche sperimentali a volte aumenta accidentalmente la complessità, a causa delle tecniche di analisi e progettazione basate su vecchi metodi di sviluppo non adeguati per i sistemi distribuiti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *