Volver al listado

ETL e ingestas de datos en GCP

alt text

En un mundo cada vez más rodeado de datos, cada vez se demanda más la posibilidad de mover información de unos sistemas a otros, ya sea para realizar análisis, explotar la información o hacer reporting de los datos.

¿Qué se necesitaba?

Desde NEXT Digital Hub hemos tenido que hacer frente a necesidades de ingestas de diversas fuentes de datos, como una API o una base de datos SQL. Todo esto con un proveedor cloud como Google Cloud Platform.

La posibilidad de utilizar los servicios que Google Cloud Platform provee posibilitó que pudiéramos cumplir con los requisitos del cliente:

  • Un sistema que no tenga que ser administrado, que no se tenga que mantener máquinas.
  • Pay-per-use: pagar solo por el uso que se haga de los servicios.
  • Un sistema que sea replicable.
  • Un sistema que pueda ser monitorizado.

¿Cómo lo hemos hecho?

Con todos estos requisitos, desarrollamos una solución basada en el uso de Google Cloud Function, ejecutadas mediante mensajes asíncronos con Google Pub-Sub, siendo las ETLs lanzadas de forma programada mediante Cloud Scheduler.

Los datos son cargados en Cloud SQL, para poder ser explotados por informes de PowerBI.

alt text

De esta forma, conseguimos que los costes mensuales de la plataforma sean mínimos, pagando sobre todo por el tráfico saliente de Google Cloud y la base de datos (las ejecuciones de Cloud Function entran dentro de la capa gratuita).

El cliente tampoco debe mantener ninguna máquina, ya que Cloud Function es un Faas (Function as a Service) totalmente serverless, y Cloud SQL también es un servicio gestionado.

Mediante el uso de herramientas de IaC (Infrastructure as Code) como Terraform, conseguimos que toda la infraestructura necesaria en la solución pueda ser fácilmente mantenible y replicable en otros entornos.

Todo el sistema es fácilmente monitoreable haciendo uso de Google Stackdriver, que nos permitió establecer diferentes métricas y alertas sobre ellas, así como la realización de diferentes dashboard donde podíamos monitorizar que el sistema funciona como esperamos.