-
Maestro: el orquestador de workflows de Netflix
-
TL;DR
- Netflix publicó el código fuente de Maestro
- Se puede empezar desde el repositorio de GitHub, y piden dejar una estrella si te resulta útil
-
Qué es Maestro
- Maestro es un orquestador de workflows de propósito general y escalable horizontalmente, diseñado para gestionar workflows a gran escala
- Gestiona todo el ciclo de vida de workflows como pipelines de datos y pipelines de entrenamiento de modelos de machine learning
- Los usuarios pueden empaquetar la lógica de negocio en varios formatos, como imágenes de Docker, notebooks, scripts de bash, SQL y Python
- A diferencia de los orquestadores de workflows tradicionales que solo soportan DAG (Directed Acyclic Graph), Maestro soporta tanto workflows acíclicos como cíclicos, e incluye varios patrones reutilizables como bucles foreach, subworkflows y bifurcación condicional
-
El recorrido con Maestro
- Migraron con éxito cientos de miles de workflows con una interrupción mínima para los usuarios
- Durante el último año, los trabajos ejecutados aumentaron 87.5%, y actualmente ejecuta un promedio de 500 mil trabajos por día
-
Escalabilidad y versatilidad
- Maestro es un orquestador de workflows totalmente administrado que ofrece Workflow-as-a-Service a miles de usuarios finales, aplicaciones y servicios de Netflix
- Soporta varios casos de uso de workflows, como pipelines ETL, workflows de ML y pipelines de pruebas AB
- Creen que, dado que las tablas de datos de Netflix están en un único data warehouse, un solo orquestador debe encargarse de ello
-
Introducción a Maestro
- Usa definiciones de workflow definidas en formato JSON
- Combina campos proporcionados por el usuario y campos administrados por Maestro para formar definiciones de orquestación flexibles y potentes
- Las definiciones de workflow se componen de propiedades y workflows versionados
- Las propiedades incluyen información de autor y propietario, configuraciones de ejecución y más
- Los workflows versionados incluyen identificador único, nombre, descripción, etiquetas, configuración de timeout y nivel de prioridad
-
Estrategias de ejecución de workflows
- Estrategia de ejecución secuencial: ejecuta los workflows uno por uno en orden FIFO
- Estrategia de ejecución secuencial estricta: bloquea la ejecución cuando hay un error bloqueante y requiere resolverlo manualmente
- Estrategia de ejecutar solo el primero: elimina nuevas instancias de workflow de la cola hasta que termine el workflow actualmente en ejecución
- Estrategia de ejecutar solo el último: ejecuta únicamente el workflow activado más recientemente y detiene las instancias existentes en ejecución
- Estrategia de ejecución paralela con límite de concurrencia: ejecuta múltiples instancias de workflow en paralelo según un límite de concurrencia predefinido
-
Soporte para parámetros y lenguaje de expresiones
- Soporta parámetros dinámicos e inserción de código, lo que mejora significativamente la flexibilidad y el dinamismo de los workflows
- Para abordar problemas de seguridad y protección, desarrollaron su propio parser de lenguaje de expresiones personalizado
- Simple and Safe Expression Language (SEL): un lenguaje de expresiones simple y seguro desarrollado para resolver los riesgos asociados con la inserción de código
- Parámetros de salida: permite devolver parámetros de salida desde ejecuciones del usuario al sistema
- Workflows parametrizados: se inicializan paso a paso en tiempo de ejecución con base en parámetros definidos por el usuario
-
Patrones de ejecución de workflows
- Soporte para Foreach: se usa para ejecutar repetidamente la misma tarea con distintos parámetros
- Soporte para bifurcación condicional: ejecuta pasos posteriores solo cuando se cumplen condiciones específicas
- Soporte para subworkflows: permite compartir funcionalidad común entre múltiples workflows
-
Runtime de pasos y parámetros de paso
- Interfaz de runtime de pasos: una interfaz que describe tareas en tiempo de ejecución
- Fusión de parámetros de paso: inyecta parámetros de runtime y etiquetas antes de la ejecución del paso para controlar dinámicamente su comportamiento
-
Dependencias de pasos y señales
- Se pueden usar dependencias de pasos para expresar dependencias de ejecución
- Las señales son fragmentos de mensaje que transmiten información, incluidos valores de parámetros
-
Breakpoints
- Se pueden establecer breakpoints en pasos del workflow para que funcionen de forma similar a los breakpoints a nivel de código
- Cuando se alcanza un breakpoint, ese paso entra en estado de "pausa" y el avance del grafo del workflow se detiene hasta que el usuario lo reanude manualmente
-
Timeline
- Captura todos los eventos importantes, incluida la timeline de ejecución de pasos
- Es útil para depuración y ofrece visibilidad sobre el estado de los pasos
-
Política de reintentos
- Soporta políticas de reintento para pasos que llegaron a un estado terminal debido a una falla
- Distingue entre reintentos por errores de plataforma y por condiciones definidas por el usuario
-
Vista agregada
- Permite ver el estado agregado de todos los pasos de una instancia de workflow
- Calcula el estado agregado combinando los datos de runtime de la ejecución actual con agregaciones base
-
Rollup
- Proporciona un resumen de alto nivel de una instancia de workflow
- Detalla el estado de cada paso y la cantidad de pasos en cada estado
-
Publicación de eventos de Maestro
- Genera eventos y los publica en sistemas externos cuando cambia una definición de workflow, una instancia de workflow o una instancia de paso
- Se distinguen entre eventos internos y externos
-
Cómo empezar con Maestro
- Ha sido usado ampliamente dentro de Netflix y ahora publicaron el código fuente
- El código está disponible en el repositorio de GitHub, y piden crear un issue en GitHub si hay preguntas o comentarios
-
Agradecimientos
- Expresan su agradecimiento a los miembros del equipo que contribuyeron al proyecto Maestro y a sus colegas en Netflix
Resumen de GN⁺
- Maestro es un orquestador diseñado para gestionar los workflows a gran escala de Netflix y soporta lógica de negocio en varios formatos
- Mejora significativamente la flexibilidad y el dinamismo mediante parámetros dinámicos e inserción de código
- Ofrece diversas estrategias y patrones de ejecución para definir y gestionar workflows complejos con facilidad
- Es adecuado para manejar una fuente de datos única como el data warehouse de Netflix
- Otros orquestadores con funciones similares incluyen Apache Airflow y Prefect
1 comentarios
Comentarios de Hacker News
Me impresionaban los blogs técnicos de empresas y sus sistemas internos, pero ahora me doy cuenta de que el código es deuda
Me pregunto cuántas iteraciones hacen falta para que los ingenieros queden satisfechos con una solución de flujos de trabajo
Opinión del fundador de Windmill.dev
Experiencia de uso con Activebatch
Confusión sobre el uso de Netflix/Conductor
Opinión sobre los orquestadores
Comparación con Temporal
Evaluación positiva del proyecto
Pregunta sobre las diferencias con Conductor
Crítica al contenido del artículo