Contenido de una presentación de PyCon US 2025.
Guía para pasar de Jupyter Notebook a un sistema escalable
Jupyter Notebook es una herramienta muy útil para el análisis interactivo, como la exploración de datos, la visualización y la enseñanza. Sin embargo, cuando llega el momento de desplegar código en producción y la reutilización, la automatización y la robustez se vuelven importantes, empiezan a aparecer las limitaciones de los notebooks. En este artículo se presenta el proceso y los puntos clave para transformar código escrito en Jupyter Notebook en un sistema escalable que facilite el mantenimiento y la reproducibilidad.
Ventajas y desventajas de los notebooks
- Ventajas: Permiten ver código y texto juntos y comprobar los resultados de inmediato, por lo que son excelentes para el análisis exploratorio de datos y la enseñanza. [00:03:18]
- Desventajas: El estado de las variables puede cambiar según el orden de ejecución de las celdas, el control de versiones se complica y la automatización y reutilización del código se vuelven difíciles, lo que obstaculiza la escalabilidad. [00:04:24]
¿Cuándo conviene pasar a scripts?
- Cuando necesitas desplegar código en producción
- Cuando otras personas necesitan reutilizar el código
- Cuando necesitas ejecutar el código automáticamente
- Cuando la robustez del código es importante
- Cuando el notebook se ha vuelto demasiado complejo [00:05:32]
Etapas clave y herramientas para la transición
1. Extracción y conversión del código
- NBConvert & Jupytext: Permiten extraer fácilmente el código del notebook a scripts de Python. En particular, Jupytext también ofrece sincronización entre notebooks y scripts, lo que lo hace especialmente útil. [00:10:44]
2. Proceso de refactorización
- Separar el trabajo por unidades funcionales: Identifica cada etapa del notebook, crea una función para cada una y mueve el código a esas funciones. [00:12:52]
- Escribir pruebas: Crea pruebas unitarias o de integración para garantizar la precisión del código. Esto es especialmente importante para evitar errores que pueden surgir durante el proceso de copiar y pegar. [00:13:08]
- Gestión de requisitos y dependencias: Deja claros los módulos y sus dependencias para que el código pueda ejecutarse fácilmente en otros entornos. [00:13:15]
- Adopción de CI/CD: Construye un pipeline de CI/CD (integración continua/despliegue continuo) para automatizar el proceso de despliegue. [00:13:15]
Consejos adicionales para mejorar la calidad del código
- Formato de código consistente: Usa un formateador de código para mantener la consistencia.
- Documentación: Acostúmbrate a documentar claramente el propósito del código y cómo usarlo.
- Separación de configuración: Administra la información de configuración y ajustes en archivos separados. [00:21:11]
Habilidades clave y cambio de mentalidad
- Modularización: Es importante tener la capacidad de descomponer el código en funciones modulares reutilizables.
- Automatización: Automatiza el flujo de trabajo para mejorar la eficiencia.
- Refactorización guiada por pruebas: Mejora el código manteniendo la estabilidad funcional mediante pruebas.
En la fase de exploración, es importante aprovechar al máximo la flexibilidad de Jupyter Notebook, y para el código de producción adoptar la mentalidad de convertirlo en scripts automatizados, robustos y reproducibles. [00:22:16]
Aún no hay comentarios.