5.1.2 – Modelli architetturali


Obiettivi della lezione:

  • Comprendere le diverse architetture distribuite hardware. Gli studenti impareranno a identificare e descrivere le varie architetture hardware, dalla Single Instruction Single Data (SISD) ai cluster.
  • Analizzare le architetture distribuite software. Gli studenti acquisiranno conoscenze sulle architetture software, dai terminali remoti alle architetture completamente distribuite.
  • Valutare i vantaggi e le applicazioni delle diverse architetture. Gli studenti saranno in grado di analizzare criticamente i vantaggi e le applicazioni pratiche di ciascun tipo di architettura.

Introduzione ai modelli architetturali

I modelli architetturali sono fondamentali per comprendere come i sistemi distribuiti sono progettati e implementati. Questi modelli possono essere suddivisi in due categorie principali: architetture distribuite hardware e architetture distribuite software. Comprendere queste architetture è cruciale per progettare sistemi informativi e di telecomunicazione efficaci e efficienti.


Architetture distribuite hardware

Dal SISD al cluster

  • SISD (Single Instruction Single Data): Questa è l’architettura più semplice dove un singolo processore esegue una singola istruzione su un singolo dato alla volta. È utilizzata nei tradizionali computer monoprocessore.
    • Esempio: Un classico computer desktop.
  • SIMD (Single Instruction Multiple Data): Questa architettura permette a un singolo istruttore di essere eseguito simultaneamente su più dati. È utilizzata nelle applicazioni di elaborazione parallela come l’elaborazione di immagini e grafica.
    • Esempio: GPU (Graphics Processing Unit) che elabora pixel multipli in parallelo.
  • MIMD (Multiple Instruction Multiple Data): In questa architettura, più processori eseguono istruzioni diverse su dati diversi simultaneamente. È utilizzata nei sistemi multiprocessore.
    • Esempio: Sistemi di server moderni che eseguono applicazioni diverse contemporaneamente.
  • Cluster computing: Un gruppo di computer collegati tramite una rete che lavorano insieme come un singolo sistema coerente. I cluster possono essere utilizzati per l’alta disponibilità e l’elaborazione ad alte prestazioni. In un cluster, ciascun nodo esegue una parte del lavoro complessivo, permettendo di affrontare problemi che richiederebbero tempi di elaborazione proibitivi su un singolo computer.
    • Esempio: Cluster di server utilizzati per il calcolo scientifico e le simulazioni complesse.
  • Grid computing: Simile al cluster computing, ma con un’enfasi sulla condivisione delle risorse tra organizzazioni diverse. Il grid computing permette l’accesso remoto e la gestione delle risorse computazionali distribuite su un’ampia area geografica.
    • Esempio: Iniziative come il CERN Grid per l’elaborazione dei dati provenienti dagli esperimenti dell’LHC (Large Hadron Collider).

Architetture distribuite software

Dai terminali remoti alle architetture completamente distribuite

  • Terminali remoti: In questo modello, i terminali remoti si collegano a un server centrale per l’elaborazione. Questo modello era comune nei primi sistemi mainframe.
    • Esempio: Terminali utilizzati per accedere a un mainframe aziendale negli anni ’70 e ’80.
  • Client-Server: Una delle architetture più comuni dove i client richiedono servizi e i server forniscono questi servizi. È utilizzata in molte applicazioni web e di rete.
    • Esempio: Applicazioni web moderne dove i browser fungono da client e i server web forniscono contenuti.
  • Peer-to-Peer (P2P): Ogni nodo nel sistema può agire sia da client che da server. È utilizzata in reti di condivisione di file come BitTorrent.
    • Esempio: Reti di condivisione di file come BitTorrent.
  • Architetture completamente distribuite: In questi sistemi, non c’è un server centrale e tutti i nodi collaborano per fornire servizi e condividere risorse.
    • Esempio: Blockchain e reti di criptovalute come Bitcoin.
  • Sistemi distribuiti informativi: Questi sistemi distribuiti sono progettati per gestire informazioni e fornire servizi di informazione in modo distribuito. Esempi includono i sistemi di gestione dei contenuti distribuiti e i database distribuiti.
    • Esempio: MongoDB, un database NoSQL distribuito che consente la scalabilità orizzontale.
  • Sistemi pervasivi: Sistemi distribuiti che integrano dispositivi e sensori in vari ambienti per raccogliere dati e fornire servizi in modo continuo e ubiquitario. Sono spesso utilizzati in applicazioni di Internet delle Cose (IoT) e smart cities.
    • Esempio: Sensori ambientali distribuiti in una smart city per monitorare la qualità dell’aria.

Vantaggi e applicazioni delle diverse architetture

Vantaggi

  • SISD: Semplicità di progettazione e implementazione.
  • SIMD: Elevate prestazioni in applicazioni parallele.
  • MIMD: Flessibilità e capacità di eseguire compiti complessi simultaneamente.
  • Cluster computing: Scalabilità e tolleranza ai guasti.
  • Grid computing: Condivisione delle risorse su vasta scala e utilizzo efficiente delle risorse computazionali.
  • Terminali remoti: Centralizzazione delle risorse e facile manutenzione.
  • Client-Server: Struttura ben definita e gestione semplice.
  • P2P: Scalabilità e distribuzione del carico.
  • Architetture completamente distribuite: Decentralizzazione e sicurezza.
  • Sistemi distribuiti informativi: Gestione efficiente dei dati e accesso distribuito.
  • Sistemi pervasivi: Monitoraggio e risposta in tempo reale.

Applicazioni

  • SISD: Utilizzo in computer desktop e laptop tradizionali.
  • SIMD: Utilizzo in grafica computerizzata e elaborazione di immagini.
  • MIMD: Utilizzo in server e data center.
  • Cluster computing: Utilizzo in calcolo scientifico e simulazioni complesse.
  • Grid computing: Utilizzo nella ricerca scientifica collaborativa.
  • Terminali remoti: Utilizzo in vecchi sistemi mainframe.
  • Client-Server: Utilizzo in applicazioni web e aziendali.
  • P2P: Utilizzo in reti di condivisione di file e comunicazione.
  • Architetture completamente distribuite: Utilizzo in criptovalute e tecnologie blockchain.
  • Sistemi distribuiti informativi: Utilizzo in grandi database distribuiti e sistemi di gestione dei contenuti.
  • Sistemi pervasivi: Utilizzo in applicazioni IoT e smart cities.

Esercitazioni pratiche

  1. Esercizio di classificazione delle architetture hardware:
    • Presentare agli studenti diversi scenari di utilizzo e chiedere loro di classificare ciascuno scenario come SISD, SIMD, MIMD, cluster o grid computing.
  2. Esercizio di analisi delle architetture software:
    • Presentare casi di studio di diverse applicazioni software e chiedere agli studenti di identificare l’architettura distribuita utilizzata e di spiegare i motivi della scelta.
  3. Progetto pratico di implementazione:
    • Dividere la classe in gruppi e assegnare a ciascun gruppo il compito di progettare un sistema distribuito utilizzando uno dei modelli architetturali studiati. Gli studenti dovranno presentare il loro progetto e giustificare le scelte fatte.