4 puntos por GN⁺ 2024-07-24 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2024-07-24
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

    • Prefiero usar software de código abierto, aunque requiere mantenimiento y agregar funcionalidades
    • Todo código que no sea crítico para el negocio es un desperdicio de recursos
  • Me pregunto cuántas iteraciones hacen falta para que los ingenieros queden satisfechos con una solución de flujos de trabajo

    • Netflix, Uber y Amazon construyeron varias soluciones
    • A los ingenieros les interesa crear motores de flujos de trabajo
  • Opinión del fundador de Windmill.dev

    • Maestro y Windmill tienen muchas similitudes
    • Diferencias principales:
      • Windmill está escrito en Rust
      • Maestro usa CockroachDB, Windmill usa su propio algoritmo de sharding
      • Diferencia de licencia: Maestro usa Apache 2.0, Windmill usa AGPL
      • Windmill es una empresa pequeña en comparación con Maestro, que cuenta con el respaldo de Netflix
      • A Maestro le falta documentación para self-hosting y una UI
  • Experiencia de uso con Activebatch

    • Activebatch ofrece un entorno de automatización potente con una instalación simple de una base de datos MS SQL y una GUI de Windows
    • Airflow y otros competidores de código abierto son complejos
    • Es una lástima que Activebatch no se use más ampliamente debido a su modelo de ventas empresariales
  • Confusión sobre el uso de Netflix/Conductor

    • Parece que el proyecto usa Netflix/Conductor, pero está usando una versión archivada
    • No usa Orkes Conductor
  • Opinión sobre los orquestadores

    • El código abierto y el desarrollo público son excelentes, pero ya existen muchos orquestadores
    • Es poco probable que una nueva opción llegue a usarse comercialmente
  • Comparación con Temporal

    • Maestro está escrito en Java y Temporal en Go
  • Evaluación positiva del proyecto

    • Quería construir algo similar para proyectos de ML e ingeniería de datos
    • Tengo ganas de probarlo
  • Pregunta sobre las diferencias con Conductor

    • Encontré muchas similitudes en el código
    • Usa JSON como lenguaje de definición de flujos de trabajo
  • Crítica al contenido del artículo

    • Se siente como si hubiera sido escrito por IA
    • Hace falta un flujo de trabajo de ejemplo con un caso de uso real