Panoramica

D: Cos'è AWS Step Functions?

AWS Step Functions è un servizio completamente gestito che facilita il coordinamento dei componenti delle applicazioni distribuite e dei microservizi tramite flussi di lavoro visivi. La creazione di applicazioni a partire da singoli componenti che eseguono una funzione dedicata, permette di ricalibrare facilmente le risorse e modificare un'applicazione con maggiore rapidità. Step Functions è un modo affidabile di coordinare componenti e controllare passo per passo le funzioni della tua applicazione. Step Functions fornisce una console grafica per riordinare e visualizzare i componenti della tua applicazione in una serie di fasi. Questo semplifica la creazione e l'esecuzione di applicazioni multifase. Step Functions attiva automaticamente e tiene traccia di ogni fase e, in caso di errore, riprova, in modo che la tua applicazione venga eseguita nell'ordine e nel modo previsto. Step Functions registra lo stato di ogni fase, per consentirti, in caso di errore, di eseguire una diagnosi e risolvere i problemi rapidamente. Si possono modificare e aggiungere fasi senza bisogno di scrivere il codice, per consentire un'evoluzione e un'innovazione più rapide della tua applicazione.

Quali sono i vantaggi di progettare la mia applicazione usando l'orchestrazione?

La frammentazione di un'applicazione in componenti (o fasi) evita che un errore di un solo componente faccia collassare l'intero sistema, garantendo nel contempo il dimensionamento indipendente dei singoli componenti e l'aggiornamento dei componenti senza richiedere la ridistribuzione dell'intero sistema dopo ogni modifica. Il coordinamento dei componenti del servizio prevede la gestione di dipendenze di esecuzione, programmazione e simultaneità in conformità con il flusso logico dell’applicazione. In un'applicazione di questo genere, gli sviluppatori possono utilizzare l'orchestrazione del servizio per compiere queste operazioni e per gestire gli errori.

Quali sono alcuni dei casi d'uso più comuni di AWS Step Functions?

AWS Step Functions facilita la gestione di qualsiasi problema di elaborazione o processo di business che può essere suddiviso in una serie di fasi. E utile anche per creare flussi di lavoro end-to-end per gestire lavori con interdipendenze. I casi d’uso più comuni sono:

  • Elaborazione dati: unificare dati da vari database in report unificati, perfezionare e ridurre set di dati large in formati utili, o coordinare analisi multi-step e flussi di lavoro machine learning
  • DevOps e automazione IT: costruire strumenti per integrazione continua e distribuzione continua, o creare un’applicazione guidata dagli eventi che risponde automaticamente ai cambi nell’infrastruttura.
  • E-commerce: Automatizza processi di business mission-critical, come l’evasione degli ordini e il monitoraggio dell’inventario.
  • Applicazioni Web: Implementa processi stabili di registrazione degli utenti e autenticazione degli accessi.

Per maggiori dettagli, esplora i casi d'uso e le testimonianze dei clienti di AWS Step Functions.

D: Come funziona AWS Step Functions?

Usando AWS Step Functions, definisci macchine a stati che descrivono il tuo flusso di lavoro come una serie di fasi, la loro relazione, gli input e gli output. Le macchine a stati contengono un numero di stati, ognuno dei quali rappresenta uno step individuale nel diagramma del flusso di lavoro. Gli stati possono eseguire lavoro, fare scelte, passare parametri, iniziare esecuzioni parallele, gestire timeouts, o terminare il tuo flusso di lavoro con un successo o un fallimento. La console visiva rappresenta automaticamente in modo grafico il singolo stato nell'ordine di esecuzione, semplificando la pianificazione di applicazioni multifase. La console evidenzia lo stato di ogni fase in tempo reale e fornisce la cronologia dettagliata di ogni esecuzione. Per maggiori informazioni, vedi Come funziona Step Functions nella Guida dello sviluppatore AWS Step Functions.

D: Come si connette AWS Step Functions alle mie risorse?

È possibile configurare le macchine a stati per eseguire lavori usando task di attività e task di servizi. Le task di attività ti permettono di assegnare una fase specifica nel flusso di lavoro al codice in esecuzione da qualche altra parte (conosciuto come un activity worker). Un activity worker può essere ogni applicazione che riesce a fare una connessione HTTP, ospitata ovunque. Per esempio, activity workers possono essere eseguiti su un istanza Amazon EC2, su un dispositivo mobile, o su un server locale. Activity worker usa Step Functions per lavoro, accetta qualsiasi input da Step Functions, esegue il lavoro usando il tuo codice e restituisce risultati. Dato che gli activity workers richiedono lavoro, è facile usare workers che sono impiegati dietro firewall.

Le task di servizi ti permettono di connettere una fase nel flusso di lavoro ad un servizio AWS supportato. La funzione step invia richieste ad altri servizi così che questi possano eseguire azioni per il flusso di lavoro; aspetta che il task di servizio sia completo e continua con il prossimo step.

Una macchina a stati AWS Step Functions può contenere una combinazione di attività e servizi. Le applicazioni AWS Step Functions possono combinare activity workers in esecuzione in un data center con service tasks nel cloud. I lavoratori del data center continuano le operazioni come sempre, insieme agli eventuali task basati sul cloud.

D: Come si inizia a usare AWS Step Functions?

Ci sono vari modi per iniziare a usare AWS Step Functions:

D: Quali linguaggi sono supportati da AWS Step Functions?

Le macchine a stati AWS Step Functions vengono definite in JSON attraverso Amazon States Language. Per creare un activity worker, si può utilizzare qualsiasi linguaggio di programmazione, a condizione che si possa comunicare con AWS Step Functions utilizzando le API del servizio Web. Per praticità puoi utilizzare un SDK di AWS nel linguaggio di tua scelta. AWS Lambda supporta il codice scritto in Node.js (JavaScript), Python, Golang (Go), e C# (usando .NET Core runtime o altri linguaggi). Per ulteriori informazioni sul modello di programmazione Lambda, vedi la Guida dello sviluppatore AWS Lambda.

D: Il mio flusso di lavoro presenta alcune proprietà di Standard Workflow e alcune di Express Workflow. Come possono ottenere il meglio di entrambe?

Puoi comporre i due tipi di flussi di lavoro: Express Workflows può essere eseguito come flusso di lavoro secondario di Standard Workflow. Express Workflow viene richiamato da uno stato di task nel flusso di lavoro di orchestrazione principale e dà esito completamente positivo o negativo dal punto di vista del flusso principale. È soggetto alla policy dei nuovi tentativi del flusso principale per quel task. Puoi anche chiamare gli Express Workflow dall’interno di un Express Workflow, purché tutti i flussi di lavoro non superino il limite di durata del flusso principale. Puoi scegliere di scomporre i tuoi flussi di lavoro in questo modo se il tuo caso d’uso ha una combinazione di passaggi di lunga durata o solo una volta e di alta frequenza e breve durata. 

Confronti

In quali casi è preferibile usare AWS Step Functions anziché Amazon SQS?

AWS Step Functions dovrebbe essere preso in considerazione quando hai bisogno di coordinare i componenti di un servizio nello sviluppo di applicazioni altamente scalabili e controllabili. Se quello che cerchi è un servizio di accomodamento affidabile e altamente scalabile per l'invio, lo storage e la ricezione di messaggi da e a servizi diversi, ti consigliamo di valutare l'utilizzo di Amazon Simple Queue Service (Amazon SQS). Step Functions monitora tutte le task e gli eventi di un’applicazione. Con Amazon SQS, devi implementare il tuo monitoraggio personale a livello di applicazione, soprattutto se la tua applicazione utilizza più code. La console Step Functions e le API di visibilità forniscono una visione incentrata sull’applicazione che ti consente di cercare, amministrare e approfondire i dettagli di un’esecuzione. Amazon SQS richiede l'implementazione di questa funzionalità aggiuntiva. Step Functions offre varie caratteristiche per facilitare lo sviluppo delle applicazioni, come trasferimento di dati tra task e flessibilità nella distribuzione delle task. Amazon SQS richiede l'implementazione di alcune funzionalità a livello di applicazione. Anche Amazon SQS ti consente di creare flussi di lavoro di base per coordinare un'applicazione distribuita, ma potrai ottenere questa stessa funzionalità da Step Functions senza alcuna configurazione (e non è l'unica caratteristica peculiare di Step Functions).

In quali casi è preferibile usare AWS Step Functions anziché Amazon Simple Workflow Service (SWF)

AWS Step Functions dovrebbe essere preso in considerazione per tutte le nuove applicazioni, in quanto offre un approccio più produttivo e agile per coordinare i componenti dell'applicazione, grazie alla presenza di flussi di lavoro visivi. Se hai bisogno che segnali esterni intervengano nei tuoi processi o vuoi lanciare processi figlio che restituiscano un risultato a un padre, allora dovresti valutare l'utilizzo di Amazon Simple Workflow Service (Amazon SWF). Con Amazon SWF, anziché scrivere macchine a stati nel linguaggio dichiarativo JSON, si definisce un programma decisore per separare le fasi operative da quelle decisionali. Ciò offre un controllo completo sulla logica di orchestrazione, ma aumenta la complessità delle applicazioni di sviluppo. È possibile scrivere i programmi decisori nel linguaggio di programmazione scelto oppure ricorrere a Flow Framework per utilizzare costrutti di programmazione che strutturano interazioni asincrone per conto dell’utente. 

D: Quando è bene che utilizzi Express Workflow rispetto a Standard Workflow?

È bene utilizzare Express Workflow per i flussi di lavoro con alta frequenza di eventi e durata breve. Express Workflow supporta le frequenze di eventi di più di 100.000 al secondo. Express Workflow ha una durata massima di cinque minuti. Express Workflow garantisce l’esecuzione “almeno una volta” di ciascun passaggio del flusso di lavoro. I flussi di lavoro con esito negativo devono essere eseguiti di nuovo dall’inizio. Express Workflow supporta tutte le integrazioni del servizio. Express Workflow non supporta attività, Job-run (.sync) e schemi Callback.

Standard Workflow su AWS Step Functions è più idoneo per flussi di lavoro di lunga durata, duraturi e verificabili, dove ripetere i passaggi del flusso di lavoro è un’operazione costosa (ad es. riavvio di un media transcode di lunga durata) o dannosa (ad es. doppio addebito sulla carta di credito). Esempi di carichi di lavoro sono la formazione e la distribuzione di modelli di machine learning, la generazione di report, la fatturazione, l’elaborazione delle carte di credito e i processi di invio ed evasione ordini. Standard Workflow garantisce esattamente una singola esecuzione di ciascuno dei seguenti passaggi, con una durata massima di un anno. Questi carichi di lavoro monitorano e archiviano informazioni procedurali dettagliate su ciascun flusso di lavoro che potrai ispezionare durante e dopo l’esecuzione del flusso stesso. Standard Workflow supporta tutte le integrazioni di servizi, le attività e gli schemi di progettazione.

D: In quali casi è preferibile usare AWS Step Functions anziché AWS CodePipeline?

AWS CodePipeline è più indicato per l'automazione del rilascio di modifiche al software o all'infrastruttura e per sfruttare le integrazioni con servizi CI/CD come CodeBuild, CodeDeploy e soluzioni analoghe di terze parti come parte del tuo flusso di lavoro di rilascio. Ispirata alle pratiche di distribuzione di Amazon, esiste solo un'istanza di ciascuna pipeline ed è composta da fasi sequenziali. Queste fasi fungono da meccanismo di blocco per garantire che avvenga solo un'esecuzione in una sezione critica della pipeline in qualsiasi momento. Il supporto di CodePipeline per le approvazioni manuali prevede un rilascio nella fase e consente test manuali mentre le fasi precedenti continuano ad essere in esecuzione. Inoltre, il modello basato su fasi consente di mettere in pausa tutte le versioni senza generare una coda di rilascio estesa. CodePipeline rilascia le ultime modifiche al software in modo intelligente che permette di evitare la perdita di tempo con versioni obsolete.

In confronto, Step Functions supporta in modo nativo più istanze di una macchina a stati la cui esecuzione avviene in parallelo. Questa capacità supporta i team di sviluppatori che eseguono integrazioni in parallelo sviluppando ed esaminando le modifiche. Tuttavia, la gestione delle distribuzioni richiede soluzioni personalizzate per controllarne l'ordine. L'utilizzo di AWS Step Functions è consigliato per creare flussi di lavoro di integrazione continua utilizzando modelli come gestione degli errori, parallelizzazione e diramazione. Step Functions supporta l'integrazione dei servizi con AWS CodeBuild, Amazon ECS, Amazon EMR, AWS Glue e altri servizi. Se il flusso di lavoro richiede la creazione di modifiche al software o l'esecuzione di applicazioni per l'elaborazione dei dati, è consigliabile utilizzare il servizio in contemporanea con AWS CodeBuild, Amazon ECS, Amazon EMR e AWS Glue.

Integrazione

D: In che modo AWS Step Functions connette e coordina altri servizi AWS?

Il flusso di lavoro creato con AWS Step Functions può connettere e coordinare altri servizi AWS usando task di servizi. Per esempio, puoi:

  • Ricorrere ad una funzione AWS Lambda
  • Eseguire Amazon Elastic Container Service o AWS Fargate task
  • Prendere un elemento esistente da un tavolo Amazon DynamoDB o metterne uno nuovo in un tavolo DynamoDB
  • Presentare un lavoro AWS Batch e aspettare che sia completo
  • Pubblicare un messaggio su una tematica Amazon SNS
  • Inviare un messaggio ad una lista Amazon SQS
  • Iniziare l’esecuzione di un lavoro AWS Glue
  • Creare un lavoro Amazon SageMaker per allenare un modello machine learning o trasformare in batch un data set

Per maggiori informazioni su come connettere Step Functions ad altri servizi AWS, vedere la Guida dello sviluppatore Step Functions. È possibile creare task nella macchina a stati che esegue applicazioni, vedere le Domande frequenti nella sezione Panoramica,In che modo AWS Step Functions si connette alle mie risorse?

D: In che modo AWS Step Functions si integra con Amazon API Gateway?

È possibile associare le API Step Functions con Amazon API Gateway in modo che tali API richiamino la macchina a stati quando una richiesta HTTPS viene inviata ad un metodo API da te definito. È possibile usare Amazon API Gateway per accendere le macchine a stati Step Functions che coordinano i componenti di un'applicazione backend distribuita, e integrare task di attività umane nelle fasi dell'applicazione quali richieste di approvazione e risposte. Inoltre, è possibile inoltrare chiamate serverless asincrone alle API dei servizi utilizzati dall'applicazione. Per ulteriori informazioni, prova il nostro tutorial, Creare un API Step Functions usando API Gateway

D: Come funziona la registrazione di log e il lavoro di monitoraggio per AWS Step Functions?

AWS Step Functions invia metriche ad Amazon CloudWatch e AWS CloudTrail per il monitoraggio dell'applicazione. Amazon CloudWatch raccoglie e monitora i parametri, imposta allarmi e reagisce automaticamente ai cambiamenti in AWS Step Functions. AWS CloudTrail cattura tutte le chiamate API per Step Functions come eventi, incluse chiamate dalla console Step Functions e da chiamate di codice a API Step Functions. Step Functions supporta anche le regole gestite Amazon CloudWatch Events per ogni servizio integrato nel flusso di lavoro e crea e gestisce le regole CloudWatch Events nel tuo account AWS se necessario. Per maggiori informazioni, vedi Monitoraggio e Logging nella Guida dello sviluppatore AWS Step Functions.

D: Cosa succede se il mio Express Workflow ha esito negativo a causa dell’esaurimento dei tentativi o di un’eccezione non gestita?

Per impostazione predefinita, Express Workflow segnala tutti i risultati a CloudWatch Logs, tra cui input e output del flusso di lavoro e passaggi completati. Puoi selezionare livelli di versi di registrazione di log per registrare soltanto gli errori e puoi scegliere di non registrare nel log input e output. I flussi di lavoro che esauriscono i tentativi o che hanno un’eccezione non gestita devono essere rieseguiti dall’inizio. 

Sicurezza

D: È possibile accedere alle funzioni Step dalle risorse in Amazon VPC senza doversi collegare a Internet?

Inoltre, Step Functions supporta gli endpoint VPC (VPCE) tramite il servizio AWS PrivateLink. Puoi accedere a Step Functions dalle funzioni AWS Lambda abilitate per VPC e altri servizi AWS senza passare per la rete Internet pubblica. Per ulteriori informazioni, consulta la sezione Endpoint Amazon Virtual Private Cloud per AWS Step Functions nella guida per sviluppatori di AWS Step Functions.

Conformità

D: Quali sono gli standard di conformità supportati da Step Functions?

AWS Step Functions è conforme a HIPAA, FedRAMP, SOC, GDPR e altri standard di conformità comuni. Per ottenere un elenco dettagliato degli standard di conformità supportati, visita il sito sulla sicurezza di AWS Cloud

Nozioni di base su AWS Step Functions

Visita la pagina sulle nozioni di base
Sei pronto per iniziare?
Accedi alla console AWS Step Functions.
Hai altre domande?
Contattaci