Contesto: L’architettura a microservizi è attualmente estremamente popolare tra le aziende grazie alle sue proprietà di scalabilità e tolleranza ai guasti. Tuttavia, l’adozione di tale architettura presenta delle difficoltà. La suddivisione di un sistema monolite in più servizi, in cui ognuno incapsula i propri dati, non garantisce le proprietà A.C.I.D. di un singolo database quando una transazione coinvolge più componenti del sistema.
In questo contesto, come possiamo ad esempio garantire che un particolare processo sia computato correttamente senza violazioni di integrità nei dati? Questo tipo di transazioni sono chiamate transazioni distribuite.
Obiettivi: Ricercare, implementare e comparare diversi approcci per l’esecuzione di transazioni distribuite nei moderni database (e.g. Postgres, MongoDB, DynamoDB), prestando attenzione agli impatti che tali approcci hanno su scalabilità, throughput, integrità dei dati e complessità. In particolare, si valuteranno due macro-approcci: 2-Phase Commit (2PC) e SAGA considerando i relativi pro e contro.
L’implementazione avverrà in ambiente cloud AWS, ad esempio all'interno di un cluster Kubernetes con virtualizzazione Docker.