Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Orquestación
En este enfoque, un único orquestador es responsable de llamar a cada microservicio, de determinar si se deben realizar las llamadas en secuencia o en paralelo, de manipular las respuestas de los servicios individuales a lo largo del proceso y de compilar el resultado final. Un orquestador puede mezclar invocaciones asíncronas y síncronas.
AWS Step Functions
La orquestación es una opción adecuada cuando hay ramas lógicas en el proceso y se necesita un único lugar donde encapsular esa lógica. También es útil cuando se quiere implementar el patrón asíncrono de verificación de reclamaciones. Por ejemplo, los flujos de trabajo estándar de Step Functions pueden poner en pausa un flujo de trabajo y esperar a que otro servicio le devuelva la llamada. El uso de un orquestador también mejora el monitoreo y la observabilidad de un proceso.
Ejemplo: Step Functions
Puede usar Step Functions para coordinar varias funciones de Lambda y otras Servicios de AWS para crear flujos de trabajo complejos para la integración de microservicios. Esta opción resulta útil en especial en el caso de procesos prolongados y de varios pasos que implican varios microservicios.
Debería considerar la posibilidad de utilizar Step Functions si:
-
La integración de sus microservicios requiere de procesos complejos de varios pasos.
-
Debe mantener el estado en todas las operaciones de larga duración.
-
Desea implementar la lógica de gestión de errores y reintentos a nivel del flujo de trabajo.
-
Debe coordinar operaciones síncronas y asíncronas.
Step Functions ofrece un editor visual para el diseño de flujos de trabajo complejos, lo que simplifica el proceso de creación y administración de máquinas de estados. Proporciona mecanismos integrados de gestión de errores, que incluyen la lógica de reintento y la administración del estado de los errores, lo que mejora la fiabilidad y la solidez de sus aplicaciones. Los flujos de trabajo estándar admiten procesos de larga duración de hasta un año, lo que es adecuado para flujos de trabajo que abarcan períodos prolongados. Esta opción separa la lógica de orquestación del código de la aplicación, por lo que reduce de manera importante la complejidad del código. De esta manera, los desarrolladores pueden centrarse en la lógica empresarial principal, mientras que Step Functions se encarga del control del flujo y la coordinación de los componentes distribuidos.
Por ejemplo, piense en el proceso de aprobación de un préstamo en una solicitud de servicios financieros, como se ilustra en el siguiente diagrama. El proceso comienza en el momento en que se presenta una solicitud de préstamo.
En la máquina de estados que se ilustra en el diagrama anterior, Step Functions orquesta los siguientes pasos:
-
Validación de los datos de la aplicación (función de Lambda)
-
Verificación de la calificación crediticia (función de Lambda que llama a una API externa)
-
Evaluación del riesgo (función de Lambda)
-
Si el riesgo es alto, procede a la revisión manual (tarea de aprobación humana)
-
Si se aprueba, inicia el desembolso del préstamo (función de Lambda)
-
Envío de notificación al solicitante (Amazon SNS)
Puede utilizar este enfoque para administrar de forma fiable un proceso complejo y potencialmente prolongado, con un sistema integrado de gestión de errores y la posibilidad de incluir pasos automatizados y manuales.
Consideraciones:
-
Diseñe su máquina de estados con cuidado para gestionar todos los escenarios posibles.
-
Realice los pasos en paralelo cuando sea posible.
-
Utilice los mecanismos integrados de gestión de errores y reintento de Step Functions para los fallos permanentes y temporales.
-
Piense en la posibilidad de utilizar flujos de trabajo estándar o rápidos según su caso de uso. Los flujos de trabajo rápidos pueden ser preferibles en el caso de los flujos de trabajo de corta duración o de gran volumen.
-
Monitoree las métricas de ejecución para optimizar el flujo de trabajo.
-
Utilice los flujos de trabajo anidados para encapsular y reutilizar la funcionalidad en varias máquinas de estado.
-
En el caso de flujos de trabajo complejos, puede utilizar Amazon Bedrock Agents como alternativa a Step Functions.
Para obtener más información, consulte la documentación de Step Functions.
Ejemplo: Amazon MWAA
Si en su organización ya se utiliza Apache Airflow, Amazon MWAA es una opción natural como orquestador de flujos de trabajo. En Apache Airflow, los flujos de trabajo se crean como gráficos acíclicos dirigidos (DAGs) mediante Python. La representación en DAG de la máquina de estados que se ilustra en la sección Step Functions podría tener este aspecto:
Para obtener información sobre cómo trabajar con DAGs, consulte la documentación de Amazon MWAA.
Diferencias clave entre Step Functions y Amazon MWAA
-
Step Functions es un servicio sin servidor totalmente administrado, lo que significa que no es necesario aprovisionar previamente ninguna infraestructura ni programar un período de mantenimiento. Amazon MWAA debe implementarse con anticipación y usted elige el tamaño y la cantidad de nodos de su clúster.
-
En Step Functions, se pueden crear máquinas de estados de diversas formas, como Workflow Studio, directamente como JSON o mediante AWS Cloud Development Kit (AWS CDK). Apache Airflow DAGs está escrito en Python.
-
Con Step Functions, no se incurrirá en costos si no hay flujos de trabajo en ejecución. Con Amazon MWAA, incurrirá en costes incluso cuando no DAGs esté en funcionamiento.