Amazon Simple Workflow Service
Perché dovrei scegliere SWF?
Amazon Simple Workflow Service (Amazon SWF) aiuta gli sviluppatori a costruire, eseguire e scalare processi in background con fasi parallele o sequenziali. Puoi pensare ad Amazon SWF come a un tracker di stato e coordinatore di attività completamente gestito nel cloud.
Se le fasi dell’applicazione impiegano oltre 500 millisecondi per essere completate, può essere necessario tracciare lo stato dell’elaborazione e recuperare o ritentare un’attività non riuscita. Amazon SWF può aiutarti.
Se stai cercando un servizio di flusso di processi visivi a uso limitato di codice per orchestrare i servizi AWS, automatizzare i processi aziendali o creare applicazioni serverless, scopri di più su AWS Step Functions.
Vantaggi
Amazon SWF promuove una separazione tra la logica graduale del flusso di controllo del lavoro in background e le unità reali di lavoro che contengono la logica di business propria di ogni impresa. Questo consente di gestire, memorizzare e scalare separatamente "la macchina a stati" dell’applicazione dalla logica di business essenziale che la differenzia. Al cambiare dei tuoi requisiti di business, puoi cambiare la logica dell’applicazione senza doverti preoccupare della macchina a stati, della distribuzione delle attività e del controllo dei flussi sottostanti.
Amazon SWF viene eseguito all’interno dei data center ad alta disponibilità di Amazon, in modo che il motore di tracciatura degli stati e di elaborazione delle attività sia disponibile quando le applicazioni lo richiedono. Amazon SWF archivia le attività in modo ridondante, le distribuisce in maniera affidabile ai componenti dell’applicazione, ne traccia l’avanzamento e ne memorizza lo stato più recente.
Amazon SWF sostituisce la complessità delle soluzioni di flusso di processo con codice personalizzato e del software di automazione dei processi con un servizio web di flusso di processo cloud completamente gestito. In questo modo si elimina la necessità per gli sviluppatori di gestire l’infrastruttura dell’automazione di processi, in modo che possano concentrare la loro energia unicamente sulla funzionalità delle applicazioni.
Amazon SWF consente la perfetta scalabilità in base all’utilizzo dell’applicazione. Non è richiesta l'amministrazione manuale del servizio di flusso di processo neanche quando si aggiungono altri flussi di processo cloud all'applicazione o si aumenta la complessità dei flussi di processo.
Amazon SWF consente di scrivere i componenti dell'applicazione e la logica di coordinamento in qualsiasi linguaggio di programmazione ed eseguirli nel cloud oppure on-premises.
Dettagli del prodotto Amazon SWF
Utilizzare Amazon SWF per gestire i flussi di lavoro all’interno di un applicazione è molto semplice.
Funzionalità di Amazon SWF
Amazon SWF agisce come hub di coordinamento per tutti i diversi componenti dell’applicazione:
- Memorizzare lo stato dell’applicazione
- Tracciare le esecuzioni di flussi di lavoro e registrarne l’avanzamento
- Memorizzare e distribuire le attività
- Controllare quali attività verranno assegnate agli host di applicazioni per l’esecuzione
Per utilizzare Amazon SWF, è sufficiente:
- Utilizzare la Console di gestione AWS o le API di Amazon SWF per specificare i nomi dei flussi di lavoro.
- Utilizzare le API di Amazon SWF per "iniziare" un nuovo flusso di lavoro, che comporta l’avvio di una particolare sequenza di attività del flusso di lavoro, chiamata "esecuzione del flusso di lavoro".
- Utilizzare le API di Amazon SWF dalle macchine dei lavoratori (un "lavoratore" è un componente dell’applicazione che gestisce attività specifiche) per stabilire l’ordine delle attività, gestire flussi condizionali ed eseguire i cicli per una esecuzione del flusso di lavoro.
- Utilizzare le API di Amazon SWF dalle macchine worker per richiedere o eseguire attività del flusso di lavoro nel cloud o on-premise.
- Monitorare lo stato e l’avanzamento delle esecuzioni dei flussi di lavoro e delle attività associate nella Console di gestione AWS.
La procedura guidata nella Console di gestione AWS ti accompagnerà attraverso le fasi di registrazione e di esecuzione dell'applicazione. Per ulteriori informazioni, consulta la documentazione.
Descrizione dettagliata
Amazon SWF è un servizio di flusso di lavoro per creare applicazioni scalabili e robuste. Amazon SWF fornisce semplici chiamate API che possono essere eseguite da codice scritto in qualsiasi linguaggio ed eseguite sulle istanze EC2, o su qualsiasi delle macchine localizzate in qualsiasi parte del mondo con accesso ad Internet.
Amazon SWF agisce come hub di coordinamento con il quale interagiscono gli host di applicazioni. Puoi creare i flussi di lavoro con le attività ad essi associati e qualsiasi logica condizionale desideri applicare e archiviarli con Amazon SWF. Ogni volta che esegui un flusso di lavoro, si considera una esecuzione del flusso di lavoro distinta. Puoi programmare i componenti dell’applicazione in modo che richiedano l’esecuzione di varie attività all’interno dell’esecuzione del flusso di lavoro e Amazon SWF coordina le attività eseguite, nell’ordine specificato sugli host (sia che gli host siano localizzati nel cloud o in sede). Le applicazioni comunicano con Amazon SWF utilizzando le API per registrare il successo o il fallimento delle attività. Amazon SWF quindi continua la sequenza di attività assegnando la successiva attività del flusso di lavoro a un host di applicazione, oppure eseguendo nuovamente un attività non riuscita a seconda della logica di business.
Accedi alla Console di gestione AWS per iniziare l’esecuzione di un flusso di lavoro Amazon SWF. In alternativa, puoi avviare l’esecuzione di un flusso di lavoro attraverso le nostre API di Amazon SWF. Amazon SWF utilizza un'interfaccia Web semplice, di facile uso ed estremamente flessibile:
- StartWorkflowExecution: avvia una sequenza di attività del flusso di lavoro e rende la prima attività disponibile a uno degli host dell'applicazione.
- DescribeWorkflowExecution: fornisce lo stato delle esecuzioni e delle attività del flusso di lavoro.
- PollForActivityTask: gli host delle tue applicazioni (nel cloud o on premise) richiedono ed eseguono attività del flusso di lavoro in un ciclo continuo.
- RespondActivityTaskCompleted: un host dell'applicazione comunica ad Amazon SWF di aver completato con successo un'attività. Amazon SWF continua quindi l’esecuzione del flusso di lavoro rendendo disponibile l’attività successiva per l’host di applicazioni.
- TerminateWorkflowExecution: interrompe l'avanzamento di una particolare esecuzione del flusso di lavoro. Amazon SWF non assegna più attività di questa particolare esecuzione del flusso di lavoro ad alcun host di applicazioni.
Utilizzi previsti e limitazioni
L'utilizzo di questo servizio è soggetto al contratto con il cliente Amazon Web Services.
Casi d'uso
Codifica video con Amazon S3 e Amazon EC2. In questo caso d’uso, video di grandi dimensioni vengono caricati in Amazon S3 in blocchi. Il caricamento dei blocchi deve essere monitorato. Una volta caricato un blocco, viene codificato scaricandolo in un’istanza Amazon EC2. Il blocco codificato viene archiviato in un’altra posizione di Amazon S3. Una volta che tutti i blocchi sono stati codificati in questo modo, vengono combinati in un file codificato completo che viene poi archiviato nella sua interezza in Amazon S3. Durante questo processo, possono verificarsi errori a causa di errori di codifica riscontrati in uno o più blocchi. Tali errori devono essere rilevati e gestiti tramite la gestione del flusso di processo nel cloud di Amazon SWF.
Migrazione di componenti dal data center al cloud. Le operazioni aziendali critiche sono eseguite in hosting in un data center privato, ma devono essere trasferite interamente nel cloud senza causare interruzioni. Le applicazioni basate su Amazon SWF possono combinare lavoratori che includono componenti in esecuzione nel data center con lavoratori in esecuzione nel cloud. Per effettuare una transizione uniforme di un lavoratore di un data center, i nuovi lavoratori dello stesso tipo vengono prima distribuiti nel cloud. I lavoratori del data center continuano le operazioni come sempre, insieme ai nuovi lavoratori basati sul cloud. I lavoratori basati sul cloud vengono testati e validati indirizzando una porzione del carico attraverso di loro. Durante questo test, l’applicazione non viene interrotta, dal momento che i lavoratori del data center continuano le normali operazioni. Dopo l'esito positivo del test, i lavoratori del data center vengono gradualmente fermati e quelli nel cloud vengono aumentati verticalmente, fino a raggiungere la completa esecuzione nel cloud. Questo processo di flusso di lavoro cloud può essere ripetuto per tutti gli altri lavoratori del data center fino a trasferire l'intera applicazione nel cloud. Se, per qualche ragione aziendale, determinate fasi di elaborazione devono continuare a essere effettuate nel data center privato, quei lavoratori possono continuare a operare nel data center privato e partecipare comunque all’applicazione.
Elaborazione di cataloghi di prodotti di grandi dimensioni utilizzando Amazon Mechanical Turk. Durante la validazione dei dati in grandi cataloghi, i prodotti del catalogo vengono elaborati in batch. Diversi batch possono essere elaborati in modo simultaneo. Per ciascun batch, i dati dei prodotti vengono estratti dai server nel data center e trasformati in file CSV (Comma Separated Values), richiesti dall’interfaccia utente richiedente (RUI) di Amazon Mechanical Turk. Il file CSV viene caricato per popolare ed eseguire le HIT (Human Intelligence Task). Quando le HIT sono complete, il file CSV risultante viene trasformato all’inverso per ottenere di nuovo i dati nel formato originario. I risultati vengono poi valutati e i lavoratori di Amazon Mechanical Turk vengono retribuiti per i risultati accettabili. Gli errori vengono eliminati e rielaborati, mentre i risultati HIT accettabili vengono utilizzati per aggiornare il catalogo. Con l’elaborazione dei batch, il sistema deve monitorare la qualità dei lavoratori di Amazon Mechanical Turk e regolare i pagamenti di conseguenza. Le HIT con errori vengono suddivise in batch e inviate nuovamente nella pipeline.
AWS Flow Framework
L’AWS Flow Framework è una collezione di librerie di funzionalità che rendono più semplice e rapida la creazione di applicazione con Amazon Simple Workflow.
Come funziona
AWS Flow Framework è un modello di programmazione facile da comprendere che facilita la creazione di applicazione che eseguono lavori su più macchine. Con il framework, è possibile creare rapidamente attività, coordinarle ed esprimere in che modo queste attività dipendono tra loro, proprio come si fa nei normali programmi. Ad esempio, è possibile eseguire un metodo in un’applicazione su un computer "remoto" semplicemente richiamando un metodo nella logica dell’applicazione su un computer "locale" separato. AWS Flow Framework si occupa dei complessi scambi necessari per eseguire il metodo remoto e ne restituisce il risultato all’applicazione locale utilizzando le informazioni memorizzate da Amazon Simple Workflow Service. L’output di qualsiasi metodo eseguito può essere utilizzato per collegare parti separate della logica che dipendono le une dalle altre. Il framework consente di utilizzare una sintassi diretta per esprimere le dipendenze tra i metodi con un semplice approccio "blocca e attendi il callback". Il framework consente anche di gestire gli errori sulle macchine remote come se si trattasse di errori locali e fornisce modalità semplici per definire come eseguire nuovi tentativi per metodi importanti nell’applicazione in caso di errore.
- Ottienilo nell'AWS SDK per Java
- Visualizza il webinar per la versione Java
- Consulta la guida per gli sviluppatori
- Vedi il documento di riferimento delle API
Nota
AWS Flow Framework per Ruby non è più in fase di sviluppo attivo. Sebbene il codice esistente continuerà a funzionare a tempo indeterminato, non verranno introdotte nuove funzionalità o versioni. Il codice sorgente di Flow Framework per Ruby continuerà a essere disponibile nell'archivio AWS SWF GitHub. Se la tua applicazione Simple Workflow basata su Ruby è in evoluzione e sta cambiando, sono disponibili varie opzioni che potresti prendere in considerazione, tra cui la migrazione ad AWS Step Functions o l'utilizzo dell'API nativa Simple Workflow. Per informazioni dettagliate, consulta la guida per gli sviluppatori di AWS Simple Workflow.
Utilizzando AWS Flow Framework, è sufficiente scrivere semplice codice e lasciare che gli oggetti e le classi predefiniti del framework gestiscano i dettagli delle API di Amazon Simple Workflow. AWS Flow Framework si occupa della creazione e dell’esecuzione dei passaggi dell’applicazione, tiene traccia dell’avanzamento, consente di definire le regole per i nuovi tentativi in caso di fallimento del passaggio e molto altro. Nel frattempo, Amazon Simple Workflow Service memorizza lo stato dell’esecuzione dell’applicazione, distribuisce le attività ai lavoratori disponibili e memorizza uno storico degli audit di tutte le attività.
AWS Flow Framework è un framework Java open source sviluppato e gestito da AWS. Puoi utilizzare i link di seguito per ottenere librerie, codice sorgente, documentazione, esempi e molto altro.