Amazon Simple Workflow Service
¿Por qué SWF?
Amazon Simple Workflow Service (Amazon SWF) ayuda a los desarrolladores a diseñar, ejecutar y escalar trabajos en segundo plano que tienen pasos paralelos o secuenciales. Puede pensar en Amazon SWF como un rastreador de estados y un coordinador de tareas totalmente gestionado en la nube.
En caso de que los pasos de la aplicación empleen más de 500 milisegundos para finalizar, necesite hacer un seguimiento del estado del procesamiento así como reintentar una operación si una tarea falla, Amazon SWF puede ayudarle.
Si busca un servicio de flujo de procesos visuales con poco código para organizar los servicios de AWS, automatizar los procesos empresariales o crear aplicaciones sin servidor, obtenga más información sobre AWS Step Functions.
Beneficios
Amazon SWF promueve una separación entre el flujo de control de la lógica paso a paso del trabajo de fondo y las unidades reales de trabajo que contienen una lógica de negocio exclusiva. Esto le permite administrar, mantener y escalar la "maquinaria del estado" de la aplicación de manera independiente a la lógica de negocio principal que la caracteriza. Dado que las necesidades empresariales cambian, puede modificar fácilmente la lógica de la aplicación sin tener que preocuparse por el estado subyacente del equipo, el envío de tareas y el control de flujo.
Amazon SWF se ejecuta dentro de centros de datos de alta disponibilidad de Amazon, por lo el motor de seguimiento del estado y de procesamiento de tareas está disponible siempre que las aplicaciones lo necesite. Amazon SWF también almacena de forma redundante las tareas, las envía de forma fiable a componentes de aplicaciones, realiza un seguimiento de su progreso y mantiene su estado más reciente.
Amazon SWF sustituye las complejas soluciones de flujo de proceso y software de automatización de procesos con código personalizado por un servicio web totalmente administrado para el flujo de proceso en la nube. Esto elimina la necesidad de que los desarrolladores administren la infraestructura subyacente de la automatización de procesos, por lo que pueden dedicar sus energías a la funcionalidad exclusiva de su aplicación.
Amazon SWF se escala sin problemas según el uso de su aplicación. No se necesita ninguna administración manual del servicio de flujo de proceso para agregar más flujos de proceso en la nube a su aplicación o aumentar la complejidad de sus flujos de proceso.
Amazon SWF le permite escribir los componentes de una aplicación y la lógica de coordinación en cualquier lenguaje de programación y ejecutarlos en la nube o localmente.
Detalles del producto Amazon SWF
La utilización de Amazon SWF para administrado sus flujos de trabajo dentro de una aplicación resulta fácil.
Funcionalidad de Amazon SWF
Amazon SWF actúa como núcleo de coordinación para los distintos componentes de su aplicación:
- Mantenimiento del estado de la aplicación
- Seguimiento de las ejecuciones de flujos de trabajo y registro de los progresos
- Conservación y despacho de tareas
- Control de qué tareas tendrá asignadas cada uno de sus hosts de aplicaciones
Para utilizar Amazon SWF, solo tiene que hacer lo siguiente:
- Utilizar la consola de administración de AWS o las API de Amazon SWF para especificar el nombre de los flujos de trabajo.
- Utilizar las API de Amazon SWF para "iniciar" un nuevo flujo de trabajo que resulta en la puesta en marcha de una secuencia particular de tareas que se denomina "ejecución de flujo de trabajo".
- Utilizar las API de Amazon SWF desde las máquinas de empleados (un "empleado" es un componente de la aplicación que administra tareas específicas) para establecer el orden de los trabajos, administrar flujos condicionales y ejecutar bucles para la ejecución de un flujo de trabajo.
- Utilice las API de Amazon SWF desde las máquinas de empleados para solicitar y ejecutar tareas de flujo de trabajo en la nube o en sus instalaciones.
- Monitorizar el estado y el progreso de las ejecuciones de flujos de trabajo y sus tareas asociadas en la consola de administración de AWS.
El ejemplo detallado de la consola de administración de AWS le muestra uno a uno los pasos para registrar y ejecutar una aplicación de muestra. Consulte la documentación para obtener información adicional.
Descripción detallada
Amazon SWF es un servicio de flujo de trabajo completamente administrado para crear aplicaciones escalables y flexibles. Amazon SWF proporciona llamadas sencillas a la API que se pueden ejecutar a partir de un código escrito en cualquier lenguaje y ejecutarse en sus instancias de EC2, o desde cualquiera de sus máquinas ubicadas en cualquier lugar del mundo desde el que tengan acceso a Internet.
Amazon SWF actúa como núcleo de coordinación con el que interactúan sus hosts de aplicaciones. Usted crea los flujos de trabajo que desee con sus tareas asociadas y la lógica condicional que quiera aplicar y los almacena en Amazon SWF. Cada vez que ejecuta un flujo de trabajo, se considera una ejecución de flujo de trabajo diferente. Usted programa los componentes de la aplicación para que soliciten diversas tareas que se llevarán a cabo en la ejecución de flujo de trabajo. Amazon SWF se encarga de coordinar que las tareas se lleven a cabo en el orden especificado y en sus hosts (tanto si se encuentran en la nube como en sus instalaciones). Las aplicaciones se comunican con Amazon SWF mediante diferentes API para registrar la correcta realización de las tareas o la existencia de algún fallo. A continuación, Amazon SWF continúa la secuencia de tareas asignando la siguiente tarea de flujo de trabajo a un host de aplicaciones o volviendo a ejecutar la tarea fallida, en función de su lógica de negocio.
Inicie sesión en la consola de administración de AWS para iniciar una ejecución de flujo de trabajo de Amazon SWF. Una opción es iniciar una ejecución de flujo de trabajo mediante las API de Amazon SWF. Amazon SWF emplea una interfaz de servicios web que resulta flexible y fácil de utilizar:
- StartWorkflowExecution: inicia una secuencia de tareas de flujo de trabajo y pone la primera tarea a disposición de uno de los hosts de la aplicación.
- DescribeWorkflowExecution: proporciona el estado de las ejecuciones y tareas del flujo de trabajo.
- PollForActivityTask: los hosts de su aplicación (en la nube o en las instalaciones) solicitan y ejecutan tareas de flujo de trabajo en un bucle continuo.
- RespondActivityTaskCompleted: el host de una aplicación indica a Amazon SWF que ha completado correctamente una tarea. Amazon SWF continuará con la ejecución del flujo de trabajo y pondrá a disposición de un host de aplicaciones la tarea siguiente.
- TerminateWorkflowExecution: deja de impulsar la ejecución de un flujo de trabajo en particular. Amazon SWF no asignará más tareas de esta ejecución determinada al host de aplicaciones.
Uso previsto y restricciones
El uso que realice de este servicio está sujeto al Contrato de cliente de Amazon Web Services.
Casos de uso
Codificación de video utilizando Amazon S3 y Amazon EC2. En este caso de uso, se cargan vídeos grandes en Amazon S3 en porciones. La carga de porciones tiene que monitorizarse. Cuando se carga una porción, se codifica descargándola en una instancia de Amazon EC2. La porción codificada se almacena en otra ubicación de Amazon S3. Cuando todas las porciones se han codificado de esta forma, se combinan en un archivo codificado completo que se almacena de nuevo en su totalidad en Amazon S3. Durante este proceso, se pueden producir fallos debido a que una o más porciones tengan errores de codificación. Estos errores se deben detectar y gestionar con la administración del flujo de proceso en la nube de Amazon SWF.
Migración de componentes desde un centro de datos a la nube. Las operaciones críticas se hospedan en un centro de datos privado, pero es necesario trasladarlas en su totalidad a la nube sin causar interrupciones. Las aplicaciones basadas en Amazon SWF pueden combinar trabajadores que envuelven los componentes que se ejecutan en el centro de datos con trabajadores que se ejecutan en la nube. Para realizar la transacción sin problemas de los empleados del centro de datos, primero se deben implementar en la nube empleados nuevos del mismo tipo. Los empleados del centro de datos siguen ejecutándose como siempre, junto con los nuevos empleados basados en la nube. Los empleados basados en la nube se prueban y validan enrutando una porción de la carga a través de ellos. Durante estas pruebas, la aplicación no se interrumpe porque los empleados del centro de trabajo siguen ejecutándose. Cuando las pruebas se han realizado correctamente, los empleados del centro de datos se detienen gradualmente y se escalan verticalmente los de la nube para que se puedan transferir íntegramente a una aplicación de administración del flujo de proceso en la nube. Este flujo de proceso en la nube se puede repetir para todos los demás trabajadores del centro de datos para que la aplicación se traslade en su totalidad a la nube. Si, por alguna razón empresarial, determinados pasos de procesamiento deben seguir ejecutándose en el centro de datos privado, esos empleados pueden continuar funcionando en el centro de datos privado sin dejar de participar en la aplicación.
Procesamiento de catálogos grandes de productos con Amazon Mechanical Turk. Mientras se validan los datos en catálogos de gran tamaño, los productos del catálogo se procesan por lotes. Es posible procesar diferentes lotes al mismo tiempo. Para cada lote, los datos del producto se extraen de los servidores del centro de datos y se transforman en archivos CSV (valores separados por comas) que necesita la interfaz de usuario del solicitante de Amazon Mechanical Turk. El archivo CSV se carga para rellenar y ejecutar las HIT (tareas de inteligencia humana). Cuando se completan las HIT, el archivo CSV resultante se invierte para obtener los datos de nuevo en el formato original. Los resultados se evalúan y se paga a los empleados de Amazon Mechanical Turk por los resultados aceptables. Los errores se eliminan y se reprocesan, mientras que los resultados de las HIT aceptables se utilizan para actualizar el catálogo. A medida que se procesan los lotes, el sistema necesita realizar un seguimiento de la calidad de los empleados de Amazon Mechanical Turk y ajustar los pagos en consecuencia. Las HIT que hayan fallado se vuelven a agrupar en lotes y se vuelven a enviar por medio de la canalización.
AWS Flow Framework
AWS Flow Framework es una colección de bibliotecas predesarrolladas que agilizan y facilitan la construcción de aplicaciones con Amazon Simple Workflow.
Funcionamiento
AWS Flow Framework tiene un modelo sencillo de programación que facilita la creación de aplicaciones que realizan funciones en varias máquinas. Con esta estructura, podrá crear tareas, coordinarlas y expresar qué interdependiencia tienen entre sí en un instante (como haría en un programa normal). Por ejemplo, puede ejecutar un método en una aplicación en un equipo “remoto” simplemente llamando a un método de la lógica de la aplicación que esté hospedado en otro equipo “local”. AWS Flow Framework se encarga del complejo trasiego necesario para ejecutar el método remoto y devuelve su resultado a la aplicación local utilizando información almacenada por el servicio Amazon Simple Workflow. La salida de cualquier método que se ejecute puede utilizarse para conectar partes separadas de la lógica que dependan entre sí. Este servicio permite utilizar sintaxis sencilla para expresar dependencias entre métodos con un simple planteamiento de tipo “bloquear y esperar la devolución de llamada”. Este servicio también permite administrar errores en máquinas remotas como si fueran errores locales y ofrece diferentes métodos sencillos para definir cómo desea reintentar los métodos importantes de su aplicación en caso de que fallen.
- Entrar en el AWS SDK para Java
- Vea el seminario web para la versión de Java
- Lea la Guía para desarrolladores
- Consulte la Referencia de la API
Nota
AWS Flow Framework para Ruby ya no se encuentra en desarrollo activo. Si bien el código existente seguirá funcionando indefinidamente, no habrá nuevas características ni versiones. El código fuente de Flow Framework para Ruby seguirá estando disponible en el archivo de AWS SWF GitHub. Si su aplicación Simple Workflow basada en Ruby está evolucionando y cambiando, hay opciones que puede considerar, incluida la migración a AWS Step Functions o el uso de la API nativa de Simple Workflow. Para obtener más información, consulte la Guía para desarrolladores de AWS Simple Workflow.
Con AWS Flow Framework, basta con escribir código sencillo para que los objetos y las clases preconstruidos de Framework se encarguen de gestionar los detalles de las API de Amazon Simple Workflow. AWS Flow Framework se encarga de crear y ejecutar los pasos de la aplicación, realiza el seguimiento de su evolución, le permite definir reglas de reintento en caso de que un paso resulte fallido, y mucho más. Mientras tanto, Amazon Simple Workflow Service mantiene el estado de ejecución de la aplicación, reparte tareas entre los trabajadores disponibles y mantiene un historial de auditoría de todas las tareas.
AWS Flow Framework es código abierto de Java y está desarrollado y administrado por AWS. Puede utilizar los siguientes enlaces para descargar bibliotecas, código fuente, documentación, ejemplos y mucho más.