Passa al contenuto principale

Cos'è un flusso di lavoro?

Cos'è un flusso di lavoro?

Un flusso di lavoro descrive come un lavoro viene svolto dall'inizio alla fine. ed è costituito dai passaggi e dagli stati di un processo. I flussi di lavoro possono apparire come una serie di passaggi in un elenco di controllo o come un diagramma che visualizza tali passaggi.

Di seguito è riportato un esempio di flusso di lavoro di supporto semplice:

  1. Carl, un cliente, invia una richiesta di supporto.
  2. Il caso aperto è assegnato a Sasha, un rappresentante dell'assistenza.
  3. Sasha riceve il caso assegnato e chiede informazioni a Carl. In attesa della risposta, lo stato del caso è in sospeso.
  4. Dopo che Carl ha fornito le informazioni richieste, Sasha risponde con una soluzione e quindi aggiorna lo stato del caso su risolto.
  5. Carl riceve la risposta e un link al sondaggio in cui può fornire feedback sulla sua richiesta di assistenza. È contento della rapida risposta di Sasha e dà valutazioni elevate nel sondaggio. Lo stato del caso viene aggiornato a chiuso.

In questo flusso di lavoro, i passaggi sono "inizio", "assegnazione", "risoluzione" e "chiusura". Gli stati sono "aperto", "assegnato", "in sospeso", "risolto" e "chiuso". I passaggi spostano il processo da uno stato all'altro lungo un percorso fino al completamento del flusso di lavoro.

Quali sono i vantaggi di utilizzare i flussi di lavoro?

I flussi di lavoro forniscono una serie di passaggi e attività ripetibili che è possibile avviare, pianificare e monitorare.

Puoi visualizzare i flussi di lavoro per l'osservazione, convalidare la correttezza del flusso di lavoro e monitorare le operazioni nel flusso di lavoro.

Con i flussi di lavoro, le aziende possono raggiungere livelli migliori di affidabilità per le applicazioni distribuite senza aggiungere ulteriore complessità al loro codice. Puoi automatizzare, ottimizzare e scalare i flussi di lavoro a livello granulare. 

Cosa apportano i flussi di lavoro all'architettura delle applicazioni?

I flussi di lavoro promuovono una separazione tra la logica graduale del flusso di controllo del lavoro in background e le unità reali di lavoro che contengono la logica aziendale propria di ogni impresa. Con questa divisione, puoi gestire, mantenere e scalare la macchina a stati della tua applicazione in maniera separata dalla logica aziendale principale.

Al cambiare dei tuoi requisiti aziendali, puoi cambiare la logica dell’applicazione senza doverti preoccupare della macchina a stati, della distribuzione delle attività e del controllo dei flussi sottostanti.

In che modo i servizi dei flussi di lavoro migliorano l'architettura delle applicazioni?

Affidabilità

La separazione tra il monitoraggio dello stato e l'elaborazione delle attività conferisce affidabilità a un'architettura basata su cloud. Utilizzando i servizi dei flussi di lavoro, è possibile inviare attività ai componenti dell'applicazione, monitorarne lo stato di avanzamento e conoscere lo stato più recente del sistema.

Semplicità

I flussi di lavoro sostituiscono la complessità delle soluzioni personalizzate e del codice di automazione dei processi.

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. In tutti questi casi, il monitoraggio e la visualizzazione delle attività non sono solo un lavoro difficoltoso, ma anche non differenziato.

Con i servizi dei flussi di lavoro, gli sviluppatori possono evitare di gestire l'impianto idraulico dell'infrastruttura dell'automazione dei processi. Di conseguenza, possono concentrare le loro energie sulla funzionalità unica della loro applicazione.

Scalabilità

I servizi per i flussi di lavoro sono progettati per adattarsi perfettamente all'utilizzo dell'applicazione. Non è necessaria amministrazione manuale del servizio per i flussi di lavoro ed è possibile aggiungere più flussi di lavoro all’applicazione o aumentarne la complessità.

Flessibilità

Gli sviluppatori possono utilizzare i servizi dei flussi di lavoro per creare componenti applicativi e logica di coordinamento in vari linguaggi di programmazione. Gli sviluppatori possono quindi concentrarsi sulla loro logica applicativa differenziata.

Quali sono alcuni casi d'uso comuni del flusso di lavoro?

I flussi di lavoro possono aiutare con qualsiasi problema computazionale o processo aziendale che può essere suddiviso in una serie di passaggi. I flussi di lavoro semplificano la gestione dei lavori con interdipendenze. I casi d’uso più comuni sono:

  • Orchestrazione delle applicazioni: coordinamento di microservizi liberamente accoppiati, ognuno in esecuzione nel proprio processo e distribuito in modo indipendente, attraverso la comunicazione degli eventi. Combina le funzioni serverless per creare un'applicazione Web con una fase di approvazione umana asincrona. Per altri esempi di casi d'uso, consulta l'orchestrazione dei microservizi nella AWS Step Functions Developer Guide.
  • Elaborazione dati: consolida i 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 Per altri esempi di casi d'uso, consulta Data processing nella AWS Step Functions Developer Guide.
  • 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. Per altri esempi di casi d'uso, consulta l'automazione IT e della sicurezza nella AWS Step Functions Developer Guide.
  • E-commerce: automatizza processi di business mission-critical, come l’evasione degli ordini e il monitoraggio dell’inventario.
  • Applicazioni Web: implementano solidi processi di registrazione e autenticazione degli utenti, integrando facoltativamente passaggi per il controllo e una maggiore sicurezza.
  • Machine learning: esegue processi di estrazione, trasformazione e caricamento (ETL) per creare, addestrare e distribuire un modello di machine learning. Ad esempio, la raccolta e l'elaborazione di dati immagine per rilevare oggetti all'interno di un flusso video, aggiungere riquadri di selezione o fornire informazioni visive e sui metadati per la catalogazione dei dati. Per altri esempi di casi d'uso, consulta Machine learning nella AWS Step Functions Developer Guide.
  • Automazione della sicurezza: analisi pianificata o risposta agli incidenti di sicurezza avviata da eventi di risorse gestiti, con flussi di lavoro personalizzati che richiamano passaggi di controllo e notifica a seconda delle regole aziendali.
  • Elaborazione multimediale: consente di estrarre dati da documenti o immagini PDF per l'elaborazione. Divisione e transcodifica video utilizzando una parallelizzazione massiva. Per altri esempi di casi d'uso, consulta Elaborazione multimediale nei casi d'uso di AWS Step Functions. 

Come si crea un flusso di lavoro?

Gli sviluppatori possono inizialmente creare soluzioni con codice personalizzato e codice di automazione dei processi. Queste soluzioni iniziano semplicemente, ma tendono a diventare complesse e soggette a errori con il tempo e lo sviluppo. Lo sforzo necessario per aggiornare la logica di business aumenta e il tasso di cambiamento rallenta nel tempo.

È possibile ridurre parte della complessità delle soluzioni sviluppate internamente adottando librerie specifiche per i flussi di lavoro. Tuttavia, la configurazione di questi strumenti può aggiungere nuove complessità al processo. Le fasi e gli stati del flusso di lavoro potrebbero essere ancora difficili da visualizzare.

La creazione e il monitoraggio avanzati dei flussi di lavoro richiedono strumenti visivi per organizzare stati e passaggi del flusso di lavoro. In questi strumenti, le regole della logica aziendale sono disponibili per la gestione e l'aggiornamento. L'utilizzo di strumenti grafici può migliorare la produttività degli sviluppatori e la visibilità del flusso di lavoro e ridurre il rischio di errori.

Per un tutorial pratico sull'utilizzo del designer di flussi di lavoro visivi Workflow Studio, consulta How do I create a serverless workflow nell'AWS Developer Center.

Quali sono i modelli per i flussi di lavoro più comuni?

Utilizzando i flussi di lavoro, puoi concentrarti sulla definizione delle interazioni dei componenti, piuttosto che sulla scrittura di software per far funzionare le interazioni.

I flussi di lavoro possono orchestrare sia microservizi che container. I modelli comuni per i flussi di lavoro includono concatenamento di microservizi, risposte asincrone o sincrone, interazioni umane, orchestrazione e coreografia dei container, ramificazione e gestione degli errori.

Quali servizi di flusso di lavoro fornisce AWS?

AWS Step Functions è un servizio di flusso di lavoro visivo a basso codice utilizzato per gestire i servizi AWS, automatizzare i processi aziendali e creare applicazioni serverless. Step Functions include Workflow Studio, un progettista visivo di workflow a basso codice con trascinamento della selezione Questo strumento genera automaticamente le funzioni e la configurazione in Amazon States Language, un linguaggio strutturato basato su JSON utilizzato per definire le macchine a stati. Puoi utilizzare Amazon States Language nella console Step Functions oppure esportarlo e modificarlo.

Flusso di lavoro gestito da Amazon per Apache Airflow (Amazon MWAA) offre la stessa esperienza open source di Apache Airflow ma come servizio completamente gestito. Usa Amazon MWAA per spostare le tue soluzioni on-premise esistenti nel cloud per ridurre i costi operativi e distribuirle su larga scala. Gli sviluppatori possono continuare a scrivere modelli di grafi aciclici diretti (DAG) in Python, dichiarando le dipendenze per le attività e integrandosi con altri servizi AWS.

AWS Step Functions dovrebbe essere preso in considerazione per tutte le nuove applicazioni, in quanto offre un approccio più produttivo e agile per il coordinamento dei componenti dell’applicazione grazie alla presenza di flussi di lavoro visivi. Per un tutorial pratico sull'uso di Step Functions Workflow Studio e Amazon States Language, consulta How do I create a serverless workflow nell'AWS Developer Center.