Gestione stato e orchestrazione - Implementazione di microservizi in AWS

Gestione stato e orchestrazione

La natura distribuita dei microservizi rende difficoltosa l'orchestrazione dei flussi di lavoro che ne coinvolgono un numero significativo. Gli sviluppatori potrebbero ritenere più conveniente aggiungere il codice di orchestrazione direttamente nei servizi. Si tratta però di un errore da evitare, perché introdurrebbe un accoppiamento stretto e renderebbe complicato sostituire rapidamente singoli servizi.

Per realizzare applicazioni a partire da singoli componenti, ciascuno dei quali esegue una funzione ben definita, è possibile utilizzare AWS Step Functions. Questo servizio offre macchine a stati che si prendono carico delle complessità correlate all'orchestrazione dei servizi, ad esempio la gestione degli errori e la divisione in fasi eseguite in serie o in parallelo. Grazie a questa soluzione, sarà più semplice ricalibrare le risorse o sostituire applicazioni con la massima rapidità senza dover sincronizzare il codice all'interno dei servizi.

Step Functions è uno strumento affidabile per coordinare componenti e controllare in ogni fase la funzionalità di un'applicazione. Questo servizio dispone di una console grafica in cui è possibile disporre e visualizzare i componenti dell'applicazione in una serie di fasi. Di conseguenza, i servizi distribuiti sono più facili da realizzare ed eseguire.

Step Functions attiva e tiene traccia automaticamente di ogni fase e, in caso di errore, esegue nuovi tentativi per garantire che l'applicazione venga sempre eseguita nell'ordine e nelle modalità previste. Questo servizio registra lo stato di ciascuna fase, perciò quando si verificano problemi è più semplice eseguire diagnosi e debug in modo rapido. È possibile modificare o aggiungere fasi senza scrivere una riga di codice per innovare più rapidamente l'applicazione.

Step Functions è parte della AWS Serverless Platform e supporta l'orchestrazione delle funzioni Lambda e delle applicazioni basate su risorse di calcolo, come Amazon EC2, Amazon EKS, Amazon ECS e servizi aggiuntivi come Amazon SageMaker e AWS Glue. Step Functions gestisce il funzionamento e l'infrastruttura in modo automatico e garantisce la disponibilità dell'applicazione su qualsiasi scala.

Per la realizzazione dei flussi di lavoro, Step Functions impiega la sintassi Amazon State Language. I flussi di lavoro possono contenere fasi in parallelo o in sequenza e diramazioni.

La seguente figura illustra un esempio di flusso di lavoro per un'architettura di microservizi che combina fasi in sequenza e in parallelo. Per richiamare tale flusso di lavoro è possibile utilizzare l'API Step Functions o passare da API Gateway.

Un esempio di flusso di lavoro di microservizi richiamato da Step Functions