Teorema CAP: coerenza, disponibilità e tolleranza alle partizioni
Il cloud computing ha arricchito il mondo digitale di tante nuove possibilità. Mettendo a disposizione su Internet risorse di elaborazione dati, esso consente innovazioni particolarmente rapide, un conseguente utilizzo flessibile delle risorse e anche opzioni di scalabilità personalizzabili secondo le proprie esigenze. Il cosiddetto teorema CAP dimostra che per garantire questa flessibilità bisogna scendere a compromessi per quanti riguarda altri fattori.
In questo articolo vi spiegheremo cosa si cela dietro il teorema CAP, noto anche come teorema di Brewer, illustrandovi dove possiamo osservare concretamente questa constatazione sui sistemi distribuiti.
- vCPU estremamente vantaggiose e potenti core dedicati
- Massima flessibilità senza periodo contrattuale minimo
- Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7
Cosa si nasconde dietro il teorema CAP?
Secondo il teorema CAP, in un sistema informatico distribuito non è possibile fornire, o meglio assicurare, simultaneamente più di due tra le seguenti tre garanzie:
- Consistency (coerenza): tutti i client vedono gli stessi dati nello stesso momento.
- Availability (disponibilità): tutti i client possono eseguire operazioni di lettura e scrittura in un qualsiasi momento e ricevere una risposta dal sistema.
- Partition Tolerance (tolleranza alle partizioni): il sistema continua a funzionare nell’insieme anche in caso di mancanza di nodi o quando i singoli nodi non riescono più a comunicare tra loro.
Il teorema CAP è frutto di una congettura dell’informatico Eric Brewer che fu da lui pubblicata durante una presentazione al simposio Principles of Distributed Computing (PODC), svoltosi nel 2000. Per questo motivo i principi cardine della limitazione delle garanzie dei sistemi distribuiti prende anche il nome di teorema di Brewer. Nel 2002, Seth Gilbert e Nancy Lynch del MIT pubblicarono una dimostrazione formale della congettura, facendola assurgere al rango di teorema.
Oggi, il teorema rappresenta un importante orientamento per strutturare l’architettura di un nuovo sistema distribuito e permette nel concreto di selezionare un modello che si focalizzi su due delle tre garanzie. Di conseguenza, la fusione di più computer indipendenti in un unico sistema si può suddividere generalmente in tre categorie:
- Coppia CP (coerenza e tolleranza alle partizioni)
- Coppia AP (disponibilità e tolleranza alle partizioni)
- Coppia CA (coerenza e disponibilità)
Il teorema CAP nella pratica
Per rendere più comprensibile il contenuto del teorema CAP, dimostreremo la validità del suo principio cardine con l’aiuto degli esempi seguenti di sistemi distribuiti. Inoltre, vi mostreremo concretamente dove si applica il teorema di Brewer.
Esempio di coppia AP: il Domain Name System
Un noto esempio di coppia AP è il DNS, conosciuto anche come sistema dei nomi di dominio. Questa componente centrale della rete è responsabile di assegnare nomi di dominio a indirizzi IP e mette in primo piano le due garanzie di disponibilità e tolleranza alla partizione. Grazie alla presenza di numerosi server, il sistema è quasi sempre disponibile. Se viene a mancare un singolo server DNS, il successivo lo sostituisce. Conformemente al teorema CAP, nel DNS non è fornita coerenza: in caso di modifica di una voce del DNS, possono passare dei giorni prima di riportare questa modifica nell’intera gerarchia del sistema e renderla visibile a tutti i client.
Esempio di coppia CA: sistemi di gestione di base di dati relazionali
I sistemi di gestione di base di dati basati sul modello di database relazionale sono un buon esempio di coppia CA. Questo tipo di database si distingue soprattutto per un alto livello di coerenza e ambisce al più elevato livello di disponibilità possibile. In caso di dubbi, la disponibilità può diminuire a favore della coerenza. La sicurezza alle partizioni ricopre una posizione subordinata.
Esempio di coppia CP: applicazioni di finanza o banking
Nella maggior parte dei sistemi distribuiti è fondamentale fornire un alto livello di disponibilità; perciò nella pratica le coppie CP sono piuttosto rare. Queste coppie però si rivelano particolarmente utili nel campo della finanza: le applicazioni bancarie, che devono addebitare o trasferire in modo affidabile somme di denaro sui conti, si orientano verso la coerenza e la sicurezza alle partizioni per escludere errori contabili, anche in caso di traffico dati poco stabile.