Nel contesto dell'architettura dei microservizi, il termine "Microservices Saga" si riferisce a un modello di transazione distribuito che consente di mantenere la coerenza dei dati tra più servizi liberamente accoppiati all'interno di un sistema. L’obiettivo principale del modello Saga è affrontare le sfide derivanti dalla gestione delle transazioni in un sistema basato su microservizi, in cui i singoli microservizi sono responsabili dei propri dati e dispongono di propri database. Il termine "Saga" deriva dal regno dei sistemi di gestione dei database, dove fu introdotto per la prima volta da Hector Garcia-Molina e Kenneth Salem nel 1987 per riferirsi a una sequenza di operazioni eseguite all'interno di una transazione di lunga durata.
L'architettura dei microservizi è cresciuta in popolarità grazie alla sua capacità di aumentare la flessibilità, la scalabilità e la resilienza nello sviluppo del software. Tuttavia, come con qualsiasi approccio basato sull’architettura software, esistono dei compromessi. Una sfida notevole nell’architettura dei microservizi è mantenere la coerenza dei dati tra i servizi, in particolare quando una singola operazione aziendale si estende su più microservizi. Questo problema è ulteriormente aggravato dal fatto che ogni microservizio in genere possiede il rispettivo archivio dati, con conseguenti confini transazionali separati per ciascun servizio.
Per affrontare questa sfida, il modello Microservices Saga propone una soluzione che combina una serie di transazioni locali, con ciascuna transazione posseduta da un singolo microservizio. Queste transazioni sono coordinate tramite messaggi o eventi in modo asincrono, sostituendo le tradizionali transazioni distribuite che si basano su protocolli di commit a due fasi. Nel modello Saga, ogni transazione locale è seguita da un evento che attiva la transazione locale successiva nella sequenza o attiva la transazione di compensazione in caso di fallimento. Le transazioni di compensazione sono essenzialmente operazioni di "annullamento" che mirano a ripristinare le modifiche apportate dalle precedenti transazioni locali, al fine di mantenere la coerenza dei dati tra i servizi quando si verifica un problema.
Una Saga di Microservizi può essere implementata utilizzando due modelli principali: coreografia e orchestrazione. Nella coreografia, ogni microservizio è responsabile di comprendere a quali eventi deve reagire e quali azioni deve eseguire in risposta. Quando una transazione locale viene completata, il microservizio emette un evento e altri microservizi ascoltano questo evento e agiscono di conseguenza. Il vantaggio principale di questo approccio è che promuove il controllo decentralizzato e richiede un coordinamento centrale minimo o nullo.
Nel modello di orchestrazione, un componente centrale chiamato orchestratore è responsabile del coordinamento dell'esecuzione delle transazioni locali nella saga dei microservizi. L'orchestratore riceve eventi dai singoli servizi e invia comandi ai servizi per eseguire le relative transazioni locali. Questo approccio centralizzato consente una gestione efficiente delle eccezioni e aumenta la visibilità del processo complessivo della saga. Tuttavia, potrebbe introdurre potenziali colli di bottiglia e richiedere ulteriori interventi infrastrutturali e di manutenzione.
In AppMaster, la potente piattaforma no-code, l'implementazione dei modelli Microservices Saga è stata resa più semplice attraverso il Visual Business Processes (BP) Designer, che consente di creare applicazioni backend, mobili e web con elementi completamente interattivi. La piattaforma genera codice sorgente, test, script di migrazione e altro per ciascun progetto, che si adatta perfettamente all'architettura dei microservizi, garantendo la coerenza dei dati e l'esecuzione efficiente delle transazioni distribuite. Inoltre, l'approccio di AppMaster elimina il debito tecnico rigenerando le applicazioni con ogni modifica, consentendo anche ai singoli sviluppatori di creare soluzioni software complete in modo efficiente ed efficace.
Ad esempio, considera una piattaforma di e-commerce con servizi separati per inventario, pagamento e spedizione. Quando viene effettuato un ordine, viene avviata una Saga di Microservizi, che prevede la prenotazione di stock dal servizio di inventario, l'addebito al cliente tramite il servizio di pagamento e la generazione di una spedizione tramite il servizio di spedizione. Se uno qualsiasi di questi passaggi fallisce, vengono eseguite transazioni di compensazione per annullare eventuali operazioni precedentemente riuscite, garantendo la coerenza dei dati in tutto il sistema. Implementando il modello Microservices Saga, questa piattaforma di e-commerce può fornire una gestione affidabile delle transazioni all'interno della sua architettura di microservizi, promuovendo in definitiva la resilienza e le operazioni semplificate.
In conclusione, la Saga dei Microservizi è un modello di transazione distribuito che affronta le sfide legate al mantenimento della coerenza dei dati nei sistemi basati sui microservizi. Consente di coordinare una serie di transazioni locali su più servizi tramite messaggistica o eventi asincroni, sostituendo le tradizionali transazioni distribuite e garantendo un'architettura software più flessibile, scalabile e resiliente. L'implementazione dei modelli Microservices Saga con la piattaforma no-code di AppMaster consente uno sviluppo di applicazioni più rapido ed economico senza l'onere del debito tecnico, consentendo agli sviluppatori di creare soluzioni software complete che aderiscono alle moderne pratiche di architettura software.