Kedro es una biblioteca de código abierto, desarrollada por QuantumBlack, una firma analítica adquirida por McKinsey en el 2015.
El nombre Kedro deriva de la palabra griega que significa centro o núcleo. Kedro busca ayudar al programador a estructurar el flujo de datos usando principios de la ingeniería de software. Además presenta un enfoque estándar a la colaboración para equipos de trabajo.
Uno de los problemas que Kedro busca resolver es el hecho de que los científicos de datos no trabajan muchas veces en equipo, de manera que con este entorno se puede llegar a un acuerdo de colaboración eficiente.
Kedro se ha diseñado para que los equipos puedan tener un estándar no sesgado, lo que en alguna medida pretende evitar los vicios comunes al trabajar con muchos datos, que es suponer cosas que no necesariamente son comunes a dichos datos, por ejemplo. Así, Kedro se diseñó para crear código que sea reproducible, modular, monitoreado, probado y bien documentado.
Kedro ya ha sido usado internamente en QuantumBlack y McKinsey en más de 50 proyectos, y los desarrolladores han dicho que este sistema ha revolucionado sus flujos de trabajo.
¿De qué está compuesto Kedro?
El software se basa en un «machote» estándar de proyecto que puede ser configurado para una serie de tareas como el entrar al sistema, la carga de los datos e incluso para trabajar con notebooks de Jupyter. También contiene Sphinx para crear la documentación. El sistema toma en cuenta la abstracción de datos y el control de versiones.
El sistema tiene soporte para funciones puras de Python (nodos), de manera que puedan dividirse grandes bloques de datos en secciones pequeñas independientes. Tiene resolución automática de dependencias entre nodos y hay planes para tener herramientas de visualización que muestre la estructura del flujo de datos en los proyectos de Kedro.
Kedro incluye también Kedro-Airflow, una herramienta que permite hacer prototipos del flujo de datos antes de meterlos a AirFlow. Hay también algo que se denomina Kedro-Docker, una herramienta para empacar y enviar los proyectos de Kedro a los contenedores en Docker.
Es interesante la versatilidad de Kedro, pues permite ejecutarse localmente, o bien usar la nube (servidores AWS, Azure y GCP) o bien clústers como EMR, Azure HDinsight, GCP y Databricks. El sistema está creado pensando en un amplio espectro de aplicaciones, desde proyectos de un solo usuario hasta software de nivel empresarial en donde las decisiones de negocios están respaldadas por modelos de aprendizaje de máquinas.