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
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
Per la realizzazione dei flussi di lavoro, Step Functions impiega la sintassi Amazon State Language
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