Definizione di ambiente distribuito.
Un sistema distribuito è un insieme di calcolatori autonomi che:
- comunicano tramite rete,
- cooperano per raggiungere un obiettivo comune,
- appaiono all’utente come un unico sistema coerente.
Definizione classica (Tanenbaum):
“Un sistema distribuito è un insieme di computer indipendenti che appare agli utenti come un sistema unico.”
Caratteristiche chiave:
- Assenza di memoria condivisa
- Comunicazione tramite messaggi
- Coordinamento tra nodi
Architetture di riferimento.
Client-Server.


Un server fornisce servizi a più client.
Esempi:
- Web server
- Database server
- Server applicativi
Architettura a 3 livelli:
- Presentation
- Application
- Data
Peer-to-Peer (P2P).
Ogni nodo può essere:
- Client
- Server
Esempi:
- File sharing
- Blockchain
Architetture moderne.
- Microservizi
- Cloud computing
- Containerizzazione
- Serverless
Concetti fondamentali.
Trasparenza.
Il sistema nasconde:
- Localizzazione
- Replicazione
- Concorrenza
- Fallimenti
Scalabilità.
Capacità di gestire aumento carico:
- Verticale (scale-up)
- Orizzontale (scale-out)
Affidabilità.
- Replica dei dati
- Tolleranza ai guasti
- Fault tolerance
Consistenza dei dati.
Teorema CAP:
In un sistema distribuito non si possono garantire simultaneamente:
- Consistency
- Availability
- Partition tolerance
Comunicazione tra nodi.
Modalità principali:
- Socket TCP/UDP
- RPC (Remote Procedure Call)
- REST API
- Message broker (es. code di messaggi)
Esempio semplice:
Client → richiesta HTTP → Server → risposta JSON
Sincronizzazione e concorrenza.
Problemi tipici:
- Race condition
- Deadlock distribuiti
- Clock synchronization (algoritmo di Lamport)
- Elezione del coordinatore
Tecnologie attuali.


Gli ambienti distribuiti oggi comprendono:
- Cloud computing
- Container (Docker)
- Orchestrazione (Kubernetes)
- Database distribuiti
- CDN
Esempi concreti.
- Google Search
- Sistemi bancari
- E-commerce
- Streaming video
- Social network
Tutti sono sistemi distribuiti su larga scala.
Problemi tipici dei sistemi distribuiti.
- Latenza di rete
- Perdita di pacchetti
- Partizionamento
- Sicurezza
- Autenticazione distribuita
Collegamento alla classe B016.
Qui devi dimostrare padronanza laboratoriale.
Potresti dire:
In un Istituto Tecnico indirizzo Informatica e Telecomunicazioni, introdurrei gli ambienti distribuiti nel quinto anno, collegandoli a reti, sistemi operativi e programmazione.
Attività di laboratorio.
- Creazione server TCP multi-client
- Realizzazione API REST
- Simulazione architettura 3-tier
- Configurazione macchine virtuali in rete
- Uso di container per simulare microservizi
Competenze sviluppate.
- Progettazione architetturale
- Comprensione scalabilità
- Sicurezza delle comunicazioni
- Diagnostica distribuita
Inclusione BES/DSA.
- Schemi grafici delle architetture
- Analogia con organizzazione aziendale
- Esempi concreti (sportelli bancari)
- Progressione graduale
Collegamenti interdisciplinari.
- Reti (TCP/IP)
- Sistemi operativi (processi, thread)
- Basi di dati (replica, cluster)
- Cybersecurity
- Cloud computing
Chiusura efficace.
Puoi concludere così:
Gli ambienti distribuiti rappresentano l’architettura dominante dell’informatica contemporanea: consentono scalabilità, affidabilità e servizi globali, integrando reti, sistemi e programmazione in un modello cooperativo complesso ma estremamente potente.
Schema rapido da memorizzare.
- Definizione
- Client-server / P2P
- Scalabilità
- CAP theorem
- Comunicazione
- Fault tolerance
- Tecnologie moderne
- Laboratorio B016
- Conclusione
