Airbyte ETL en Casos Reales

Felipe Veloso
4 min readNov 6, 2021

Version en ingles Link

Recientemente comencé a trabajar en una empresa dedicada a la inteligencia logística https://www.simpliroute.com/ en la cual empezó la necesidad de migrar y reunir data en una fuente unificada, por lo cual luego de investigar dentro de la organización, la manera en que usan y obtienen la información emití una propuesta arquitectónica para la solución de datos, tanto batch como stream.

Solution for Batch process
Solution for Stream process

Paralelamente a esto llegó a mis oidos https://airbyte.io/ y mi reacción inmediata fue… “Con esto ya no voy a tener que codear” y honestamente, la necesidad de escribir código con ETL adhoc se redujo bastante.

Airbyte para muchos es una herramienta de la cual poco se ha oído aún, principalmente es una herramienta para ETL la cual desde diversas fuentes de datos, nos apoya al hacer una transformación y posterior almacenamiento de estos datos en múltiples destinos.

Con una interfaz simple e intuitiva, esta herramienta me permitió generar múltiples migraciones desde fuentes tales como:

  • Google Cloud Storage (Json)
  • RDS (Postgres)
  • MongoDb
  • S3 (Json)

A destinos más conocidos como

  • Bigquery
  • Google Cloud Storage

Por lo que luego de procesar cerca de 8tb de información, migrar millones de datos de gps para así generar casos de uso para el área de Machine Learning, mis conclusiones para esta herramienta las describiré punto por punto.

Los beneficios:

  • Desde que plantee la arquitectura la necesidad de codear sobre Google Composer, hacía que mis tiempos de desarrollo se elevarán demasiado, airbyte me permitió organizar ETL de manera rápida a destinos que controlo solo con un par de clicks.
  • Airbyte me permite la ingesta de 3 formas la data, denormalized (metadata de airbyte + en una sola columna toda la data migrada), la opción normalizada básica (migración 100% espejo) y transformaciones customizadas por mi, las cuales con un poco de estudio puedo montar desde gitlab y manejar la ingesta de data como yo necesite.
  • Rápida implementación para una POC y con un poco de conocimientos podría llegar a ser algo productivo de uso interno (montar en una vm y solo tener ip interna, con un túnel de red poder acceder a esta).
  • Resultados visuales (antes de la version 0.30.29-alpha) anteriormente un beneficio y un problema a la vez de airbyte era poder ver como avanzaba la lectura de data, lo cual al hacer ingestas grandes (mas de 300m de registros) se tornó pesado ver los logs (y sacrificio de performance) pero eras consciente de lo que ocurría.
  • Cercanía con el equipo de airbyte, tanto en la ayuda como el interés del uso que le daba, la facilidad de aportar con la comunidad con bugs que iba detectando.
  • Integración de Airflow con un conector, puede sonar redundante pero la simplicidad que propone airbyte, elimina varios steps de airflow y simplifica migraciones completas.

En contra:

  • Es una herramienta que está orientada a un schedule, por lo tanto no permite eventos, en una organización orientada a eventos, ésta quizá no sea la mejor opción por si sola (si usamos el conector con airflow esto puede cambiar).
  • No posee seguridad en su versión open y aún no se encuentran disponibles sus versiones de pago (por las cuales les daría mi dinero rápidamente) por lo cual es deber de uno securitizar un poco esta máquina y eso implica conocimientos mayores al montar en ambientes productivos.
  • Límites en migraciones, sin un número preciso pero ha fallado luego de 72hrs de proceso algunos de los ETL (aprox 2500 mm de registros) lo cual sin mucha explicación intenta hacer un retry del etl partiendo desde 0, esperaría que en una versión más madura se haga ingesta microbatch de la data para no tener que reintentar estas migraciones por completo (al menos no he visto que se pueda aún).
  • Herramienta aún en construcción y constantes updates, me surgio un problema al actualizar la versión de bigquery connector, donde en una versión anterior un campo de metadata lo escribía en string y luego del update lo hacía en timestamp por lo tanto mis futuros ETL fallaban (700m aprox).

Los dejo invitados a probar y a consultar sobre el uso de esta maravillosa herramienta que facilita mi vida como Data Engineer y claramente a los equipos de Data Science les viene de maravilla por su facilidad de uso, al momento de generar dataset desde diversas nubes o recursos.

https://docs.airbyte.io/quickstart/deploy-airbyte

https://github.com/airbytehq/airbyte

--

--

Felipe Veloso

Training to be a Dakar Pilot - ML Engineer and Data Engineer