P: ¿Qué es Amazon SWF?
Amazon Simple Workflow Service (SWF) es un servicio web que facilita la coordinación del trabajo entre componentes de aplicaciones distribuidas. Amazon SWF permite que aplicaciones para diversos casos de uso, incluidos el procesamiento de archivos multimedia, back-ends de aplicaciones web, flujos de trabajo de procesos empresariales y canalizaciones de análisis, se diseñen como una coordinación de tareas. Las tareas representan invocaciones de diversos pasos de procesamiento de una aplicación que se pueden llevar a cabo mediante código ejecutable, llamadas a un servicio web, acciones humanas y scripts.
La coordinación de tareas implica la administración de las dependencias de ejecución, la programación y la concurrencia de acuerdo con el flujo lógico de la aplicación. Con Amazon SWF, los desarrolladores tienen control total sobre la implementación de los pasos de procesamiento y la coordinación de las tareas que los dirigen sin tener que preocuparse de las complejidades subyacentes, como el seguimiento del progreso y el mantenimiento del estado. Amazon SWF también cuenta con AWS Flow Framework, que ayuda a los desarrolladores a usar la programación asíncrona en el desarrollo de aplicaciones. Al utilizar Amazon SWF, los desarrolladores pueden programar más fácilmente y mejorar el uso de recursos, las latencias y el desempeño de las aplicaciones.
Comience con AWS de forma gratuita
Cree una cuenta gratuitaO inicie sesión en la Consola
La capa gratuita de AWS incluye 750 horas de nodos de caché micro con Amazon ElastiCache.
P: ¿Qué beneficios aporta diseñar aplicaciones como una coordinación de tareas? ¿De qué forma me ayuda Amazon SWF en esto?
En Amazon SWF, las tareas representan invocaciones de pasos lógicos en las aplicaciones. Las tareas las procesan los empleados, que son programas que interactúan con Amazon SWF para obtener tareas, procesarlas y devolver los resultados. Un empleado implementa un paso de procesamiento de una aplicación. Puede crear empleados en diferentes lenguajes de programación e incluso reutilizar los componentes existentes para crear un empleado rápidamente. Por ejemplo, puede utilizar servicios de la nube, aplicaciones empresariales, sistemas heredados e incluso scripts sencillos para implementar empleados. Al controlar independientemente el número de empleados para procesar cada tipo de tarea, podemos controlar eficazmente el desempeño de la aplicación.
Para coordinar la ejecución de la aplicación en diversos empleados, solo hay que escribir un programa llamado decisor en el lenguaje de programación que prefiera. La separación de los pasos de procesamiento y su coordinación permiten administrar la aplicación de forma controlada y ofrecen flexibilidad para implementarlos, ejecutarlos, escalarlos y actualizarlos de forma independiente. Puede optar por implementar los empleados y decisores en la nube (p. ej., Amazon EC2 o Lambda) o en máquinas situadas tras los firewalls de la empresa. Debido a la disociación de los empleados y los decisores, la lógica de negocio puede ser dinámica y la aplicación se puede actualizar rápidamente para satisfacer requisitos nuevos. Podemos, por ejemplo, eliminar, omitir o reintentar tareas y crear nuevos flujos de aplicaciones con tan solo cambiar el decisor.
Al implementar empleados y decisores, nos centramos en la lógica diferenciada de la aplicación que se ocupa de llevar a cabo y coordinar los pasos de procesamiento reales. Amazon SWF gestiona los detalles subyacentes almacenando las tareas hasta que se puedan asignar, monitorizando las tareas asignadas y proporcionando información coherente cuando se completan. Amazon SWF también ofrece una visibilidad continua en cada tarea mediante diversas API y una consola.
P: ¿Qué puedo hacer con Amazon SWF?
Amazon SWF se puede utilizar para solventar muchas dificultades que surgen a la hora de compilar aplicaciones con componentes distribuidos. Por ejemplo, podemos usar Amazon SWF y el servicio AWS Flow Framework que lo acompaña para:
- Escribir aplicaciones como programas asíncronos mediante constructos de programación sencillos que sintetizan detalles como el inicio de tareas que se ejecutan de forma remota y el seguimiento del estado de tiempo de ejecución del programa.
- Mantener el estado de ejecución de la aplicación (p. ej., qué pasos se han completado, cuáles se están ejecutando, etc.). No es necesario usar bases de datos, sistemas personalizados ni soluciones ad hoc para mantener el estado de ejecución.
- Comunicar y administrar el flujo de trabajo entre los componentes de la aplicación. Con Amazon SWF, no es necesario diseñar un protocolo de mensajería ni preocuparse por la pérdida o duplicación de tareas.
- Centralizar la coordinación de los pasos de la aplicación. La lógica de coordinación no tiene que estar repartida entre diferentes componentes, sino que se puede encapsular en un único programa.
- Integrar en las aplicaciones diversos programas y componentes, entre los que se incluyen sistemas heredados y servicios en la nube de terceros. Al permitir que tenga flexibilidad para decidir dónde y con qué combinación se implementan los componentes de la aplicación, Amazon SWF le ayuda a migrar gradualmente los componentes de la aplicación desde centros de datos privados a infraestructuras de nubes públicas sin alterar la disponibilidad ni el desempeño de la aplicación.
- Automatización de flujos de trabajo que incluyan tareas humanas de ejecución prolongada, como aprobaciones, revisiones, investigaciones, etc. Amazon SWF sigue de forma fiable el estado de pasos de procesamiento que pueden ejecutarse durante días o incluso meses.
- Crear una capa de aplicación sobre Amazon SWF para admitir lenguajes específicos de dominio para los usuarios finales. Puesto que Amazon SWF ofrece total flexibilidad a la hora elegir el lenguaje de programación, puede crear los intérpretes para lenguajes especializados que considere oportunos (como XPDL) e interfaces de usuario personalizadas que incluyan herramientas de modelado.
- Obtener registros de auditoría y visibilidad de todas las instancias en ejecución de las aplicaciones. También puede incorporar capacidades de visibilidad proporcionadas por Amazon SWF en sus propias interfaces de usuario mediante las API que ofrece Amazon SWF.
Los clientes han utilizado Amazon SWF para compilar aplicaciones de codificación de vídeo, comercio social, aprovisionamiento de infraestructuras, canalizaciones de MapReduce, administración de procesos empresariales y otros tantos casos de uso. Para obtener más detalles sobre casos de uso, consulte ¿Qué casos de uso pueden resolverse con SWF? Para consultar la forma en que los clientes utilizan Amazon SWF actualmente, lea nuestros casos prácticos.
P: ¿Cuáles son los beneficios de Amazon SWF frente a los de las soluciones propias y los productos de flujo de trabajo existentes?
Al crear soluciones para coordinar tareas en un entorno distribuido, los desarrolladores deben tener en cuenta diversas variables. Las tareas que dirigen los pasos de procesamiento pueden llevar mucho tiempo y fallar, agotar el tiempo de espera o requerir reinicios. Suelen completarse con diferentes desempeños y latencias. El seguimiento y la visualización de tareas en todos estos casos no solo son complejos, sino que además son un trabajo indiferenciado. A medida que se incrementan las aplicaciones y las tareas, los desarrolladores se enfrentan a complicados problemas en los sistemas distribuidos. Por ejemplo, deben garantizar que una tarea solo se asigne una sola vez y que el resultado se siga de forma fiable cuando se produzcan errores e interrupciones inesperados. Mediante el uso de Amazon SWF, los desarrolladores se pueden centrar en su lógica de la aplicación diferenciada, es decir, en cómo procesar tareas y en cómo coordinarlas.
Los productos de flujo de trabajo existentes suelen obligar a los desarrolladores a aprender lenguajes especializados, hospedar bases de datos caras y renunciar al control sobre la ejecución de las tareas. Los lenguajes especializados dificultan la expresión de aplicaciones complejas y no son lo suficientemente flexibles para realizar cambios con rapidez. Por otra parte, Amazon SWF es un servicio basado en la nube que permite el uso de lenguajes de programación comunes y con el que los desarrolladores pueden controlar dónde se procesan las tareas. Al adoptar un modelo de bajo acoplamiento para aplicaciones distribuidas, Amazon SWF permite realizar cambios de forma ágil.
P: ¿Qué son los empleados y los decisores?
En Amazon SWF, las aplicaciones se implementan compilando empleados y un decisor que se comunican directamente con el servicio. Los empleados son programas que interactúan con Amazon SWF para obtener tareas, procesar tareas recibidas y devolver los resultados. El elemento decisivo es un programa que controla la coordinación de tareas: su orden, concurrencia y programación de acuerdo con la lógica de la aplicación. Los trabajadores y el decisor pueden ejecutarse en una infraestructura de nube, como Amazon EC2, o en equipos situados tras firewalls. Amazon SWF hace de intermediario entre las interacciones de los empleados y el decisor. Permite que el decisor obtenga vistas coherentes del progreso de las tareas e inicie nuevas tareas continuamente. Al mismo tiempo, Amazon SWF almacena tareas, las asigna a los empleados cuando están listas y monitoriza el progreso. Se asegura de que las tareas se asignen una sola vez y de que nunca se dupliquen. Como Amazon SWF mantiene de forma duradera el estado de la aplicación, los empleados y los decisores no tienen que llevar un seguimiento del estado de la ejecución. Se pueden ejecutar de forma independiente y se escalan con rapidez. Consulte la sección Funcionalidad de la página de detalles de Amazon SWF para obtener más información acerca de los pasos para compilar aplicaciones con Amazon SWF.
En Amazon SWF puede haber varias ejecuciones simultáneas de un flujo de trabajo. Cada puesta en marcha se denomina ejecución de flujo de trabajo o sencillamente ejecución. Las ejecuciones se identifican con nombres únicos. Para ver las ejecuciones como un todo y desglosar una ejecución concreta para ver los detalles del nivel de tarea, se utiliza la consola de administración de Amazon SWF (o las API de visibilidad).
P: ¿Qué facilidades de programación ofrece Amazon SWF para escribir aplicaciones?
Como otros servicios de AWS, Amazon SWF proporciona un SDK esencial para las API del servicio web. Además, Amazon SWF suministra un SDK llamado AWS Flow Framework que permite desarrollar aplicaciones basadas en Amazon SWF de forma rápida y sencilla. AWS Flow Framework sintetiza los detalles de la coordinación del nivel de las tareas con constructos de programación conocidos. Al ejecutar el programa, el marco efectúa llamadas a Amazon SWF, sigue el estado de ejecución del programa mediante el historial de ejecución que conserva Amazon SWF e invoca las porciones relevantes del código cuando corresponde. Gracias a que ofrece un marco de programación intuitivo para obtener acceso a Amazon SWF, AWS Flow Framework permite a los desarrolladores escribir aplicaciones enteras como interacciones asíncronas estructuradas en un flujo de trabajo. Si desea obtener más información, consulte ¿Qué es AWS Flow Framework?
P: ¿Cuándo debería utilizar Amazon SWF en lugar de AWS Step Functions?
AWS Step Functions es un servicio totalmente administrado que facilita la coordinación de componentes de aplicaciones y microservicios distribuidos usando flujos de trabajo visuales. En lugar de escribir un programa Decider, define máquinas de estado en JSON. Los clientes de AWS deberían considerar Step Functions para aplicaciones nuevas. Si Step Functions no se adapta a sus necesidades, entonces debería considerar Amazon Simple Workflow (SWF). Amazon SWF le aporta control absoluto sobre la lógica de organización, pero incrementa la complejidad de desarrollar aplicaciones. Puede escribir programas Decider en el lenguaje de programación que desee, o puede utilizar el marco Flow para usar construcciones de programación que estructuren interacciones asíncronas. AWS seguirá proporcionando el servicio Amazon SWF y el marco Flow y ofreciendo soporte a todos los clientes de Amazon SWF.
P: ¿En qué se diferencia Amazon SWF de Amazon SQS?
Tanto Amazon SQS como Amazon SWF son servicios que facilitan la integración de aplicaciones o microservicios:
- Amazon Simple Queue Service (Amazon SQS) ofrece colas alojadas, fiables y altamente escalables, que almacenan los mensajes mientras viajan entre aplicaciones o microservicios. Amazon SQS le permite mover datos entre componentes de aplicaciones distribuidas y le ayuda a desacoplar esos componentes.
- Amazon Simple Workflow Service (Amazon SWF) es un servicio web que facilita la coordinación del trabajo entre componentes de aplicaciones distribuidas.
Las principales diferencias entre Amazon SQS y Amazon SWF son las siguientes:
- Las acciones de las API de Amazon SWF son orientadas a tareas. Las acciones de API de Amazon SQS son orientadas a mensajes.
- Amazon SWF lleva un seguimiento de todas las tareas y los eventos de una aplicación. En Amazon SQS debe implementar su propio sistema de seguimiento del nivel de la aplicación, especialmente si la aplicación utiliza varias colas.
- Las API de visibilidad y la consola de Amazon SWF proporcionan una vista centrada en la aplicación que permite buscar ejecuciones, ver los detalles de una ejecución, administrar ejecuciones. Con Amazon SQS, es necesario implementar esa funcionalidad adicional.
- Amazon SWF ofrece varias características para facilitar el desarrollo de aplicaciones, como las ejecuciones únicas, la transmisión de datos entre tareas, la señalización, la flexibilidad al distribuir de tareas. Con Amazon SQS, tenemos que implementar alguna funcionalidad a nivel de aplicación.
- Además del SDK esencial que llama a las API del servicio, Amazon SWF proporciona AWS Flow Framework, con el que puede escribir aplicaciones distribuidas usando construcciones de programación que estructuran interacciones asíncronas.
Mientras que puede utilizar Amazon SQS para crear flujos de trabajo básicos y coordinar su aplicación distribuida, Amazon SWF le proporciona esta facilidad de forma estándar, además de otra capacidades a nivel de aplicación.
Le recomendamos que pruebe Amazon SQS y Amazon SWF para determinar cuál se adapta mejor a sus necesidades.
P: ¿Qué tipos de casos de uso que se pueden resolver con Amazon SWF?
Amazon SWF se ha aplicado en casos de uso de procesamiento de archivos multimedia, automatización de procesos empresariales, análisis de datos, migración a la nube y procesamiento por lotes. Algunos ejemplos son:
Caso de uso 1: codificación de vídeo mediante 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 solventar.
Con Amazon SWF: la aplicación entera se compila en forma de flujo de trabajo, en el que cada archivo de vídeo se gestiona como una ejecución de flujo de trabajo. Las tareas que son procesadas por empleados diferentes son: cargar una porción en Amazon S3, descargar una porción desde Amazon S3 en una instancia de Amazon EC2 y codificarla, almacenar una porción de nuevo en Amazon S3, combinar varias porciones en un solo archivo y cargar un archivo completo en Amazon S3. El decisor inicia tareas concurrentes para explotar el paralelismo en el caso de uso. Inicia una tarea para codificar una porción cargada sin esperar a que se carguen otras porciones. Si una tarea para una porción da error, el decisor la vuelve a ejecutar solo para esa porción. El estado de la aplicación que mantiene Amazon SWF ayuda al decisor a controlar el flujo de trabajo. Por ejemplo, el decisor lo utiliza para detectar cuándo se han codificado todas las porciones y para extraer sus ubicaciones de Amazon S3 y poderlas combinar. El progreso de la ejecución se somete a un seguimiento continuo en la consola de administración de Amazon SWF. Si se producen errores, las tareas específicas que fallan se identifican y se utilizan para detectar las porciones con errores.
Caso de uso 2: procesamiento de grandes catálogos 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.
Con Amazon SWF: el caso de uso anterior se implementa como un conjunto de flujos de trabajo. Un flujo de trabajo BatchProcess gestiona el procesamiento de un único lote. Tiene empleados que extraen los datos, los transforman y los envían a través de Amazon Mechanical Turk. El flujo de trabajo BatchProcess muestra las HIT aceptables y las que tienen errores. Esto se utiliza como entrada para otros tres flujos de trabajo: MTurkManager, UpdateCatalogWorkflow y RerunProducts. El flujo de trabajo MTurkManager efectúa pagos por las HIT aceptables, responde a los empleados humanos que detectaron HIT con error y actualiza su propia base de datos para llevar un seguimiento de la calidad de los resultados. El flujo de trabajo UpdateCatalogWorkflow actualiza el catálogo principal en función de las HIT aceptables. El flujo de trabajo RerunProducts espera hasta que haya un lote de productos lo suficientemente grande con HIT con error. Luego crea un lote y lo vuelve a enviar al flujo de trabajo BatchProcess. El procesamiento del catálogo de principio a fin lo lleva a cabo el flujo de trabajo CleanupCatalog, que inicia las ejecuciones secundarias de los flujos de trabajo anteriores. Contar con un sistema de flujos de trabajo bien definidos permite que este caso de uso se diseñe, se audite y se ejecute sistemáticamente para catálogos con varios millones de productos.
Caso de uso 3: 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.
Con Amazon SWF: las aplicaciones basadas en Amazon SWF pueden combinar los empleados que empaquetan los componentes en ejecución en el centro de datos con los empleados 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. Tras superar con éxito las pruebas, los empleados del centro de datos se van parando gradualmente y los de la nube se amplían de modo que, al final, los empleados se ejecuten totalmente en la nube. Este proceso se puede repetir para todos los demás empleados que haya en el centro de datos para que la aplicación se traslade por completo 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.
Consulte los casos prácticos para ver más aplicaciones y sistemas interesantes que los desarrolladores y las empresas están compilando con Amazon SWF.
P: ¿Amazon usa Amazon SWF para sus propias aplicaciones?
Sí. Los desarrolladores de Amazon utilizan Amazon SWF para una amplia variedad de proyectos y llevan a cabo millones de ejecuciones de flujos de datos todos los días. Esos casos de uso incluyen procesos clave para el negocio que dependen de Amazon.com y los sitios web de AWS, implementaciones para varios servicios web de Amazon y sus API, los análisis de MapReduce para la toma de decisiones operativa y la administración de contenidos orientados al usuario, como páginas web, vídeos y libros Kindle.
P: ¿Cómo puedo comenzar a utilizar Amazon SWF?
Para inscribirse en Amazon SWF, vaya a la página de detalles de Amazon SWF y haga clic en el botón “Inscríbase ahora”. Si no tiene una cuenta de Amazon Web Services, se le pedirá que la cree. Cuando se haya inscrito, podrá ejecutar una guía de muestra en la consola de administración de AWS que muestra uno a uno los pasos para ejecutar una aplicación sencilla de conversión de imágenes con Amazon SWF. También puede descargar muestras de AWS Flow Framework para conocer las diversas características del servicio. Para comenzar a utilizar Amazon SWF en las aplicaciones, consulte la documentación de Amazon SWF.
P: ¿Puedo usar algún flujo de trabajo de muestra para probar Amazon SWF?
Sí. Cuando comience a utilizar Amazon SWF, puede probar la guía de muestra que encontrará en la consola de administración de AWS. Esta guía muestra cómo registrar un dominio y tipos, cómo implementar empleados y decisores y cómo iniciar ejecuciones de flujo de trabajo. Puede descargar el código de los empleados y los decisores que se utilizan en esta guía de muestra, ejecutarlos en su infraestructura y modificarlos para compilar sus propias aplicaciones. También puede descargar las muestras de AWS Flow Framework, que ilustran el uso de Amazon SWF en varios casos de uso, como el procesamiento de datos distribuidos, los trabajos cronológicos y la implementación de pilas de aplicaciones. Si se fija en el código fuente incluido, puede obtener más información sobre las características de Amazon SWF y aprender a usar AWS Flow Framework para compilar aplicaciones distribuidas.
P: ¿Cuáles son las diferentes formas de obtener acceso a Amazon SWF?
Puede obtener acceso a SWF por cualquiera de las siguientes vías:
- El AWS SDK para Java, Ruby, .NET y PHP
- AWS Flow Framework para Java (incluido en el AWS SDK para Java)
- Las API del servicio web de Amazon SWF
- Consola de administración de AWS
P: ¿Qué es el registro?
El registro es un paso que se realiza una vez por cada tipo de flujo de trabajo y de actividad. Puede registrarse mediante programación o a través de la consola de administración de Amazon SWF. Durante el registro, hay que proporcionar un ID de tipo único por cada tipo de actividad y de flujo de trabajo. También hay que facilitar la información predeterminada que se utilizará mientras se ejecute un flujo de trabajo, como los valores de tiempo de espera y los parámetros de la distribución de tareas.
P: ¿Qué son los dominios?
En SWF se han de definir contenedores lógicos llamados dominios para los recursos de la aplicación. Los dominios solo se pueden crear al nivel de la cuenta de AWS y no se pueden anidar. Un dominio puede tener cualquier nombre definido por el usuario. Cada recurso de la aplicación, como un tipo de flujo de trabajo, un tipo de actividad o una ejecución, pertenece a un solo dominio. Durante el registro, hay que especificar el dominio en el que se debe registrar un tipo de flujo de trabajo o de actividad. Al iniciar una ejecución, se crea automáticamente en el mismo dominio que su tipo de flujo de trabajo. La exclusividad de los identificadores de recursos (como el ID de tipo o el ID de ejecución) está limitada a un dominio, es decir, puede reutilizar identificadores en diferentes dominios.
P: ¿Cómo puedo administrar los recursos de mi aplicación en diferentes entornos y agrupaciones?
Puede utilizar dominios para organizar los recursos de la aplicación de modo que sean más fáciles de administrar y no afecten unos a otros por accidente. Por ejemplo, puede crear diferentes dominios para los entornos de desarrollo, prueba y producción y crear los recursos apropiados en cada uno. Aunque registre el mismo tipo de flujo de trabajo en cada uno de estos dominios, los flujos se tratarán como un recurso independiente en cada dominio. Puede cambiar la configuración en el dominio de desarrollo o administrar las ejecuciones en el dominio de prueba sin que esto afecte a los recursos correspondientes que haya en el dominio de producción.
P: ¿Cómo coordina un decisor un flujo de trabajo en Amazon SWF?
El decisor se puede considerar un tipo especial de empleado. Al igual que los empleados, se puede escribir en cualquier lenguaje y pide tareas a Amazon SWF. Sin embargo, el decisor gestiona tareas especiales llamadas tareas de decisión. Amazon SWF emite tareas de decisión cuando una ejecución de flujo de trabajo tiene transiciones, como una tarea de actividad que se completa o agota el tiempo de espera. Las tareas de decisión contienen información sobre las entradas, las salidas y el estado actual de las tareas iniciadas anteriormente. El decisor utiliza estos datos para decidir los siguientes pasos (incluyendo las nuevas tareas de actividad) y luego los devuelve a Amazon SWF. Amazon SWF, a su vez, dicta estas decisiones e inicia las nuevas tareas de actividad cuando corresponde y las monitoriza. Al responder a las tareas de decisión de forma continuada, el decisor controla el orden, los tiempos y la simultaneidad de las tareas de actividad y, por tanto, la ejecución de los pasos de procesamiento que contiene la aplicación. SWF emite la primera tarea de decisión cuando se inicia una ejecución. A partir de ahí, Amazon SWF pone en práctica las decisiones que haya tomado el decisor para dirigir la ejecución. La ejecución continúa hasta que el decisor toma la decisión de finalizarla.
Para ayudar al decisor a tomar decisiones, SWF mantiene un registro constante donde figuran los detalles de todas las tareas de una ejecución. Este registro se denomina historial y es único para cada ejecución. Cada vez que se inicia una ejecución nueva, se inicia un historial nuevo. En ese momento, el historial contiene información inicial, como los datos de entrada de la ejecución. Más tarde, a medida que los empleados procesan las tareas de actividad, Amazon SWF actualiza el historial para incluir los datos de entrada y salida, así como el estado más reciente. Cuando un decisor obtiene una tarea de decisión, puede inspeccionar el historial de la ejecución. Amazon SWF se asegura de que el historial refleje con precisión el estado de la ejecución en el momento en el que se emite la tarea de decisión. De esta forma, el decisor puede usar el historial para averiguar lo que ha sucedido en la ejecución y decidir qué pasos se deben seguir a continuación.
P: ¿Cómo me aseguro de que un empleado o un decisor solo obtengan tareas que comprendan?
Para determinar cómo se asignan las tareas, se utilizan listas de tareas. Las listas de tareas son recursos de Amazon SWF a las que se añaden tareas iniciadas y a las que se solicitan tareas. Las listas de tareas se identifican con nombres definidos por el usuario. Una lista de tareas puede tener tareas de diferentes ID de tipo, pero todas deben ser tareas de actividad o de decisión. Durante el registro, especificamos una lista de tareas predeterminada por cada tipo de actividad y flujo de trabajo. Amazon SWF también permite crear listas de tareas en tiempo de ejecución. Para crear una lista de tareas, solo tiene que asignarle un nombre y comenzar a usarla. Las listas de tareas se utilizan de la siguiente manera:
- Al iniciar una tarea de actividad, un decisor puede añadirla a una lista de tareas específicas o solicitarle a Amazon SWF que la añada a la lista de tareas predeterminada para su tipo de actividad.
- Al iniciar una ejecución, puede solicitar que Amazon SWF añada todas sus tareas de decisión a una lista de tareas específica o a la lista de tareas predeterminada para el tipo de flujo de trabajo.
- Al solicitar tareas, los decisores y los empleados especifican de qué lista de tareas desean recibir tareas. Si una tarea está disponible en la lista, SWF la envía en la respuesta y también incluye el ID de tipo.
Según estas pautas, podemos controlar a qué lista de tareas se añade una tarea y quién pide tareas a cada lista. De esta forma, nos aseguramos de que los empleados y los decisores solo obtengan las tareas que comprenden.
P: ¿Qué es AWS Flow Framework? ¿De qué forma me ayuda a coordinar mi flujo de trabajo?
AWS Flow Framework es un marco de programación que permite desarrollar aplicaciones basadas en Amazon SWF de forma rápida y fácil. Sintetiza los detalles de la coordinación del nivel de tareas y la interacción asíncrona con constructos de programación sencillos. La coordinación de flujos de trabajo en Amazon SWF conlleva iniciar acciones remotas que tardan más o menos en completarse (p. ej., tareas de actividad) e implementar las dependencias entre ellas correctamente.
AWS Flow Framework permite expresar cómodamente las dos facetas de la coordinación mediante conceptos de programación familiares. Por ejemplo, iniciar una tarea de actividad es tan sencillo como hacer una llamada a un método. AWS Flow Framework traduce automáticamente la llamada en una decisión para iniciar la tarea de actividad y permite que Amazon SWF asigne la tarea a un empleado, la monitorice e informe cuando se haya completado. El marco pone a su disposición en el código, en forma de valores de devolución de la llamada al método, los resultados de la tarea, incluidos sus datos de salida. Para expresar la dependencia de una tarea, solo tiene que usar los valores de devolución en el código, de la misma forma que haría en llamadas de método habituales. El tiempo de ejecución del marco esperará automáticamente a que la tarea se complete y solo reanudará la ejecución cuando los resultados estén disponibles. Entre bastidores, el tiempo de ejecución del marco recibe las tareas de decisión de los empleados y el decisor de Amazon SWF, invoca los métodos relevantes en su programa en los momentos adecuados y formula decisiones que envía de vuelta a Amazon SWF. Al ofrecer acceso a Amazon SWF a través de un marco de programación intuitivo, AWS Flow Framework permite la fácil incorporación de una programación asíncrona y dirigida por eventos en el desarrollo de las aplicaciones.
P: ¿Cómo se comunican los empleados y los decisores con Amazon SWF?¿El protocolo de sondeo no consume muchos recursos?
Normalmente, los protocolos basados en sondeos exigen a los desarrolladores buscar la frecuencia de sondeo óptima. Si los desarrolladores realizan sondeos con demasiada frecuencia, es posible que muchos se devuelvan sin resultados. Esto conduce a una situación en la que una gran parte de los recursos de la red y la aplicación se emplea en sondear sin obtener resultados útiles que hagan avanzar la ejecución. Si los desarrolladores no sondean con suficiente frecuencia, los mensajes se pueden retener más tiempo, lo que hace aumentar las latencias de la aplicación.
Para superar la falta de eficiencia inherente de los sondeos, Amazon SWF proporciona sondeos largos. Los sondeos largos reducen considerablemente el número de sondeos que se devuelven sin tareas. Cuando los empleados y los decisores sondean Amazon SWF para obtener tareas, la conexión se mantiene un minuto si no hay tareas disponibles. Si en ese periodo se encuentra alguna tarea, se devuelve en respuesta a la solicitud de sondeo largo. Al retener la conexión durante un periodo de tiempo, se evita que se devuelvan más sondeos con resultados vacíos durante ese periodo. Gracias a los sondeos largos, las aplicaciones se benefician de las ventajas de seguridad y control del flujo de los sondeos sin sacrificar los beneficios de latencia y eficacia que ofrecen los servicios web basados en la inserción.
P: ¿Puedo utilizar un servicio web existente como empleado?
Los empleados utilizan solicitudes HTTP GET estándar para obtener tareas de Amazon SWF y devolver los resultados. Para usar un servicio web existente como empleado, puede escribir un envoltorio que obtenga tareas de Amazon SWF, invoque las API apropiadas del servicio web y devuelva los resultados a Amazon SWF. En el envoltorio, los datos de entrada proporcionados en una tarea los traducimos en los parámetros para la API del servicio web. De igual modo, también traducimos los datos de salida de las API del servicio web en resultados para la tarea y los devolvemos a Amazon SWF.
P: ¿Amazon SWF me limita a utilizar lenguajes de programación específicos?
No, se puede usar cualquier lenguaje de programación para escribir un empleado o un decisor siempre que se pueda comunicar con Amazon SWF usando las API del servicio web. Actualmente, el SDK de AWS está disponible en Java, .NET, PHP y Ruby. El AWS SDK para Java incluye AWS Flow Framework.
P: Quiero asegurarme de que solo haya una ejecución por cada activación de mi proceso empresarial (p. ej., una transacción, un envío o una asignación). ¿Cómo lo consigo?
Cuando inicia ejecuciones nuevas del flujo de trabajo, proporciona un ID para esa ejecución del flujo de trabajo. Esto permite asociar una ejecución con una acción o entidad empresarial (p. ej., ID de cliente, nombre de archivo, número de serie). Amazon SWF garantiza que el ID de una ejecución sea único mientras se ejecuta. Durante este tiempo, todo intento de iniciar otra ejecución con el mismo ID dará error. De este modo, es más cómodo satisfacer las necesidades empresariales que exigen que no haya más de una ejecución en marcha para una acción empresarial determinada, como pueden ser transacciones, envíos o asignaciones. Piense en un flujo de trabajo que registra a un usuario nuevo en un sitio web. Cuando un usuario hace clic en el botón de enviar, se puede utilizar la dirección de correo electrónico exclusiva del usuario para nombrar la ejecución. Si la ejecución ya existe, la llamada para iniciarla dará error. No se necesita código adicional para evitar conflictos en caso de que el usuario haga clic en el botón más de una vez cuando el registro está en curso.
Una vez completada la ejecución del flujo de trabajo (de forma satisfactoria o no), puede iniciar otra ejecución de flujo de trabajo con el mismo ID. Esto provoca que se efectúe una nueva ejecución del flujo de trabajo con el mismo ID de ejecución pero con un ID de puesta en marcha diferente. El ID de puesta en marcha lo genera Amazon SWF y las diferentes ejecuciones que tienen el mismo ID de ejecución de flujo de trabajo se diferencian por el ID de puesta en marcha. Gracias a la reutilización de los ID de ejecución de flujo de trabajo, Amazon SWF permite abordar casos de uso como los reintentos. Por ejemplo, en el caso del registro del usuario anterior, supongamos que la ejecución del flujo de trabajo falló al crear un registro de base de datos para el usuario. Puede volver a iniciar la ejecución del flujo de trabajo de nuevo con el mismo ID de ejecución (la dirección de correo electrónico del usuario), no hay que crear un ID nuevo para reintentar el registro.
P: ¿De qué forma me ayuda Amazon SWF a escalar aplicaciones?
Amazon SWF permite escalar aplicaciones porque le da control completo sobre el número de empleados que ejecuta para cada tipo de actividad y el número de instancias que ejecuta para un decisor. Al aumentar el número de instancias de empleados o decisores, puede incrementar los recursos de computación asignados a los pasos de procesamiento correspondientes y, por tanto, el desempeño de esos pasos. Para realizar el escalado automático, puede usar los datos de tiempo de ejecución que Amazon SWF proporciona a través de las API. Por ejemplo, Amazon SWF facilita el número de tareas que hay en una lista de tareas. Como un aumento en esta cifra implica que los empleados no están soportando la carga, podemos inscribir empleados nuevos automáticamente siempre que las tareas pendientes superen un umbral.
P: Ejecuto un gran número de aplicaciones críticas. ¿Cómo puedo monitorizarlas y escalarlas?
Además de una consola de administración, Amazon SWF proporciona un conjunto completo de API de visibilidad. Puede usar estas API para obtener información de tiempo de ejecución con la que monitorizar todas las ejecuciones y escalarlas de forma automática en función de la carga. Puede obtener datos detallados sobre cada tipo de flujo de trabajo, como el recuento de las ejecuciones abiertas y cerradas en un intervalo de tiempo especificado. Con las API de visibilidad también puede crear sus propias aplicaciones personalizadas de monitorización.
P: Tengo muchas ejecuciones en marcha al mismo tiempo, pero algunas fallan o se bloquean con frecuencia. ¿Cómo puedo detectar y arreglar estas ejecuciones problemáticas?
Amazon SWF permite buscar ejecuciones a través de la consola de administración y las API de visibilidad. Puede buscar por varios criterios, entre los que se incluyen los intervalos de tiempo durante los cuales las ejecuciones se inician o se completan, el estado actual (abierto o cerrado) y los modos estándar de error (p. ej., tiempo de espera agotado o finalizado). Para agrupar ejecuciones de flujo de trabajo, puede usar hasta 5 etiquetas para asociar un texto personalizado a las ejecuciones de flujos de trabajo cuando las inicia. En la consola de administración de AWS, puede usar etiquetas al buscar ejecuciones de flujos de trabajo.
Para buscar las ejecuciones que se puedan haber bloqueado, puede realizar una búsqueda basada en el tiempo que solo arroje las ejecuciones que estén tardando en ejecutarse más de lo esperado. Luego puede inspeccionarlas para ver los detalles del nivel de tarea y averiguar si determinadas tareas se han estado ejecutando durante demasiado tiempo, han dado error o si el decisor no llegó a iniciar tareas. Esto ayuda a localizar con precisión el problema en el nivel de tarea.
P: Tengo un tipo de actividad que se puede usar en diversas aplicaciones. ¿Lo puedo compartir entre estas aplicaciones?
Sí. Varias aplicaciones pueden compartir una cierta actividad con la condición de que tanto las aplicaciones como la actividad estén registradas dentro del mismo dominio. Para implementarlo, puede hacer que diferentes decisores inicien tareas para el tipo de actividad y lo añadan a la lista de tareas que los empleados de esa actividad sondean. Así, los empleados correspondientes a ese tipo de actividad obtendrán tareas de actividad procedentes de todas las distintas aplicaciones. Si quiere saber de qué aplicación procede una tarea de actividad o si desea implementar diferentes conjuntos de empleados para distintas aplicaciones, puede usar varias listas de tareas. Consulte ¿Cómo me aseguro de que un empleado o un decisor solo obtengan tareas que comprendan?
P: ¿Puedo utilizar AWS Identity and Access Management (IAM) para administrar el acceso a Amazon SWF?
Sí. Puede otorgar permiso a los usuarios de IAM para que obtengan acceso a Amazon SWF. Los usuarios de IAM solo pueden obtener acceso a los dominios de SWF y las API que especifique.
P: ¿Puedo ejecutar los trabajadores tras un firewall?
Sí. Los empleados utilizan solicitudes HTTP GET estándar para obtener tareas de Amazon SWF y devolver los resultados computados. Dado que los trabajadores siempre inician solicitudes en Amazon SWF, no tiene que configurar su firewall para permitir las solicitudes entrantes.
P: ¿Exponer la lógica de negocio en forma de empleados y decisores no representa un riesgo para la seguridad?
Los empleados utilizan solicitudes HTTP GET estándar para obtener tareas de Amazon SWF y devolver los resultados computados. Esto significa que no tiene que exponer ningún punto de enlace para los empleados. Además, Amazon SWF solo proporciona tareas a los empleados cuando el decisor las inicia. Como usted es el que escribe el decisor, tiene control total sobre cuándo o cómo se inician las tareas, incluyendo los datos de entrada que se envían con ellas a los empleados.
P: ¿Cómo me ayuda Amazon SWF a coordinar de forma fiable las tareas en mi aplicación?
Amazon SWF ofrece garantías útiles en torno a la asignación de tareas. Garantiza que una tarea nunca se duplique y que se asigne una sola vez. Por lo tanto, aunque pueda haber varios empleados para un tipo de actividad en concreto (o varias instancias de un decisor), Amazon SWF solo dará una tarea específica a un único empleado (o a una instancia de decisor). Asimismo, Amazon SWF mantiene, como máximo, una sola tarea de decisión pendiente para la ejecución de un flujo de trabajo. De este modo, puede ejecutar varias instancias del decisor sin preocuparse de que haya dos instancias en funcionamiento en la misma ejecución a la vez. Estas facilidades permiten coordinar el flujo de trabajo sin tener que preocuparse de que haya tareas duplicadas, perdidas o que provoquen conflictos.
P: ¿Cuántos tipos de flujos de trabajo, tipos de actividades y dominios puedo registrar con Amazon SWF?
Puede tener un máximo de 10 000 tipos de flujos de trabajo y actividades (en total) registrados u obsoletos en cada dominio. En la cuenta de AWS, puede tener un máximo de 100 dominios de Amazon SWF (incluyendo los registrados y los obsoletos). Si cree que excederá estos límites, utilice este formulario para contactar con el equipo de Amazon SWF y hable con el personal sobre su caso para solicitar un aumento de los límites.
P: ¿Hay límites en el número de ejecuciones de flujo de trabajo que puedo ejecutar simultáneamente?
En cualquier momento dado, puede disponer de un máximo de 100 000 ejecuciones abiertas en un dominio. No existe ningún otro límite en el número acumulativo de ejecuciones que se pueden llevar a cabo ni en el número de ejecuciones que retiene Amazon SWF. Si cree que excederá los límites especificados anteriormente, utilice este formulario para contactarse con el equipo de Amazon SWF para que traten su caso y solicitar un aumento de los límites.
P: ¿Durante cuánto tiempo se pueden ejecutar los flujos de trabajo?
Cada ejecución de flujo de trabajo se puede ejecutar durante un año como máximo. Cada historial de ejecución de un flujo de trabajo puede llegar a tener un máximo de 25 000 eventos. Si su caso de uso requiere superar estos límites, puede usar las características que ofrece Amazon SWF para continuar las ejecuciones y estructurar las aplicaciones mediante ejecuciones de flujos de trabajo secundarias.
P: ¿Qué sucede si una ejecución de flujo de trabajo está inactiva durante un periodo de tiempo prolongado?
Amazon SWF no realiza ninguna acción especial cuando la ejecución de un flujo de trabajo está inactiva durante un periodo de tiempo prolongado. Las ejecuciones inactivas están sujetas a los tiempos de espera que cada uno configure. Por ejemplo, si establecemos que la duración máxima de una ejecución sea de un día, la ejecución inactiva agotará el tiempo de espera si superamos este límite. Las ejecuciones inactivas también están sujetas al límite de Amazon SWF para la duración máxima de una ejecución (un año).
P: ¿Cuánto tiempo puede tardar un empleado en procesar una tarea?
Amazon SWF no impone ningún límite específico sobre el tiempo que un empleado puede tardar en procesar una tarea. Aplica el tiempo de espera que especifiquemos para la duración máxima de la tarea de actividad. Recuerde que Amazon SWF limita las ejecuciones a un año como máximo, es decir, que un empleado no puede tardar más de este tiempo en procesar una tarea.
P: ¿Durante cuánto tiempo puede Amazon SWF conservar una tarea antes de que un empleado la solicite?
Amazon SWF no impone ningún límite específico sobre el tiempo que se conserva una tarea antes de que un empleado la rastree. No obstante, al registrar el tipo de actividad, podemos establecer un tiempo de espera predeterminado durante el cual Amazon SWF conservará las tareas de actividad de ese tipo. Asimismo, podemos especificar este tiempo de espera o anular el tiempo de espera predeterminado mediante el código del decisor cuando programemos una tarea de actividad. Puesto que Amazon SWF limita el tiempo durante el que se puede ejecutar un flujo de trabajo a un máximo de un año, si no se especifica un tiempo de espera, la tarea dejará de conservarse transcurrido este periodo.
P: ¿Puedo programar varias tareas de actividad emitiendo una decisión?
Sí, puede programar hasta 100 tareas de actividad en una decisión y emitir varias decisiones seguidas.
P: ¿Cuántas tareas, señales y marcadores de empleado puede haber en la ejecución de un flujo de trabajo y en diferentes ejecuciones?
No hay límite en el número total de tareas de actividad, señales y temporizadores empleados durante una ejecución de flujo de trabajo. No obstante, por ahora solo se puede tener un máximo de 1 000 tareas de actividad abiertas por cada ejecución de flujo de trabajo. Esto incluye las tareas de actividad que se hayan iniciado y las tareas de actividad que los empleados estén procesando. De igual modo, puede haber un máximo de 1 000 temporizadores abiertos por cada ejecución de flujo de trabajo y hasta 1 000 ejecuciones secundarias abiertas por cada ejecución de flujo de trabajo.
P: ¿Cuántos datos puedo transferir dentro de la ejecución de un flujo de trabajo?
No hay límite para la cantidad de datos que se transfieren durante una ejecución de flujo de trabajo. Sin embargo, las API de Amazon SWF imponen ciertos límites máximos en los parámetros que se usan para pasar datos dentro de una ejecución. Por ejemplo, tanto los datos de entrada que se transfieren a una tarea de actividad como los datos de entrada que se envían con una señal pueden tener un máximo de 32 000 caracteres.
P: ¿Amazon SWF conserva ejecuciones completadas? De ser así, ¿durante cuánto tiempo?
Amazon SWF conserva el historial de una ejecución completada durante el número de días que especifiquemos. El máximo es de 90 días (es decir, unos 3 meses). Durante este tiempo, se puede obtener acceso al historial y buscar la ejecución mediante programación o a través de la consola.
P: ¿Cuándo se aplica una limitación controlada de las llamadas a la API?
Al margen de los picos infrecuentes, puede que experimente una limitación controlada si realiza un número elevado de llamadas a la API en muy poco tiempo. Si experimenta limitaciones controladas con cierta frecuencia o si la aplicación presenta picos frecuentes, utilice este formulario para contactar con el equipo de Amazon SWF y hable con el personal sobre su situación de uso para solicitar otra configuración de limitación controlada para la cuenta.
P: ¿En qué regiones de está disponible Amazon SWF?
Amazon SWF (SWF) está disponible en las siguientes regiones: EE.UU. Este (Norte de Virginia), EE.UU. Oeste (Oregón), EE.UU. Oeste (Norte de California), UE (Irlanda), UE (Fráncfort), Asia Pacífico (Singapur), Asia Pacífico (Tokio), Asia Pacífico (Sídney), América del Sur (São Paulo) y AWS GovCloud (EE.UU.).
P: ¿Amazon SWF está disponible en todas las zonas de disponibilidad?
Sí, Amazon SWF administra el historial de ejecuciones de flujos de trabajo y otros detalles de los flujos de trabajo en tres zonas de disponibilidad para que las aplicaciones puedan continuar dependiendo de Amazon SWF aunque haya errores en una zona de disponibilidad.
P: ¿Cuáles son los puntos de acceso de servicio de Amazon SWF?
Visite la documentación de referencia general de AWS para obtener más información sobre los puntos de enlace de acceso.
P: ¿Los precios incluyen impuestos?
Si no se especifica lo contrario, nuestros precios no incluyen los impuestos ni gravámenes correspondientes, como el IVA y cualquier otro impuesto sobre las ventas. En el caso de los clientes con una dirección de facturación de Japón, el uso de los servicios de AWS está sujeto al impuesto de consumo nipón. Más información.