Cuando nos enfrentamos a un proyecto de ingeniería de datos, elegir entre una ETL customizada o utilizar una herramienta ETL preexistente es una decisión muy importante que tendrá un efecto directo sobre el éxito del proyecto. Ambas opciones tienen sus propias ventajas y desventajas, y qué elegir dependerá tanto del equipo como de las características del proyecto que tienes entre manos.
Antes de seguir, si no sabes muy bien qué es un proceso ETL, échale un ojo a este post.
Una herramienta ETL es un software diseñado para facilitar la creación y la gestión de procesos ETL. Estas herramientas suelen ofrecer interfaces gráficas que permiten diseñar y ejecutar flujos de trabajo sin necesidad de programación intensiva.
Se supone que estas herramientas te ahorran tiempo y esfuerzo. No siempre es así. He usado algunas herramientas ETL que eran un completo dolor de cabeza a la hora de configurarlas. No es oro todo lo que reluce.
Rapidez en la implementación: Las herramientas ETL están diseñadas para acelerar el desarrollo, permitiendo la construcción de flujos de trabajo mediante interfaces visuales, reduciendo el tiempo de implementación.
Facilidad de mantenimiento: La mayoría de las herramientas ETL proporcionan funciones de monitoreo y gestión que simplifican el mantenimiento de los procesos, facilitando la identificación y solución de problemas.
Escalabilidad: Estas herramientas suelen ser escalables, permitiendo adaptarse a volúmenes de datos en constante crecimiento sin una reescritura significativa del código.
Limitaciones en la personalización: Aunque son versátiles, las herramientas ETL pueden tener limitaciones en términos de personalización para casos muy específicos, lo que puede afectar la adaptabilidad a ciertos requerimientos.
Costes asociados: Algunas herramientas ETL pueden tener costes asociados, ya sea en términos de licencias, suscripciones mensuales o hardware requerido, lo que puede ser una consideración importante en proyectos con presupuestos ajustados.
Aquí tienes una lista de herramientas ETLs que puedes usar.
Un proceso de ETL custom implica desarrollar una solución a medida desde cero, abordando cada fase del proceso, desde la extracción hasta la carga de datos en la base de datos destino.
Sinceramente, es mi elección favorita. Puede ser que sea debido a mi background de ingeniero informático. Tener control sobre cada parte de la ETL me parece algo muy potente. Pero como dijo el tío Ben: "Un gran poder conlleva una gran responsabilidad". Por lo que deberás tener una gran capacidad técnica para desarrollar tus ETLs desde cero.
Flexibilidad total: La personalización total permite adaptar el proceso a requisitos específicos y cambios en el entorno, lo que puede ser fundamental en proyectos altamente especializados.
Optimización de rendimiento: Al construir cada componente a medida, se puede optimizar el rendimiento para satisfacer necesidades específicas, logrando eficiencia en el manejo de grandes volúmenes de datos.
Menos dependencia de terceros: La dependencia de terceros es mínima, ya que el control total recae en el equipo de desarrollo interno.
Mayor tiempo de desarrollo: La creación de un proceso ETL custom suele requerir más tiempo y recursos, ya que cada componente debe ser desarrollado y probado individualmente.
Mayor complejidad de mantenimiento: La gestión y mantenimiento del código personalizado puede ser más compleja, especialmente a medida que el sistema evoluciona y se expande.
La elección entre una herramienta ETL y el desarrollo desde cero dependerá de diversos factores como la complejidad del proyecto, los requisitos del mismo, el presupuesto disponible y la experiencia de tu equipo.
Utiliza una herramienta ETL cuando:
Opta por una ETL custom cuando:
Aún así, mi consejo es: USA LO QUE TU EQUIPO CONOZCA.
¿Tu equipo sabe Python? Crea ETLs custom con Python y alguna librería. ¿Tu equipo sabe AWS Glue? Usa AWS Glue. No te compliques la vida y usa siempre lo que controléis mejor.
Y tú, ¿qué prefieres? tengo curiosidad por saber si soy el único fan de las ETLs desde cero.