D: Cos'è Amazon SWF?
Amazon Simple Workflow Service (Amazon SWF) è un servizio Web che consente di coordinare il lavoro attraverso componenti delle applicazioni distribuite. Amazon SWF rende disponibili applicazioni per una gamma di casi d’uso, inclusi elaborazione media, back-end delle applicazioni Web, flussi di lavoro dei processi di business e pipeline di analisi, da progettare come un coordinamento di attività. Le attività rappresentano invocazioni di varie fasi di elaborazione di un’applicazione, effettuabili mediante codici eseguibili, chiamate di assistenza Web, azioni umane e script.

Il coordinamento delle attività prevede la gestione di dipendenze di esecuzione, programmazione e simultaneità in conformità con il flusso logico dell’applicazione. Con Amazon SWF, i developer ottengono pieno controllo sull’implementazione delle fasi di elaborazione e sul coordinamento delle attività che le promuovono, senza preoccuparsi delle relative complessità, come il monitoraggio del progresso e il mantenimento del loro stato. Amazon SWF offre inoltre AWS Flow Framework, per aiutare i developer a utilizzare la programmazione asincrona nello sviluppo delle loro applicazioni. Utilizzando Amazon SWF, i developer traggono vantaggio dalla facilità di programmazione e dispongono della capacità di migliorare l’utilizzo delle risorse, le latenze e i throughput delle proprie applicazioni.

Inizia a usare AWS gratis

Crea un account gratuito
Oppure accedi alla console

Il piano gratuito di AWS include 750 ore di nodi di cache Micro con Amazon ElastiCache.

Visualizza i dettagli del piano gratuito di AWS »

D: Quali sono i vantaggi della progettazione della mia applicazione come un coordinamento di attività?D: Come può essermi utile Amazon SWF da questo punto di vista?
In Amazon SWF, le attività rappresentano invocazioni di fasi logiche nelle applicazioni. Le attività vengono elaborate dai "lavoratori", ovvero programmi che interagiscono con Amazon SWF per ottenere attività, elaborarle e restituirne i risultati. Un lavoratore implementa una fase di elaborazione dell’applicazione. Puoi creare lavoratori in diversi linguaggi di programmazione e persino riutilizzare componenti esistenti per creare rapidamente il lavoratore. Ad esempio, puoi utilizzare i servizi cloud, le applicazioni enterprise, i sistemi precedenti e persino semplici script per implementare i lavoratori. Controllando in modo indipendente il numero di lavoratori per l’elaborazione di ciascun tipo di attività, puoi controllare con efficienza il throughput della tua applicazione.

Per coordinare l’esecuzione dell’applicazione attraverso i vari lavoratori, puoi scrivere un programma chiamato "decisore" nel linguaggio di programmazione di tua scelta. La separazione delle fasi di elaborazione e il loro coordinamento rende possibile la gestione della tua applicazione in modo controllato e ti offre la flessibilità per distribuirle, eseguirle, dimensionarle e aggiornarle in modo indipendente. Puoi scegliere di distribuire lavoratori e decisori nel cloud (ad es. Amazon EC2 o Lambda) o sulle macchine, dietro firewall aziendali. Grazie al disaccoppiamento di lavoratori e decisori, puoi ottenere la dinamicità della tua logica di business e la tua applicazione può essere rapidamente aggiornata per adeguarsi a nuovi requisiti. Ad esempio, puoi rimuovere, saltare o riprovare attività e creare nuovi flussi di applicazioni semplicemente cambiando il decisore.

Implementando lavoratori e decisori, ti concentri sulla logica differenziata della tua applicazione, attività che riguarda l’esecuzione delle fasi effettive di elaborazione e il loro coordinamento. Amazon SWF gestisce i dettagli sottostanti, come l’archiviazione di attività fino al momento della loro assegnazione, il monitoraggio delle attività assegnate e la fornitura di informazioni coerenti sul loro completamento. Inoltre, Amazon SWF offre una visibilità continuativa a livello di ciascuna attività attraverso API e una console.

D: Cosa è possibile fare con Amazon SWF?
Amazon SWF può essere utilizzato per affrontare numerose sfide che si presentano durante lo sviluppo di applicazioni con componenti distribuiti. Ad esempio, puoi utilizzare Amazon SWF e AWS Flow Framework abbinato per:

  • Scrivere le tue applicazioni come programmi asincroni utilizzando semplici costrutti di programmazione che astraggono informazioni come l’inizializzazione di attività da eseguire in remoto e il monitoraggio dello stato di runtime dei programmi.
  • Mantenere lo stato di esecuzione della tua applicazione (ad es. quali fasi sono state completate, quali sono operative, ecc.). Non devi utilizzare database, sistemi personalizzati o soluzioni ad hoc per mantenere lo stato di esecuzione.
  • Comunicare e gestire il flusso di lavoro tra i componenti della tua applicazione. Con Amazon SWF, non devi progettare un protocollo di messaggistica o preoccuparti di attività perse o duplicate.
  • Centralizzare il coordinamento delle fasi della tua applicazione. La tua logica di coordinamento non deve essere sparpagliata su diversi componenti, ma può essere incapsulata in un unico programma.
  • Integrare una serie di programmi e componenti, inclusi sistemi precedenti e servizi cloud di terze parti, nelle tue applicazioni. Consentendo alla tua applicazione flessibilità in termini di dove e in quale combinazione vengono distribuiti i relativi componenti, Amazon SWF ti aiuta a effettuare gradualmente la migrazione dei componenti dell’applicazione da centri di dati privati a un’infrastruttura cloud pubblica, senza ostacolare la disponibilità o le performance dell’applicazione.
  • Automatizzare i flussi di lavoro che includono attività umane a lunga esecuzione (ad es. approvazioni, revisioni, indagini, ecc.) Amazon SWF monitora in modo affidabile lo stato delle fasi di elaborazione operative fino a diversi giorni o mesi.
  • Sviluppare un livello di applicazione, oltre ad Amazon SWF, per supportare linguaggi specifici di dominio per i tuoi utenti finali. Dal momento che Amazon SWF ti offre piena flessibilità nella scelta del tuo linguaggio di programmazione, puoi sviluppare in modo conveniente interpreti di linguaggi specializzati (ad es. XPDL) e interfacce utente personalizzate, inclusi strumenti di modellazione.
  • Ottenere audit trail dettagliati e visibilità su tutte le istanze operative delle tue applicazioni. Puoi anche incorporare le funzionalità di visibilità fornite da Amazon SWF nelle tue interfacce utente personali utilizzando API forniti da Amazon SWF.

I clienti hanno utilizzato Amazon SWF per sviluppare applicazioni per codifica video, social commerce, provisioning di infrastrutture, pipeline MapReduce, gestione di processi di business e molti altri casi d’uso. Per ulteriori dettagli sui casi d’uso, consulta la sezione Quali sono i casi d’uso che è possibile risolvere con SWF?. Per vedere come i clienti utilizzano Amazon SWF oggi, leggi i nostri casi di studio.

D: Quali sono i vantaggi di Amazon SWF rispetto alle soluzioni sviluppate internamente e ai prodotti per il flusso di lavoro esistenti?
Durante lo sviluppo di soluzioni per il coordinamento delle attività in un ambiente distribuito, i developer devono tenere conto di diverse variabili. Le attività che promuovono le fasi di elaborazione possono essere a lunga esecuzione e possono restituire errori, esaurire il tempo o richiedere riavvii. Sono spesso completate da throughput e latenze variabili. Il monitoraggio e la visualizzazione delle attività in tutti questi casi non è solo un lavoro difficoltoso, ma anche indifferenziato. Con l’espansione di applicazioni e attività, i developer affrontano difficili problemi di sistemi distribuiti. Ad esempio, devono garantire che un’attività venga assegnata una sola volta e che il suo risultato venga monitorato in modo affidabile, indipendentemente da errori e interruzioni imprevisti. Utilizzando Amazon SWF, i developer possono concentrarsi sulla logica differenziata delle loro applicazioni, ovvero come elaborare le attività e come coordinarle.

I prodotti dei flussi di lavoro esistenti spesso forzano i developer ad apprendere linguaggi specializzati, effettuare hosting di costosi database e cedere il controllo sull’esecuzione delle attività. I linguaggi specializzati rendono difficile l’espressione di applicazioni complesse e non sono abbastanza flessibili da permettere un’implementazione rapida delle modifiche. Amazon SWF, invece, è un servizio basato su cloud, consente l’utilizzo di linguaggi di programmazione comuni e lascia che i developer controllino dove le attività vengono elaborate. Adottando un modello ad accoppiamento flessibile per applicazioni distribuite, Amazon SWF consente l’esecuzione di modifiche in modo agile.

D: Che cosa sono i "lavoratori" e i "decisori"?
In Amazon SWF, un’applicazione viene implementata sviluppando lavoratori e un decisore che comunicano direttamente con il servizio. I "lavoratori" sono programmi che interagiscono con Amazon SWF per ottenere attività, elaborare quelle ricevute e restituire i risultati. Il "decisore" è un programma che controlla il coordinamento delle attività, ovvero il loro ordine, la simultaneità e la programmazione, in base alla logica dell’applicazione. I lavoratori e il decisore possono essere eseguiti su un’infrastruttura cloud, come Amazon EC2, o sulle macchine, dietro firewall. Amazon SWF media le interazioni tra i lavoratori e il decisore. Consente al decisore di ottenere visioni coerenti sul progresso delle attività e di iniziare nuove attività in modo continuativo. Al tempo stesso, Amazon SWF archivia le attività, le assegna ai lavoratori quando sono pronte e ne monitora il progresso. Garantisce che un’attività venga assegnata una sola volta e che non venga mai duplicata. Dal momento che Amazon SWF mantiene lo stato dell’applicazione in modo duraturo, i lavoratori e il decisore non devono tenere traccia dello stato di esecuzione. Possono essere eseguiti in modo indipendente e dimensionare rapidamente. Consulta la sezione Funzionalità della pagina delle informazioni di Amazon SWF per scoprire di più sulle fasi di sviluppo delle applicazioni con Amazon SWF.

In Amazon SWF puoi avere diverse esecuzioni simultanee di un flusso di lavoro. Ognuna è indicata come esecuzione di un flusso di lavoro o "esecuzione". Le esecuzioni vengono identificate con nomi unici. Utilizza la Console di gestione Amazon SWF (o le API di visibilità) per visualizzare le tue esecuzioni nel complesso e per approfondire una data esecuzione per vederne i dettagli a livello di attività.

D: Quali funzionalità di programmazione offre Amazon SWF per la scrittura delle applicazioni?
Come altri servizi AWS, Amazon SWF offre un SDK principale per le API dei servizi Web. Inoltre, Amazon SWF offre un SDK chiamato AWS Flow Framework che ti permette di sviluppare applicazioni basate su Amazon SWF in modo rapido e semplice. AWS Flow Framework astrae i dettagli del coordinamento a livello di attività con costrutti di programmazione familiari. Durante l’esecuzione del tuo programma, il framework effettua chiamate ad Amazon SWF, monitora lo stato di esecuzione del tuo programma utilizzando lo storico di esecuzione archiviato da Amazon SWF e invoca le porzioni pertinenti del tuo codice al momento giusto. Offrendo un framework di programmazione intuitivo per accedere ad Amazon SWF, AWS Flow Framework consente ai developer di scrivere intere applicazioni come interazioni asincrone strutturate in un flusso di lavoro. Per ulteriori informazioni, consulta la sezione Che cos’è AWS Flow Framework?

D: In quali casi è preferibile usare Amazon SWF anziché 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. Anziché scrivere un programma decisore, si definiscono macchine di stato in JSON. Si consiglia ai clienti AWS di utilizzare Step Functions per le nuove applicazioni. Se Step Functions non dovesse soddisfare le esigenze specifiche, si consigli allora l’uso di Amazon Simple Workflow (SWF). Amazon SWF 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 utilizzare Flow Framework per utilizzare costrutti di programmazione che strutturano interazioni asincrone per conto dell’utente. AWS continuerà a fornire il servizio Amazon SWF e Flow Framework e a supportare tutti i clienti Amazon SWF.

D: Quali sono le differenze tra Amazon SWF e Amazon SQS?

Amazon SQS e Amazon SWF sono entrambi servizi che facilitano l'integrazione di applicazioni o microservizi:

  • Amazon Simple Queue Service (Amazon SQS) offre code in hosting affidabili e a scalabilità elevata per memorizzare i messaggi durante il trasferimento fra applicazioni o microservizi. Amazon SQS consente di trasferire dati fra i componenti di applicazioni distribuite e di disaccoppiare questi componenti.
  • Amazon Simple Workflow Service (Amazon SWF) è un servizio Web che consente di coordinare il lavoro attraverso i componenti di applicazioni distribuite.

Le differenze principali fra Amazon SQS e Amazon SWF sono le seguenti:

  • Le operazioni API di Amazon SWF sono orientate ad attività. Le operazioni API di Amazon SQS sono orientate ai messaggi.
  • Amazon SWF monitora tutte le attività 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 Amazon SWF 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.
  • Amazon SWF offre varie caratteristiche per facilitare lo sviluppo delle applicazioni, come trasferimento di dati tra attività, segnalazione e flessibilità nella distribuzione delle attività. Amazon SQS richiede l'implementazione di alcune funzionalità a livello di applicazione.
  • Oltre a un SDK principale per chiamare le API di servizio, Amazon SWF offre AWS Flow Framework, con cui puoi facilmente scrivere applicazioni distribuite utilizzando costrutti di programmazione per strutturare interazioni asincrone.

Anche Amazon SQS ti consente di creare flussi di lavoro di base per coordinare un'applicazione distribuita, ma potrai ottenere questa stessa funzionalità da Amazon SWF senza alcuna configurazione (e non è l'unica caratteristica peculiare di Amazon SWF).

Ti consigliamo di provare sia Amazon SQS sia Amazon SWF per determinare quale delle due soluzioni sia più idonea alle tue necessità.

D: Quali sono i casi d'uso che è possibile risolvere con Amazon SWF? 

Amazon SWF è stato applicato ai casi d’uso di elaborazione di media, automazione di processi di business, analisi di dati, migrazione al cloud ed elaborazione di batch. Ecco alcuni esempi:

Caso d’uso n. 1: codifica video utilizzando 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.

Con Amazon SWF: l’intera applicazione è sviluppata come un flusso di lavoro in cui ogni file video è gestito come una sola esecuzione di un flusso di lavoro. Le attività elaborate da diversi lavoratori sono: caricamento di un blocco su Amazon S3, scaricamento di un blocco da Amazon S3 in un’istanza di Amazon EC2 e codifica dello stesso, nuova archiviazione di un blocco in Amazon S3, combinazione di più blocchi in un solo file e caricamento di un file completo in Amazon S3. Il decisore dà inizio ad attività simultanee per sfruttare il parallelismo nel caso d’uso. Inizia un’attività per codificare un blocco caricato senza attendere il caricamento degli altri blocchi. Se un’attività relativa a un blocco restituisce un errore, il decisore la esegue nuovamente solo per il blocco in questione. Lo stato dell’applicazione mantenuta da Amazon SWF aiuta il decisore a controllare il flusso di lavoro. Ad esempio, il decisore lo utilizza per rilevare quando tutti i blocchi sono stati codificati e per estrarne le relative posizioni di Amazon S3 in modo da poterli combinare. Il progresso dell’esecuzione viene monitorato costantemente nella Console di gestione Amazon SWF. In caso di errori, le attività specifiche che li hanno riportati vengono individuate e utilizzate per rilevare i blocchi con errori.

Caso d’uso n. 2: elaborazione di grandi cataloghi di prodotti 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.

Con Amazon SWF: il caso d’uso descritto sopra viene implementato come un set di flussi di lavoro. Un flusso di lavoro di BatchProcess gestisce l’elaborazione di un singolo batch. Presenta lavoratori che estraggono i dati, li trasformano e li inviano attraverso Amazon Mechanical Turk. Il flusso di lavoro di BatchProcess restituisce le HIT accettabili e quelle con errori. Questo viene utilizzato come input per altri tre flussi di lavoro: MTurkManager, UpdateCatalogWorkflow e RerunProducts. Il flusso di lavoro di MTurkManager effettua i pagamenti per le HIT accettabili, risponde ai lavoratori umani che hanno prodotto HIT con errori e aggiorna il proprio database per monitorare la qualità dei risultati. UpdateCatalogWorkflow aggiorna il catalogo master sulla base delle HIT accettabili. RerunProducts attende fino a quando non è presente un batch abbastanza grande di prodotti con HIT con errori. Poi crea un batch e lo invia nuovamente al flusso di lavoro di BatchProcess. L’elaborazione dell’intero catalogo end-to-end viene effettuata da un flusso di lavoro di CleanupCatalog che inizia le esecuzioni figlie dei flussi di lavoro superiori. Disporre di un sistema di flussi di lavoro ben definiti consente architettura, audit ed esecuzione sistematica di questo caso d’uso per i cataloghi con diversi milioni di prodotti.

Caso d’uso n. 3: 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.

Con Amazon SWF: le applicazioni basate su Amazon SWF possono combinare lavoratori che includono componenti operativi nel data center con lavoratori operativi 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 un test di successo, i lavoratori del data center vengono gradualmente fermati e quelli nel cloud vengono ampliati, fino a raggiungere la completa esecuzione dei lavoratori nel cloud. Questo processo può essere ripetuto per tutti gli altri lavoratori del data center, in modo da 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.

Consulta i nostri casi di studio per altre entusiasmanti applicazioni e sistemi che developer e imprese stanno sviluppando con Amazon SWF.

D: Amazon utilizza Amazon SWF per le sue applicazioni?
Sì. I developer di Amazon utilizzano Amazon SWF per svariati progetti e milioni di esecuzioni di flussi di lavoro ogni giorno. I loro casi d’uso includono processi di business chiave alla base dei siti Web Amazon.com e AWS, implementazioni di vari AWS Web Services e relative API, analisi MapReduce per processi decisionali operativi e gestione di contenuti rivolti agli utenti, come pagine Web, video e libri per Kindle.

D: Come posso iniziare a utilizzare Amazon SWF?
Per registrarti ad Amazon SWF, naviga alla pagina dei dettagli di Amazon SWF e fai clic sul pulsante "Registrati ora". Se non disponi di un account Amazon Web Service, ti verrà chiesto di crearne uno. Una volta registrato, potrai lanciare una procedura guidata nella Console di gestione AWS che ti accompagnerà attraverso le fasi dell’esecuzione di una semplice applicazione di conversione di immagini con Amazon SWF. Puoi anche scaricare campioni di AWS Flow Framework per imparare le varie caratteristiche del servizio. Per iniziare a utilizzare Amazon SWF nelle tue applicazioni, fai riferimento alla documentazione Amazon SWF.

D: Esistono dei flussi di lavoro campione che posso usare per testare Amazon SWF?
Sì. Quando inizi a utilizzare Amazon SWF, puoi provare la procedura guidata campione nella Console di gestione AWS che ti accompagna attraverso le fasi di registrazione di dominio e tipi, distribuzione di lavoratori e decisori e avvio delle esecuzioni del flusso di lavoro. Puoi scaricare il codice per i lavoratori e i decisori utilizzato in questa procedura guidata, eseguirlo sulla tua infrastruttura e persino modificarlo per sviluppare le tue applicazioni personali. Puoi anche scaricare i campioni di AWS Flow Framework che illustrano l’utilizzo di Amazon SWF per vari casi d’uso, come elaborazione di dati distribuiti, attività di Cron e distribuzione di stack di applicazioni. Osservando il codice sorgente incluso, puoi apprendere maggiori informazioni sulle caratteristiche di Amazon SWF e su come utilizzare AWS Flow Framework per sviluppare le tue applicazioni distribuite.

D: Quali sono i diversi modi per accedere a SWF?
Puoi accedere a SWF in uno dei seguenti modi:

  • SDK AWS per Java, Ruby, .NET e PHP
  • AWS Flow Framework per Java (incluso in SDK AWS per Java)
  • API web service Amazon SWF
  • Console di gestione AWS


D: Che cos’è la registrazione?
La registrazione è una fase da effettuare una sola volta per ciascun diverso tipo di flusso di lavoro e attività. Puoi effettuare la registrazione in modo programmatico o attraverso la Console di gestione Amazon SWF. Durante la registrazione, fornisci ID-tipo unici per ciascun tipo di attività e flusso di lavoro. Inoltre fornisci informazioni predefinite che vengono utilizzate durante l’esecuzione di un flusso di lavoro, come i valori di timeout e i parametri di distribuzione delle attività.

D: Che cosa sono i domini?
In SWF, puoi definire contenitori logici chiamati "domini" per le risorse delle tue applicazioni. I domini possono essere creati unicamente a livello del tuo account AWS e non possono essere annidati. Un dominio può avere qualsiasi nome definito dall’utente. Ogni risorsa delle applicazioni, come tipo di flusso di lavoro, tipo di attività o esecuzione, appartiene specificamente a un solo dominio. Durante la registrazione, indichi il dominio in cui registrare un tipo di flusso di lavoro o di attività. Quando inizi un’esecuzione, questa viene creata automaticamente nello stesso dominio del relativo tipo di flusso di lavoro. L’unicità degli identificatori delle risorse (ad es., ID-tipo, ID di esecuzione) rientra nell’ambito di un dominio, ovvero puoi riutilizzare identificatori in diversi domini.

D: Come posso gestire le applicazioni delle mie risorse su diversi ambienti e raggruppamenti?
Puoi utilizzare i domini per organizzare le risorse delle tue applicazioni in modo da rendere più facile la gestione ed evitare che influiscano accidentalmente le une sulle altre. Ad esempio, puoi creare diversi domini per i tuoi ambienti di sviluppo, test e produzione e creare le risorse opportune in ciascuno di essi. Benché tu possa registrare lo stesso tipo di flusso di lavoro in ciascuno di questi domini, questo verrà trattato come una risorsa separata in ogni singolo dominio. Puoi modificarne le impostazioni nel dominio di sviluppo o amministrare le esecuzioni nel dominio di test, senza influire sulle risorse corrispondenti nel dominio di produzione.

D: In che modo un decisore coordina un flusso di lavoro in Amazon SWF?
Il decisore può essere visto come un tipo speciale di lavoratore. Come i lavoratori, può essere scritto in qualsiasi linguaggio e richiedere attività ad Amazon SWF. Tuttavia, gestisce attività speciali, denominate "attività di decisione". Amazon SWF emette attività di decisione ogni volta che l’esecuzione di un flusso di lavoro presenta transizioni come il completamento o il timeout di un’attività. Un’attività di decisione contiene informazioni su input, output e stato attuale delle attività precedentemente iniziate. Il tuo decisore utilizza questi dati per decidere le fasi successive, incluse eventuali nuove attività, e le restituisce ad Amazon SWF. Amazon SWF, a sua volta, mette in atto queste decisioni, dando inizio a nuove attività, ove opportuno, e monitorandole. Rispondendo alle attività di decisione in modo continuativo, il decisore controlla ordine, tempistica e simultaneità delle attività e, di conseguenza, l’esecuzione delle fasi di elaborazione nell’applicazione. SWF emette la prima attività di decisione all’avvio di un’esecuzione. Successivamente, Amazon SWF mette in atto le decisioni prese dal tuo decisore per promuovere la tua esecuzione. L’esecuzione continua fino a quando il tuo decisore non prende una decisione relativa al suo completamento.

Al fine di aiutare il decisore nel processo decisionale, SWF mantiene un registro costante dei dettagli di tutte le attività di un’esecuzione. Tale registro è chiamato lo storico ed è unico per ogni esecuzione. Un nuovo storico viene iniziato all’avvio di un’esecuzione. In quel momento, lo storico contiene informazioni iniziali, come i dati di input dell’esecuzione. In seguito, mentre i lavoratori elaborano le attività, Amazon SWF aggiorna lo storico con i loro dati di input e output e lo stato più recente. Quando un decisore riceve un’attività di decisione, può controllare lo storico dell’esecuzione. Amazon SWF garantisce che lo storico rifletta accuratamente lo stato dell’esecuzione al momento dell’emissione dell’attività di decisione. Pertanto, il decisore può utilizzare lo storico per determinare ciò che si è verificato nell’esecuzione e decidere le fasi successive più appropriate.

D: In che modo è possibile garantire che un lavoratore o un decisore riceva solo attività che è in grado di comprendere?
Puoi utilizzare l’elenco delle attività per determinare come queste vengono assegnate. Gli elenchi di attività sono risorse di Amazon SWF in cui vengono aggiunte le attività inizializzate e da cui vengono richieste le attività. Gli elenchi di attività vengono identificati mediante nomi definiti dall’utente. Un elenco di attività può contenere attività di ID-tipo diversi, ma devono tutte essere attività o attività di decisione. Durante la registrazione, puoi specificare un elenco di attività predefinito per ciascun tipo di attività e flusso di lavoro. Amazon SWF, inoltre, ti permette di creare elenchi di attività durante il runtime. Puoi creare un elenco di attività semplicemente nominandolo e iniziando a utilizzarlo. Puoi utilizzare elenchi di attività nel modo seguente:

  • All’inizio di un’attività, un decisore può aggiungerla in uno specifico elenco di attività o richiedere ad Amazon SWF di aggiungerla nell’elenco di attività predefinito per il relativo tipo di attività.
  • All’inizio di un’esecuzione, puoi richiedere ad Amazon SWF di aggiungere tutte le relative attività di decisione a uno specifico elenco di attività o all’elenco di attività predefinito per il tipo di flusso di lavoro.
  • In fase di richiesta di un’attività, i decisori e i lavoratori indicano da quale elenco desiderano ricevere le attività. Se un’attività è disponibile nell’elenco, SWF la invia in risposta e include anche il relativo ID-tipo.

In base a quanto sopra, puoi controllare a quale elenco viene aggiunta ogni attività e chi richiede attività da ogni elenco. Di conseguenza, puoi garantire che i lavoratori e i decisori ricevano solo le attività che sono in grado di comprendere.

D: Che cos’è AWS Flow Framework? In che modo mi aiuta a coordinare il mio flusso di lavoro?
AWS Flow Framework è un framework di programmazione che ti permette di sviluppare applicazioni basate su Amazon SWF in modo rapido e semplice. Astrae i dettagli del coordinamento a livello di attività e l’interazione asincrona con semplici costrutti di programmazione. Il coordinamento dei flussi di lavoro in Amazon SWF prevede l’inizializzazione di azioni remote che richiedono tempi di completamento variabili (ad es., le attività) e l’implementazione corretta delle loro interdipendenze.

AWS Flow Framework facilita l’espressione di entrambi i facet di coordinamento attraverso concetti di programmazione familiari. Ad esempio, l’inizializzazione di un’attività è semplice come effettuare la chiamata di un metodo. AWS Flow Framework traduce automaticamente la chiamata in una decisione di inizializzazione dell’attività e lascia che Amazon SWF assegni l’attività a un lavoratore, la monitori e ne segnali il completamento. Il framework rende disponibile nel codice il risultato dell’attività, compresi i relativi dati di output, come i valori di ritorno della chiamata di un metodo. Per esprimere la dipendenza da un’attività, puoi semplicemente utilizzare i valori di ritorno del tuo codice, come faresti per le normali chiamate dei metodi. Il runtime del framework attenderà automaticamente il completamento dell’attività e proseguirà la tua esecuzione solo una volta disponibili i risultati. Dietro le quinte, il runtime del framework riceve il lavoratore e le attività di decisione da Amazon SWF, invoca i metodi pertinenti del tuo programma al momento giusto e formula decisioni da inviare di nuovo ad Amazon SWF. Offrendo accesso ad Amazon SWF mediante un framework di programmazione intuitivo, AWS Flow Framework rende possibile incorporare facilmente la programmazione asincrona e basata su eventi nello sviluppo delle tue applicazioni.

D: In che modo lavoratori e decisori comunicano con Amazon SWF? I protocolli di polling non richiedono notevoli quantità di risorse?
Normalmente i protocolli basati su polling richiedono ai developer di trovare una frequenza di polling ottimale. Se i developer effettuano polling con troppa frequenza, è possibile che molti di questi restituiscano risultati vuoti. Questo porta a una situazione in cui gran parte delle risorse delle applicazioni e di rete vengono impiegate nel polling, senza alcun risultato significativo che permetta all’esecuzione di progredire. Se i developer non effettuano polling con frequenza sufficiente, allora i messaggi possono essere conservati più a lungo, con maggiori latenze delle applicazioni.

Per superare le inefficienze relative al polling, Amazon SWF offre il polling lungo. Il polling lungo riduce significativamente il numero di polling che non restituiscono alcun’attività. Quando i lavoratori e i decisori effettuano polling di Amazon SWF per le attività, la connessione viene mantenuta per un minuto se non sono disponibili attività. Se un’attività diventa disponibile durante quel periodo, viene rinviata in risposta alla richiesta di polling lungo. Mantenendo la connessione per un determinato periodo di tempo, si evitano polling aggiuntivi che restituirebbero risultati vuoti durante quel periodo. Con il polling lungo, le tue applicazioni sfruttano i vantaggi del polling in termini di sicurezza e controllo del flusso, senza sacrificare i vantaggi di latenza ed efficienza offerti dai servizi Web basati sulla tecnologia push.

D: È possibile utilizzare un servizio Web esistente come lavoratore?
I lavoratori utilizzano richieste HTTP GET standard per ricevere attività da Amazon SWF e restituire i risultati. Per utilizzare un servizio Web esistente come lavoratore, puoi scrivere un wrapper che riceve attività da Amazon SWF, invoca le API del tuo servizio Web e restituisce nuovamente i risultati in Amazon SWF. Nel wrapper, puoi tradurre i dati di input forniti in un’attività in parametri per le API del tuo servizio Web. Analogamente, puoi anche tradurre i dati di output dalle API del servizio Web in risultati per l’attività e restituire tali risultati in Amazon SWF.

D: Amazon SWF mi vincola all’utilizzo di specifici linguaggi di programmazione?
No, puoi utilizzare qualsiasi linguaggio di programmazione per scrivere un lavoratore o un decisore, a condizione che tu possa comunicare con Amazon SWF utilizzando le API del servizio Web. SDK AWS è attualmente disponibile in Java, .NET, PHP e Ruby. SDK AWS per Java include AWS Flow Framework.

D: Vorrei garantire che vi sia una sola esecuzione per ogni attivazione del mio processo di business (ad es., una transazione, una presentazione o un’assegnazione). Come posso riuscirci?
Quando avvii nuove esecuzioni del flusso di lavoro, fornisci un ID per quella specifica esecuzione. Ciò ti consente di associare un’esecuzione a un’entità di business o a un’azione (ad es., ID cliente, nome file, numero di serie). Amazon SWF garantisce l’unicità dell’ID di un’esecuzione mentre è operativa. Durante questo periodo di tempo, ogni tentativo di iniziare un’altra esecuzione con lo stesso ID restituirà un errore. Questo facilita per te la soddisfazione delle esigenze di business quando non è possibile più di un’esecuzione per una data azione di business, come una transazione, una presentazione o un’assegnazione. Considera un flusso di lavoro che registra un nuovo utente su un sito Web. Quando un utente fa clic sul pulsante Invia, l’indirizzo e-mail unico dell’utente può essere utilizzato per nominare l’esecuzione. Se l’esecuzione esiste già, la chiamata per l’avvio dell’esecuzione restituirà un errore. Non è necessario alcun codice aggiuntivo per evitare conflitti a seguito di più clic sul pulsante da parte dell’utente quando la registrazione è in corso.

Una volta completata l’esecuzione del flusso di lavoro (con successo o meno), puoi iniziarne un’altra con lo stesso ID. Questo determina un nuovo avvio dell’esecuzione del flusso di lavoro con lo stesso ID di esecuzione ma con un diverso ID operativo. L’ID operativo viene generato da Amazon SWF e tramite questo è possibile differenziare più esecuzioni con lo stesso ID di esecuzione del flusso di lavoro. Permettendoti di riutilizzare gli ID di esecuzione del flusso di lavoro in tal modo, Amazon SWF ti consente di considerare ogni caso d’uso come nuovo tentativo. Ad esempio, nel caso di registrazione dell’utente, poniamo che l’esecuzione del flusso di lavoro abbia restituito un errore durante la creazione di un registro di database per l’utente. Puoi avviare nuovamente l’esecuzione del flusso di lavoro con lo stesso ID di esecuzione (indirizzo e-mail dell’utente) senza dover creare un nuovo ID per il nuovo tentativo di registrazione.

D: Come può essermi utile Amazon SWF per il dimensionamento delle mie applicazioni?
Amazon SWF ti consente di dimensionare le tue applicazioni offrendoti pieno controllo sul numero di lavoratori che esegui per ogni tipo di attività e sul numero di istanze che esegui per un decisore. Aumentando il numero di istanze di lavoratori o decisori, aumenti le risorse di calcolo assegnate alle fasi di elaborazione corrispondenti e, di conseguenza, il throughput per quelle stesse fasi. Per effettuare l’autodimensionamento, puoi utilizzare i dati di runtime forniti da Amazon SWF tramite le sue API. Ad esempio, Amazon SWF fornisce il numero di attività di un elenco di attività. Dal momento che un incremento di questo numero implica che i lavoratori non tengono il passo con il carico, puoi far girare automaticamente nuovi lavoratori ogni volta che il backlog delle attività supera una determinata soglia.

D: Io gestisco un grosso numero di esecuzioni di applicazioni mission critical. Come posso monitorarle e dimensionarle?
Oltre a una Console di gestione, Amazon SWF offre un set completo di API di visibilità. Puoi utilizzarle per ricevere informazioni di runtime per monitorare e autodimensionare tutte le tue esecuzioni a seconda del carico. Puoi ottenere dati dettagliati di ciascun tipo di flusso di lavoro, come il numero di esecuzioni aperte e chiuse in un intervallo di tempo specifico. Utilizzando le API di visibilità, puoi anche sviluppare le tue applicazioni di monitoraggio personali.

D: Ho numerose esecuzioni operative contemporaneamente, ma alcune spesso riportano errori o si bloccano. Come posso rilevare e risolvere queste esecuzioni problematiche?
Amazon SWF ti consente di cercare esecuzioni attraverso la sua Console di gestione e le API di visibilità. Puoi cercare utilizzando vari criteri, tra cui gli intervalli di tempo in cui le esecuzioni sono state avviate o completate, lo stato attuale (ovvero, aperto o chiuso) e le modalità di errore standard (ovvero, timeout, interruzione). Per raggruppare insieme le esecuzioni dei flussi di lavoro, puoi utilizzare fino a 5 tag per associare un testo personalizzato alle esecuzioni del flusso di lavoro al momento del loro avvio. Nella Console di gestione AWS, puoi utilizzare i tag quando effettui ricerche di esecuzioni dei flussi di lavoro.

Per trovare esecuzioni che potrebbero essersi bloccate, puoi iniziare con una ricerca basata sul tempo per recuperare le esecuzioni operative per un periodo più lungo del previsto. Poi, puoi controllarle per vedere i dettagli del livello di attività e verificare se determinate attività sono state operative troppo a lungo o hanno restituito errori, oppure se il decisore semplicemente non ha inizializzato le attività. Questo può aiutarti a individuare il problema a livello di attività.

D: Ho un tipo di attività che può essere utilizzato in più applicazioni. Posso condividerlo?
Sì. Più applicazioni possono condividere un dato tipo di attività, a condizione che le applicazioni e l’attività siano tutte registrate nello stesso dominio. Per implementarle, puoi far sì che diversi decisori diano inizio ad attività per quello specifico tipo e le aggiungano all’elenco su cui i lavoratori per quella specifica attività effettuano il polling. In seguito, i lavoratori di quel tipo riceveranno attività da tutte le diverse applicazioni. Se desideri sapere da quale applicazione proviene un’attività o se vuoi distribuire diversi set di lavoratori per diverse applicazioni, puoi utilizzare più elenchi di attività. Fai riferimento alla sezione Come posso garantire che un lavoratore o un decisore riceva solo attività che è in grado di comprendere?

D: Posso usare AWS Identity and Access Management (IAM) per gestire l’accesso ad Amazon SWF?
Sì. Puoi permettere agli utenti IAM di accedere ad Amazon SWF. Gli utenti IAM possono accedere solo ai domini SWF e alle API da te specificati.

D: È possibile eseguire un lavoratore dietro un firewall?
Sì. I lavoratori utilizzano richieste HTTP GET standard per richiedere attività da Amazon SWF e restituire i risultati calcolati. Dal momento che sono sempre i lavoratori a iniziare richieste ad Amazon SWF, non devi configurare il tuo firewall per consentire richieste in entrata.

D: Non è rischioso dal punto di vista della sicurezza esporre la logica di business sotto forma di lavoratori e decisori?
I lavoratori utilizzano richieste HTTP GET standard per richiedere attività da Amazon SWF e restituire i risultati calcolati. Di conseguenza, non devi esporre alcun endpoint per i tuoi lavoratori. Inoltre, Amazon SWF assegna attività ai lavoratori solo quando vengono inizializzate dal decisore. Dal momento che sei tu a scrivere il decisore, hai pieno controllo su quando e come vengono inizializzate le attività, inclusi i dati di input inviati insieme ad esse ai lavoratori.

D: Come può essermi utile Amazon SWF per coordinare le attività in modo affidabile nella mia applicazione?
Amazon SWF offre utili garanzie relative all’assegnazione di attività. Garantisce che un’attività non venga mai duplicata e che venga assegnata una sola volta. Pertanto, anche se dovessi avere più lavoratori per un determinato tipo di attività (o numerose istanze di un decisore), Amazon SWF assegnerà una specifica attività a un solo lavoratore (o una sola istanza di decisore). Per di più, Amazon SWF mantiene al massimo una sola attività di decisione in sospeso per volta per un’esecuzione di flusso di lavoro. Così puoi eseguire più istanze di un decisore senza doverti preoccupare di avere due istanze operative in contemporanea nella stessa esecuzione. Tali strumenti ti consentono di coordinare il tuo flusso di lavoro senza preoccuparti di attività duplicate, perse o in conflitto.

D: Quanti tipi di flussi di lavoro, tipi di attività e domini posso registrare con Amazon SWF?
Puoi creare un massimo di 10.000 tipi di flussi di lavoro e attività (in totale), registrati o dichiarati obsoleti in ciascun dominio. Puoi avere un massimo di 100 domini Amazon SWF (inclusi domini registrati e dichiarati obsoleti) nel tuo account AWS. Se ritieni che probabilmente supererai i limiti indicati sopra, utilizza questo modulo per contattare il team di Amazon SWF, discutere della tua situazione e richiedere limiti superiori.

D: Sono previsti limiti per il numero di esecuzioni di flussi di lavoro che posso eseguire contemporaneamente?
In qualsiasi momento dato, puoi avere un massimo di 100.000 esecuzioni aperte in un dominio. Non vi sono altri limiti sul numero cumulativo di esecuzioni che puoi gestire o sul numero di esecuzioni mantenute da Amazon SWF. Se ritieni che probabilmente supererai i limiti indicati sopra, utilizza questo modulo per contattare il team di Amazon SWF, discutere della tua situazione e richiedere limiti superiori.

D: Per quanto tempo possono essere operative le esecuzioni dei flussi di lavoro?
Ogni esecuzione di un flusso di lavoro può essere operativa per un massimo di 1 anno. Ogni storico delle esecuzioni dei flussi di lavoro può arrivare a includere fino a 25.000 eventi. Se il tuo caso d’uso fa sì che tu debba superare questi limiti, puoi utilizzare le caratteristiche che Amazon SWF fornisce per proseguire le esecuzioni e strutturare le tue applicazioni utilizzando esecuzioni di flussi di lavoro figlie.

D: Cosa succede se la mia esecuzione di flusso di lavoro è inattiva per un lungo periodo?
Amazon SWF non intraprende alcuna misura speciale nel caso in cui un’esecuzione di flusso di lavoro sia inattiva per un lungo periodo. Le esecuzioni inattive sono soggette ai timeout da te configurati. Ad esempio, se hai impostato una durata massima per le esecuzioni di 1 giorno, allora un’esecuzione inattiva sarà soggetta a timeout se supera il limite di 1 giorno. Le esecuzioni inattive sono inoltre soggette al limite di Amazon SWF sul periodo di tempo in cui un’esecuzione può essere operativa (1 anno).

D: Quanto tempo può richiedere l'elaborazione di un'attività da parte di un lavoratore?
Amazon SWF non impone un limite temporale specifico riguardo al tempo necessario per l’elaborazione di un’attività da parte di un lavoratore. Applica il timeout da te specificato per la durata massima dell’attività. Considera che, dal momento che Amazon SWF limita l’operatività di un’esecuzione al massimo di 1 anno, l’elaborazione di un’attività da parte di un lavoratore non può richiedere un tempo superiore a quello.

D: Per quanto tempo Amazon SWF conserva un'attività prima che un lavoratore la richieda?
Amazon SWF non impone un limite temporale specifico riguardo al tempo di retention di un’attività prima che un lavoratore ne effettui il polling. Tuttavia, al momento della registrazione del tipo di attività, puoi impostare un timeout predefinito per il tempo di retention delle attività di quel tipo da parte di Amazon SWF. Puoi anche specificare il timeout o annullare quello predefinito con il tuo codice decisore quando programmi un’attività. Dal momento che Amazon SWF limita il tempo di operatività di un’esecuzione di un flusso di lavoro a un massimo di 1 anno, se non viene specificato un timeout, l’attività non sarà conservata più a lungo di 1 anno.

D: Posso programmare diverse attività emettendo una sola decisione?
Sì, puoi programmare fino a 100 attività in una sola decisione, così come emettere diverse decisioni una dopo l’altra.

D: Quante attività, segnali e contrassegni dei lavoratori posso avere in un’esecuzione di flusso di lavoro e tra le varie esecuzioni?
Non c’è un limite sul numero totale di attività, segnali e timer utilizzati durante un’esecuzione di flusso di lavoro. Tuttavia, in questa fase, puoi avere un massimo di 1.000 attività aperte per esecuzione di flusso di lavoro. Ciò include le attività inizializzate e quelle in fase di elaborazione da parte dei lavoratori. Analogamente, può esserci un massimo di 1.000 timer aperti e un massimo di 1.000 esecuzioni figlie aperte per esecuzione di flusso di lavoro.

D: Quali volumi di dati è possibile trasferire in un’esecuzione di flusso di lavoro?
Non c’è un limite sul volume totale di dati trasferiti durante un’esecuzione di flusso di lavoro. Tuttavia, le API Amazon SWF impongono limiti massimi specifici sui parametri utilizzati per trasferire i dati in un’esecuzione. Ad esempio, i dati di input trasferiti in un’attività e quelli inviati con un segnale possono avere un massimo di 32.000 caratteri ciascuno.

D: Amazon SWF conserva le esecuzioni completate? Se sì, per quanto tempo?

Amazon SWF conserva lo storico di un’esecuzione completata per un numero di giorni qualsiasi da te specificato, fino a un massimo di 90 giorni (ovvero circa 3 mesi). Durante il periodo di retention, puoi accedere allo storico e cercare l’esecuzione in modo programmatico o mediante la console.

D: In quali occasioni vengono limitate le chiamate API?
Al di là di picchi poco frequenti, potresti raggiungere un limite se effettui un numero molto elevato di chiamate API in un periodo di tempo molto ristretto. Se ritieni di essere limitato con frequenza elevata o se la tua applicazione si imbatte spesso in picchi, utilizza questo modulo per contattare il team Amazon SWF, discutere della tua situazione d’uso e richiedere impostazioni diverse dei limiti per il tuo account.

D: In quali regioni è disponibile Amazon SWF?
Amazon SWF (SWF) è disponibile in ciascuna delle seguenti regioni: Stati Uniti orientali (Virginia settentrionale), Stati Uniti occidentali (Oregon), Stati Uniti occidentali (California settentrionale), UE (Irlanda), UE (Francoforte), Asia Pacifico (Singapore), Asia Pacifico (Tokyo), Asia Pacifico (Sydney), Sud America (San Paolo) e AWS GovCloud (Stati Uniti).

D: Amazon SWF è disponibile su più zone di disponibilità?
Sì, Amazon SWF gestisce lo storico delle tue esecuzioni di flusso di lavoro e altri dettagli dei tuoi flussi di lavoro su 3 zone di disponibilità, in modo che le tue applicazioni possano continuare ad affidarsi ad Amazon SWF anche in caso di errori in una zona di disponibilità.

D: Quali sono i punti di accesso al servizio Amazon SWF?
Consulta la documentazione delle informazioni di riferimento generali di AWS per ulteriori informazioni sugli endpoint di accesso.

D: I prezzi includono le tasse?

Salvo diversamente specificato, i prezzi sono al netto di eventuali tasse e imposte doganali, inclusa l'IVA ed eventuali imposte di vendita. Per i clienti con indirizzo di fatturazione in Giappone, l'utilizzo dei servizi AWS è soggetto all'imposta sul consumo giapponese. Ulteriori informazioni.