¿Deberías ejecutar notebooks en entornos de producción?

Aquí tienes una alternativa usando Apache Beam

David Regalado
8 min read10 hours ago

English version of this post here!

¿Alguna vez has sentido la presión de adoptar la última tecnología, la herramienta más nueva, el framework que está de moda, solo porque todos los demás lo están haciendo o por el miedo a perderte algo (también conocido como FOMO o fear of missing out)? Es tentador, ¿verdad? Subirse al coche, perseguir la moda, sentir que estás a la vanguardia. Pero a veces, el camino más innovador radica en recordar los fundamentos.

Existe una seductora atracción hacia la solución rápida, el botón fácil, el atajo hacia el éxito. Y para los que trabajamos con datos, esa tentación a menudo toma la forma de notebooks. Los notebooks son herramientas poderosas que ofrecen flexibilidad y una baja barrera de entrada. Pero también pueden ser un canto de sirena peligroso, que aleja a los ingenieros de las prácticas de desarrollo probadas y los lleva hacia un camino caótico e insostenible.

  • Tipo random de Internet: ¡Descarga este notebook para probarlo!
  • El founder de startup: ¡Genial! ¡Me voy a hacer asquerosamente rico con esto!

¡Amigos míos! Ese tipo random de Internet literalmente dijo: “¡Descarga este notebook para probarlo!”. No dijo: “¡Descarga este notebook para que puedas implementarlo en producción y hacerte asquerosamente rico!

La verdad es que confiar únicamente en notebooks para tu producto de IA es como construir una casa sin cimientos. Claro, puedes levantar paredes y un techo rápidamente, pero es solo cuestión de tiempo antes de que toda la estructura se derrumbe bajo su propio peso.

Confiar únicamente en notebooks para tu producto de IA es como construir una casa sin cimientos.

¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Ejecutar tu código en notebooks Vs ejecutar tus notebooks en producción. Créditos: “Barbie” (Warner Bros. Pictures) y “Oppenheimer” (Universal Pictures).

Los notebooks pueden ser un caldo de cultivo para malos hábitos: falta de pruebas, un control de versiones deficiente y un desorden con las dependencias. Fomentan una mentalidad de “ejecuta y ya” a expensas de la mantenibilidad y escalabilidad a largo plazo.

Ahora, no estoy diciendo que los notebooks sean intrínsecamente malos. Tienen su lugar en el mundo de los datos, particularmente para la exploración, el análisis y la experimentación. Pero para llegar a ser código digno de llevarse a producción, se necesita un enfoque más sólido.

Los notebooks tienen su lugar en el mundo de los datos, particularmente para la exploración, el análisis y la experimentación. Pero para llegar a ser código digno de llevarse a producción, se necesita un enfoque más sólido.

Piénsalo como construir un puente. No confiarías solo en bocetos y prototipos, ¿verdad? Necesitarías planos detallados, estándares de ingeniería rigurosos y un equipo de constructores calificados trabajando al unísono.

La ingeniería de datos, ML e IA exigen el mismo nivel de rigor. Necesitamos adoptar esas mejores prácticas de ingeniería de software (control de versiones, pruebas automatizadas, integración y despliegue continuos) que han demostrado su valía en la construcción de sistemas confiables y escalables.

Resistamos la tentación del camino fácil, el atractivo de la solución rápida. Recordemos los fundamentos, construyamos una base sólida y construyamos pipelines de datos que no solo sean rápidos, sino también robustos, mantenibles y hechos para durar.

Apache Beam Como Antídoto Estructural

El modelo de programación unificado de Beam fomenta un enfoque más disciplinado, alejándose del “háganlo como quieran” de los notebooks hacia una estructura bien definida para construir y gestionar pipelines de datos. En lugar de copiar y pegar fragmentos de código al azar en un notebook, Beam te guía para definir tus transformaciones de datos como una serie de pasos interconectados, formando un flujo de datos claro y comprensible.

Al traducir el código del notebook al framework estructurado de Beam, los equipos de datos pueden:

  • Mejorar la mantenibilidad del código: La estructura modular y la sintaxis clara de Beam facilitan la comprensión, la depuración y el mantenimiento de pipelines complejos.
  • Mejorar la testeabilidad del código: Las capacidades de Beam para hacer pruebas permiten una validación más rigurosa de la lógica del pipeline, lo que reduce los errores y aumenta la confianza en los datos.
  • Facilitar la colaboración: La estructura bien definida de Beam proporciona un lenguaje compartido para que los ingenieros de datos y los científicos de datos colaboren, rompiendo los silos y promoviendo un enfoque más unificado para el procesamiento de datos.
  • Colaborar en soluciones: La estructura modular de los pipelines de Beam permite a los diferentes miembros del equipo centrarse en aspectos específicos del flujo de trabajo de procesamiento de datos, lo que promueve la especialización y el trabajo en equipo eficiente.
  • Comunicar de forma eficaz: Un lenguaje compartido y una representación visual del pipeline facilitan una comunicación clara entre los ingenieros de datos, los científicos de datos y otras partes interesadas.
  • Rastrear y gestionar los cambios: El código de Beam, a diferencia de los notebooks, es compatible con las capacidades de control de versiones de Git. Esto permite a los equipos rastrear los cambios, colaborar en las actualizaciones y garantizar que todos estén trabajando con la última versión del pipeline.

Los DAGs de Beam: Una Ayuda Visual Para la Colaboración

El gráfico acíclico dirigido (DAG) que genera Beam es una potente herramienta de visualización. Proporciona una representación clara e intuitiva del flujo de datos, lo que facilita a los equipos de datos:

  • Comprender la lógica del pipeline: El DAG muestra claramente la secuencia de transformaciones, lo que permite una rápida comprensión de la funcionalidad del pipeline.
  • Identificar cuellos de botella: El DAG puede resaltar los cuellos de botella de rendimiento o las áreas donde el flujo de datos podría estar obstruido.
  • Comunicar y colaborar: El DAG sirve como una referencia visual compartida para las discusiones y la colaboración entre los ingenieros de datos, los científicos de datos y otras partes interesadas.

Dependiendo de dónde estés ejecutando tu pipeline de Beam, tu DAG puede tener más o menos información. Veamos algunos ejemplos de DAG que se ejecutan en diferentes entornos de ejecución:

¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Evidencia 1: Código de Beam cuando se ejecuta en el Beam Playground.
¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Evidencia 2: Código de Beam cuando se ejecuta en Google Colab.
¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Evidencia 3: Beam DAG cuando se ejecuta en un runner de Dataflow.
¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Evidencia 4: Beam DAG cuando se ejecuta en un runner de Flink.

¿Deberían los Científicos de Datos Dominar la Sintaxis de Beam?

No necesariamente. Su enfoque principal debe seguir siendo las tareas analíticas y el desarrollo de modelos. Sin embargo, una comprensión compartida de la terminología y los conceptos de Beam, como Pipelines, PCollections, PTransforms y Windowing, facilita una mejor comunicación entre los científicos de datos y los ingenieros de datos, lo que reduce la brecha entre la experimentación y la implementación y futuro despliegue del código.

Es como hablar un idioma común. Incluso si no eres un hablante fluido, comprender el vocabulario básico permite una comunicación más clara y un trabajo en equipo más eficaz.

¿Migrando Notebooks? Aquí Tienes Una Guía Paso a Paso

La migración del código de notebook existente a Beam requiere esfuerzo, pero es una inversión que vale la pena a largo plazo. Aquí tienes un enfoque sugerido:

  1. Identifica los pipelines críticos: Prioriza la migración de los notebooks que admiten productos o flujos de trabajo de datos esenciales.
  2. Identifica las fuentes y destinos de datos: Debes saber de dónde lees tus fuentes y a dónde debes guardar las salidas.
  3. Divide la lógica: Analiza el código del notebook y descomponlo en una serie de transformaciones de datos bien definidas.
  4. Traduce al código de Beam: Reescribe la lógica utilizando los PTransforms, DoFns y otros componentes de Apache Beam, aprovechando el enfoque estructurado de Apache Beam.
  5. Prueba y valida rigurosamente: Implementa pruebas unitarias para garantizar que el código de Beam sea correcto y valida su comportamiento con respecto a la salida del notebook original.

Al adoptar el enfoque estructurado de Beam y sus funciones de colaboración, los equipos de datos pueden alejarse de la mentalidad de “ejecuta y ya” que a menudo se asocia con los pipelines basados en notebooks. El énfasis de Beam en la testeabilidad, la escalabilidad, la mantenibilidad y la transparencia permite a los equipos de datos construir pipelines robustos, confiables y escalables, al tiempo que fomenta la colaboración y una comprensión compartida del flujo de trabajo de procesamiento de datos. Es un paso crucial para construir una cultura impulsada por los datos que prioriza la calidad de los datos y la confianza en la información derivada de los datos.

Reflexiones Finales

Los notebooks son geniales para la experimentación, pero producción necesita estructura. Apache Beam ofrece flexibilidad sin caos: exploremos cómo se adapta a tus necesidades. Con mi amplia experiencia en ingeniería de datos y mi profundo conocimiento de Apache Beam, puedo proporcionar la experiencia y el soporte necesarios para implementar y optimizar Apache Beam para tus casos de uso específicos.

Contáctame para discutir cómo podemos aprovechar Apache Beam para elevar tus capacidades de procesamiento de datos e impulsar tu negocio.

¿Deberías ejecutar notebooks en entornos de producción? Aquí tienes una alternativa usando Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Ingeniería de Datos | Ingeniero de Datos| Procesamiento de Datos | Streaming | DAG | Dataflow | Apache Flink | Consultor Freelance | Advisor | IA Generativa| Inteligencia Artificial| Data Strategy | Arquitectura Cloud | Google Cloud Champion Innovator
Créditos: “Barbie” (Warner Bros. Pictures) y “Oppenheimer” (Universal Pictures).

Documentos Descargables

Lecturas Adicionales

Should you run notebooks on production environments? Here’s an alternative using Apache Beam | David Regalado | @thecodemancer_ | ApacheBeam | Data Engineering | Data Engineer | Data Processing | Streaming | DAG | Dataflow | Apache Flink | Freelance Consultant | Advisor | Generative AI | Artificial Intelligence | Data Strategy | Cloud Architecture | Google Cloud Champion Innovator
De la película “Gladiador” de DreamWorks Pictures.

¿No Están Entretenidos?

Dale 50 veces a ese botón de 👏 y algo maravilloso sucederá.

--

--

David Regalado
David Regalado

Written by David Regalado

I think therefore I write (and code!) | VP of Engineering @Stealth Startup | Founder @Data Engineering Latam community | More stuff: beacons.ai/davidregalado

No responses yet