Vai al contenuto

Sistemi distribuiti e cloud

In questa lezione impari a

  • spiegare che cos'è un sistema distribuito
  • applicare il teorema CAP a casi concreti
  • distinguere IaaS, PaaS e SaaS
  • calcolare che cosa promette uno SLA

Le grandi applicazioni che usate ogni giorno (social, streaming, posta) non girano su un solo computer, ma su migliaia di macchine sparse nel mondo. Vediamo le idee di base per capire come funzionano.

3.1 Cos'è un sistema distribuito

Un sistema distribuito è un insieme di computer separati che, collaborando, si comportano agli occhi dell'utente come se fossero uno solo. Perché conviene farlo, invece di usare un solo grande computer potentissimo?

  • Scalabilità — se il servizio cresce, si aggiungono altre macchine invece di doverne comprare una sempre più costosa
  • Affidabilità — se una macchina si rompe, le altre continuano a far funzionare il servizio
  • Vicinanza geografica — un utente in Italia e uno in Giappone possono essere serviti da macchine diverse, più vicine a loro, per essere più veloci

Il prezzo da pagare è la complessità: far coordinare tante macchine è molto più difficile che gestirne una sola, come vediamo nel prossimo punto.

3.2 Il teorema CAP (spiegato semplice)

Il teorema CAP dice che un sistema distribuito non può garantire contemporaneamente al 100% queste tre cose, se una parte della rete smette di funzionare:

  • Consistenza (C) — tutti vedono sempre gli stessi dati aggiornati, ovunque si trovino
  • Disponibilità (A, Availability) — il sistema risponde sempre, senza mai dire "non disponibile"
  • Tolleranza di rete (P, Partition tolerance) — il sistema continua a funzionare anche se una parte della rete si scollega dal resto

Dato che in un sistema reale la rete può sempre avere problemi (P è quasi obbligatoria), la vera scelta è tra C e A: se una parte della rete è isolata, il sistema deve decidere se rispondere comunque (rischiando dati non aggiornati) o rifiutarsi di rispondere finché non è di nuovo sicuro dei dati.

Un sito di e-commerce spesso sceglie la disponibilità: preferisce mostrarvi un numero di scorte leggermente vecchio piuttosto che bloccare l'intero sito. Una banca, invece, spesso sceglie la consistenza: preferisce bloccare un'operazione piuttosto che rischiare un saldo sbagliato.

Domanda di verifica. Perché non si può eliminare semplicemente la "P" (tolleranza di rete) per avere sempre sia C che A?

Mostra la risposta

Perché in un sistema distribuito reale, con macchine collegate in rete, problemi di connessione possono sempre capitare (un cavo che si stacca, un data center che perde la connessione). Rinunciare alla P significherebbe fingere che questo non accada mai.

3.3 Cloud computing: IaaS, PaaS, SaaS

Il cloud computing significa "affittare" risorse informatiche (server, spazio, software) invece di comprarle e gestirle da soli. Si dividono in tre livelli, da quello più "grezzo" a quello più "pronto all'uso":

  • IaaS (Infrastructure as a Service) — affittate solo l'hardware virtuale (un server, dello storage): dovete installare voi il sistema operativo e tutto il resto. Esempio: una macchina virtuale su AWS o Azure.
  • PaaS (Platform as a Service) — vi viene fornita anche la piattaforma pronta per far girare il vostro codice, senza doervi preoccupare del sistema sotto. Esempio: caricare la vostra app Flask su Render o Railway (come avete fatto/farete in laboratorio).
  • SaaS (Software as a Service) — il software è già completo e pronto all'uso, non scrivete nulla. Esempio: Gmail, Google Drive.

Quando in laboratorio pubblicate la vostra app Flask su un servizio come Render, state usando un PaaS: non dovete configurare un server Linux da zero, basta caricare il codice.

3.4 Cos'è uno SLA

Uno SLA (Service Level Agreement) è un contratto in cui chi fornisce un servizio cloud promette un certo livello di qualità, ad esempio "il servizio sarà disponibile il 99,9% del tempo". Se non viene rispettato, di solito il cliente ha diritto a un rimborso.

Il 99,9% di disponibilità in un anno significa che il servizio può essere "giù" per circa 8 ore e mezza in totale, in tutto l'anno, senza violare il contratto. Il 99,99% (una "9" in più) riduce questo tempo a meno di un'ora: è molto più difficile da garantire, e costa di più.

Domanda di verifica. Perché un'azienda dovrebbe pagare di più per uno SLA del 99,99% invece che del 99,9%?

Mostra la risposta

Perché garantire un tempo di fermo così basso richiede infrastrutture ridondanti (più copie dei dati, più data center, sistemi di backup automatico), che costano di più da mantenere.

Esercizi

⭐ Facile

Esercizio 1 – IaaS, PaaS o SaaS?. Classifica: Gmail; una macchina virtuale noleggiata su cui installi tutto tu; un servizio dove carichi l'app Flask e lui la fa girare; Google Drive.

Suggerimento

SaaS · IaaS · PaaS · SaaS

⭐⭐ Medio

Esercizio 2 – Quanto vale un 99,9%?. Uno SLA garantisce il 99,9% di disponibilità. Quanti minuti al mese (30 giorni) il servizio può restare fermo? E con il 99,99%?

Suggerimento

0,1% di 43.200 minuti ≈ 43 minuti · con il 99,99% ≈ 4 minuti e 20 secondi.

⭐⭐ Medio

Esercizio 3 – Consistenza o disponibilità?. Durante un guasto di rete tra due data center, cosa preferisci tra consistenza e disponibilità per: le prenotazioni dei posti al cinema; i "mi piace" di un social? Motiva.

⭐⭐⭐ Sfida

Esercizio 4 – La tua app nel cloud. Progetta dove farebbe girare la vostra app Flask: servizio scelto (IaaS o PaaS), database, backup, e quale SLA vi servirebbe. Massimo una pagina.