¿Qué es un flujo de trabajo?

Un flujo de trabajo describe cómo las personas llevan a cabo su trabajo de principio a fin. El flujo de trabajo consiste en los pasos y los estados de un proceso. Los flujos de trabajo pueden aparecer como una serie de pasos en una lista de verificación o como un diagrama que visualiza esos pasos.

A continuación, se presenta un ejemplo de un flujo de trabajo sencillo de soporte técnico:

  1. Carl, un cliente, inicia una solicitud de soporte técnico.
  2. El caso abierto se asigna a Sasha, una agente de soporte técnico.
  3. Sasha recibe el caso asignado y solicita información a Carl. Mientras se espera la respuesta, el caso se encuentra en estado pendiente.
  4. Una vez que Carl proporciona la información solicitada, Sasha responde con una solución y posteriormente actualiza el estado del caso a resuelto.
  5. Carl recibe la respuesta, así como un enlace a una encuesta en la que puede dar su opinión sobre la solicitud de soporte técnico. Se siente muy satisfecho con la rápida respuesta por parte de Sasha y otorga calificaciones altas en la encuesta. El estado del caso se actualiza a cerrado.

En este flujo de trabajo, los pasos son “iniciar”, “asignar”, “resolver” y “cerrar”. Los estados son “abierto”, “asignado”, “pendiente”, “resuelto” y “cerrado”. Los pasos hacen que el proceso pase de un estado a otro a lo largo de una ruta hasta que se complete el flujo de trabajo.

¿Cuáles son los beneficios de utilizar flujos de trabajo?

Los flujos de trabajo proporcionan un conjunto de pasos y tareas repetibles que se pueden iniciar, programar y supervisar.

Puede visualizar los flujos de trabajo, validar su corrección y supervisar sus operaciones.

Al utilizar los flujos de trabajo, las empresas pueden mejorar los niveles de fiabilidad de las aplicaciones distribuidas sin que esto suponga una mayor complejidad para el código. Puede automatizar, optimizar y escalar los flujos de trabajo a un nivel detallado. 

¿Qué aportan los flujos de trabajo a la arquitectura de las aplicaciones?

Los flujos de trabajo promueven la separación lógica entre el flujo de control de la lógica escalonada del trabajo y las unidades de trabajo reales que contienen la lógica empresarial única. A través de esta división, es posible administrar, mantener y escalar la maquinaria de estado de la aplicación de forma separada de la lógica empresarial principal.

A medida que cambian los requisitos empresariales, es posible modificar fácilmente la lógica de la aplicación sin cambiar la maquinaria de estado subyacente, el envío de tareas ni el control de flujo.

¿Cómo los servicios de flujo de trabajo mejoran la arquitectura de las aplicaciones?

Fiabilidad

La capacidad de separar el seguimiento de los estados y el procesamiento de las tareas aporta fiabilidad a las arquitecturas basadas en la nube. Al utilizar los servicios de flujo de trabajo, puede enviar tareas a los componentes de la aplicación, realizar un seguimiento de los avances y conocer el estado más reciente del sistema.

Simplicidad

Los flujos de trabajo sustituyen la complejidad de las soluciones internas codificadas de forma personalizada y el código de automatización de procesos.

Las tareas que impulsan los pasos de procesamiento se pueden demorar y es posible que fallen, que se agoten los tiempos de espera o que sea necesario reiniciarlas. Suelen completarse con diferentes desempeños y latencias. En todos estos casos, el seguimiento y la visualización de las tareas no solo suponen un reto, sino que son labores que no marcan la diferencia.

Gracias a los servicios de flujo de trabajo, los desarrolladores no tienen que encargarse de administrar el mantenimiento de la infraestructura de la automatización de procesos. De este modo, se pueden concentrar en las funcionalidades únicas que ofrece la aplicación.

Escalabilidad

Los servicios de flujo de trabajo se diseñaron para escalar sin problemas en función del uso de la aplicación. A medida que se agregan más flujos de trabajo a la aplicación, o se aumenta la complejidad de estos, es posible automatizar la administración del servicio de flujo de trabajo.

Flexibilidad

Los desarrolladores pueden utilizar los servicios de flujo de trabajo para crear los componentes de la aplicación y la lógica de coordinación en varios lenguajes de programación. Así, los desarrolladores se pueden centrar en la lógica de la aplicación diferenciada.

¿Cuáles son algunos de los casos comunes de uso de los flujos de trabajo?

Los flujos de trabajo pueden ayudar con cualquier problema de computación o proceso empresarial que se pueda dividir en una serie de pasos. Los flujos de trabajo simplifican la administración de trabajos con interdependencias. Entre los casos de uso comunes se incluyen los siguientes:

  • Orquestación de aplicaciones: coordine los microservicios débilmente acoplados, cada uno de los cuales se ejecuta en su propio proceso y se despliega de forma independiente, mediante la comunicación de eventos. Combine funciones sin servidor para elaborar una aplicación web con un paso de aprobación humano asincrónico. Para obtener más ejemplos de casos de uso, consulte Orquestación de microservicios en la Guía para desarrolladores de AWS Step Functions.
  • Procesamiento de datos: consolide los datos procedentes de varios conjuntos de datos en informes unificados, perfeccione y reduzca grandes conjuntos de datos en formatos útiles o coordine flujos de trabajo de varios pasos de análisis y machine learning. Para obtener más ejemplos de casos de uso, consulte Procesamiento de datos en la Guía para desarrolladores de AWS Step Functions.
  • DevOps y automatización de TI: cree herramientas para la integración y el despliegue continuos, o cree aplicaciones basadas en eventos que respondan automáticamente a los cambios en la infraestructura. Para obtener más ejemplos de casos de uso, consulte Automatización de TI y seguridad en la Guía para desarrolladores de AWS Step Functions.
  • Comercio electrónico: automatice procesos empresariales críticos, como el procesamiento de pedidos y el seguimiento de inventario.
  • Aplicaciones web: implemente procesos robustos de registro y autenticación de usuarios, con la opción de integrar pasos para la auditoría y la mejora de la seguridad.
  • Machine learning: ejecute trabajos de extracción, transformación y carga (ETL) para crear, entrenar y desplegar un modelo de machine learning. Por ejemplo, recopilar y procesar datos de imágenes para detectar objetos dentro de una secuencia de video, para agregar cuadros delimitadores o para proporcionar información visual y de metadatos para catalogar datos. Para obtener más ejemplos de casos de uso, consulte Machine learning en la Guía para desarrolladores de AWS Step Functions.
  • Automatización de la seguridad: análisis programados o respuesta a incidentes de seguridad iniciados por eventos de recursos administrados, con flujos de trabajo personalizados que invocan pasos de auditoría y notificación en función de las reglas empresariales.
  • Procesamiento de contenido multimedia: extraiga datos a partir de documentos PDF o imágenes para procesarlos. Divida y transcodifique los videos mediante una paralelización masiva. Para obtener más ejemplos de casos de uso, consulte Procesamiento de contenido multimedia en Casos de uso de AWS Step Functions. 

¿Cómo se crea un flujo de trabajo?

Los desarrolladores pueden crear inicialmente soluciones con código personalizado y código de automatización de procesos. Estas soluciones comienzan de forma sencilla, pero con el tiempo y el desarrollo tienden a volverse complejas y propensas a errores. El esfuerzo que se requiere para actualizar la lógica empresarial es cada vez mayor, a la vez que el ritmo de cambio se ralentiza con el tiempo.

Puede mitigar parte de la complejidad asociada a las soluciones internas al adoptar bibliotecas específicas para el flujo de trabajo. Sin embargo, la configuración de estas herramientas puede sumar nuevas complejidades al proceso. Es posible que los pasos y los estados del flujo de trabajo todavía resulten difíciles de visualizar.

Para crear y supervisar de forma avanzada los flujos de trabajo, se necesitan herramientas visuales que permitan organizar los estados y pasos del flujo de trabajo. Las reglas de la lógica empresarial se pueden administrar y actualizar en estas herramientas. La utilización de herramientas gráficas sirve para mejorar la productividad de los desarrolladores y la visibilidad del flujo de trabajo, además de reducir la posibilidad de que se produzcan errores.

Puede encontrar un tutorial práctico sobre el uso del diseñador visual de flujos de trabajo de Workflow Studio en la sección Cómo se crea un flujo de trabajo sin servidor en el Centro para desarrolladores de AWS.

¿Qué patrones de flujo de trabajo son comunes?

Al utilizar los flujos de trabajo, es posible centrarse en la definición de las interacciones entre los componentes, en lugar de escribir el software para que las interacciones funcionen.

Los flujos de trabajo pueden orquestar tanto los microservicios como los contenedores. Algunos patrones comunes para los flujos de trabajo son el encadenamiento de microservicios, las respuestas asincrónicas o sincrónicas, las interacciones humanas, la orquestación y coreografía de contenedores, la ramificación y la gestión de errores.

¿Qué servicios de flujo de trabajo ofrece AWS?

AWS Step Functions es un servicio de flujo de trabajo visual de poco código que se utiliza para orquestar servicios de AWS, automatizar procesos empresariales y crear aplicaciones sin servidor. Step Functions incluye Workflow Studio, un diseñador de flujos de trabajo visuales de arrastrar y soltar, de bajo código. Esta herramienta genera automáticamente las funciones y la configuración en el lenguaje de estados de Amazon, un lenguaje estructurado basado en JSON que se utiliza para definir máquinas de estado. Puede utilizar el lenguaje de estados de Amazon en la consola Step Functions, o exportarlo y editarlo.

Amazon Managed Workflows para Apache Airflow (Amazon MWAA) ofrece la misma experiencia de Apache Airflow de código abierto, pero como un servicio completamente administrado. Utilice Amazon MWAA para trasladar las soluciones existentes en las instalaciones a la nube y así reducir los costos operativos y desplegar a escala. Los desarrolladores aún pueden escribir modelos de grafos acíclicos dirigidos (DAG) en Python, con la declaración de dependencias para las tareas, mientras se integran con otros servicios de AWS.

Recomendamos utilizar AWS Step Functions para todas las aplicaciones nuevas, ya que proporciona un enfoque más productivo y ágil para coordinar los componentes de la aplicación mediante flujos de trabajo visuales. Puede encontrar un tutorial práctico sobre el uso de Step Functions Workflow Studio y el lenguaje de estados de Amazon en la sección Cómo se crea un flujo de trabajo sin servidor dentro del Centro para desarrolladores de AWS. 

Siguientes pasos con flujos de trabajo en AWS

Regístrese en el nivel gratuito de AWS Step Functions

Cree flujos de trabajo con más de 200 servicios de AWS y 9000 acciones de API

Regístrese 
Comience a crear en la consola

Comience a crear con API Gateway en la consola de administración de AWS.

Inicie sesión