Il cloud computing ha ar­ric­chi­to il mondo digitale di tante nuove pos­si­bi­li­tà. Mettendo a di­spo­si­zio­ne su Internet risorse di ela­bo­ra­zio­ne dati, esso consente in­no­va­zio­ni par­ti­co­lar­men­te rapide, un con­se­guen­te utilizzo fles­si­bi­le delle risorse e anche opzioni di sca­la­bi­li­tà per­so­na­liz­za­bi­li secondo le proprie esigenze. Il co­sid­det­to teorema CAP dimostra che per garantire questa fles­si­bi­li­tà bisogna scendere a com­pro­mes­si per quanti riguarda altri fattori.

In questo articolo vi spie­ghe­re­mo cosa si cela dietro il teorema CAP, noto anche come teorema di Brewer, il­lu­stran­do­vi dove possiamo osservare con­cre­ta­men­te questa con­sta­ta­zio­ne sui sistemi di­stri­bui­ti.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

Cosa si nasconde dietro il teorema CAP?

Secondo il teorema CAP, in un sistema in­for­ma­ti­co di­stri­bui­to non è possibile fornire, o meglio as­si­cu­ra­re, si­mul­ta­nea­men­te più di due tra le seguenti tre garanzie:

  • Con­si­sten­cy (coerenza): tutti i client vedono gli stessi dati nello stesso momento.
  • Avai­la­bi­li­ty (di­spo­ni­bi­li­tà): tutti i client possono eseguire ope­ra­zio­ni di lettura e scrittura in un qualsiasi momento e ricevere una risposta dal sistema.
  • Partition Tolerance (tol­le­ran­za alle par­ti­zio­ni): il sistema continua a fun­zio­na­re nell’insieme anche in caso di mancanza di nodi o quando i singoli nodi non riescono più a co­mu­ni­ca­re tra loro.
Fatto

Il teorema CAP è frutto di una con­get­tu­ra dell’in­for­ma­ti­co Eric Brewer che fu da lui pub­bli­ca­ta durante una pre­sen­ta­zio­ne al simposio Prin­ci­ples of Di­stri­bu­ted Computing (PODC), svoltosi nel 2000. Per questo motivo i principi cardine della li­mi­ta­zio­ne delle garanzie dei sistemi di­stri­bui­ti prende anche il nome di teorema di Brewer. Nel 2002, Seth Gilbert e Nancy Lynch del MIT pub­bli­ca­ro­no una di­mo­stra­zio­ne formale della con­get­tu­ra, facendola assurgere al rango di teorema.

Oggi, il teorema rap­pre­sen­ta un im­por­tan­te orien­ta­men­to per strut­tu­ra­re l’ar­chi­tet­tu­ra di un nuovo sistema di­stri­bui­to e permette nel concreto di se­le­zio­na­re un modello che si focalizzi su due delle tre garanzie. Di con­se­guen­za, la fusione di più computer in­di­pen­den­ti in un unico sistema si può sud­di­vi­de­re ge­ne­ral­men­te in tre categorie:

  • Coppia CP (coerenza e tol­le­ran­za alle par­ti­zio­ni)
  • Coppia AP (di­spo­ni­bi­li­tà e tol­le­ran­za alle par­ti­zio­ni)
  • Coppia CA (coerenza e di­spo­ni­bi­li­tà)

Il teorema CAP nella pratica

Per rendere più com­pren­si­bi­le il contenuto del teorema CAP, di­mo­stre­re­mo la validità del suo principio cardine con l’aiuto degli esempi seguenti di sistemi di­stri­bui­ti. Inoltre, vi mo­stre­re­mo con­cre­ta­men­te dove si applica il teorema di Brewer.

Esempio di coppia AP: il Domain Name System

Un noto esempio di coppia AP è il DNS, co­no­sciu­to anche come sistema dei nomi di dominio. Questa com­po­nen­te centrale della rete è re­spon­sa­bi­le di assegnare nomi di dominio a indirizzi IP e mette in primo piano le due garanzie di di­spo­ni­bi­li­tà e tol­le­ran­za alla par­ti­zio­ne. Grazie alla presenza di numerosi server, il sistema è quasi sempre di­spo­ni­bi­le. Se viene a mancare un singolo server DNS, il suc­ces­si­vo lo so­sti­tui­sce. Con­for­me­men­te 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 re­la­zio­na­li

I sistemi di gestione di base di dati basati sul modello di database re­la­zio­na­le sono un buon esempio di coppia CA. Questo tipo di database si distingue so­prat­tut­to per un alto livello di coerenza e ambisce al più elevato livello di di­spo­ni­bi­li­tà possibile. In caso di dubbi, la di­spo­ni­bi­li­tà può diminuire a favore della coerenza. La sicurezza alle par­ti­zio­ni ricopre una posizione su­bor­di­na­ta.

Esempio di coppia CP: ap­pli­ca­zio­ni di finanza o banking

Nella maggior parte dei sistemi di­stri­bui­ti è fon­da­men­ta­le fornire un alto livello di di­spo­ni­bi­li­tà; perciò nella pratica le coppie CP sono piuttosto rare. Queste coppie però si rivelano par­ti­co­lar­men­te utili nel campo della finanza: le ap­pli­ca­zio­ni bancarie, che devono ad­de­bi­ta­re o tra­sfe­ri­re in modo af­fi­da­bi­le somme di denaro sui conti, si orientano verso la coerenza e la sicurezza alle par­ti­zio­ni per escludere errori contabili, anche in caso di traffico dati poco stabile.

Vai al menu prin­ci­pa­le