BookinglyTech News
Infraestructura

Netflix se pasa al autoscaler open source de Flink para más de 30.000 trabajos

Netflix abandona su autoscaler propio por el de Apache Flink y reporta un ahorro del 58% en cómputo en un equipo.

2 min de lecturaInfoQ0 vistas

Netflix migrará sus más de 30.000 trabajos de streaming a Apache Flink al autoscaler open source del proyecto, después de comprobar que su enfoque a nivel de clúster no encaja con pipelines complejos y con estado. La compañía lleva usando Flink desde 2017 y construyó su primer autoscaler alrededor de 2019, un sistema que se ejecutaba sobre Mantis y consumía telemetría de Atlas. En una entrada de su blog de ingeniería, Netflix explica que aquella herramienta ajustaba el número total de TaskManagers y conseguía reducir el uso de recursos entre un 25% y un 45%, pero su unidad de escalado era el clúster, no el operador. Todos los operadores de un mismo trabajo compartían la misma decisión, algo que se volvió problemático en pipelines con ramas, joins y terabytes de estado donde cada vértice tiene requisitos distintos.

El autoscaler de Apache Flink ataca el problema desde otra perspectiva. Usa métricas expuestas por el propio trabajo para estimar la tasa de procesamiento real de cada operador a partir del rendimiento y el tiempo de ocupación, luego recorre el grafo del trabajo y calcula el paralelismo necesario para cada vértice. Netflix lo ha integrado con su plano de control interno en lugar de desplegarlo directamente con el operador de Kubernetes de Flink. Un servicio Spring Boot usa flujos de trabajo de Temporal para aislar las decisiones de escalado por trabajo, y la compañía ha tenido que modificar la recogida de métricas del JobManager para soportar trabajos con hasta 3.000 subtareas, añadir filtrado de métricas en el lado del servidor, preservar los subgrafos conectados hacia adelante durante el escalado y gestionar la contrapresión de los sumideros.

El tema de las conexiones hacia adelante no es menor: cambiar el paralelismo en una conexión de ese tipo puede requerir redistribución, así que la implementación de Netflix mantiene unidos los operadores conectados hacia adelante. También hay un problema abierto en FLINK-38538 sobre casos en los que los operadores ocupados pueden verse afectados por decisiones de escalado basadas en la relación de salida.

Los resultados de momento son llamativos. Un equipo redujo su gasto anualizado en cómputo Flink un 58%, lo que supone un ahorro de aproximadamente 1,1 millones de dólares al año. Netflix usa un objetivo de utilización de 0,45, por debajo del 0,7 que viene por defecto en la comunidad, para que el rescaling de trabajos grandes con estado no sea demasiado agresivo.

La compañía planea migrar todos los casos de autoscaling internos que le quedan a la implementación open source, y está investigando la arquitectura de estado desagregado de Flink 2 para abaratar el coste de recuperar estado al rescaling. Queda por ver cómo se comportará el autoscaler de la comunidad cuando tenga que gestionar la escala y la heterogeneidad que tiene Netflix, pero la compañía ya ha recorrido parte del camino adaptándolo a sus necesidades.