Uno de los principales problemas a los que se enfrenta un desarrollador cuando empieza un proyecto de big data en la nube es la ingesta de los datos.

En muchos casos, los proyectos necesitan realizar ingestas de diferentes fuentes (on-premise y cloud), que se encuentran en multitud de formatos diferentes y tienen frecuencias de actualización distintas. Estas ingestas deben poder ser monitorizadas y se debe permitir su re-ejecución en caso de fallo. En este post vamos a intentar explicar cómo Azure Data Factory resuelve estas necesidades.

Azure Data Factory es un servicio de Azure autogestionado que permite la orquestación de los movimientos y transformación de datos dentro de la nube de Azure. Además de orquestar el movimiento de datos dentro de la infraestructura de Azure, posee conectores para hacer extracciones desde diferentes fuentes de datos origen tanto de otras nubes como de fuentes de datos “OnPremise”.

Pipelines & Activities

Un pipeline es un grupo de activities que ejecutan un trabajo. Estas activities se agrupan en un mismo pipeline para poder ser gestionadas de manera conjunta. Las activities definen las acciones que se ejecutan sobre los datos y pueden ser de tres tipos distintos:

Data Movement: Este tipo de activity copia datos desde una fuente de datos y los almacena en otra fuente de datos diferente.
Data Transformation: Este tipo de activity transforma los datos utilizando Spark u otras tecnologías de procesamiento de grandes volúmenes de datos.
Control: Este tipo de activities sirven para controlar el flujo de ejecución de las activities dentro de un pipeline. Por ejemplo para aplicar condiciones del tipo if, for each…

Datasets & Linked Services

Un dataset es una representación lógica de los datos almacenados en las fuentes de datos que van a ser utilizados en una activity como input o como output.

Un Linked Service define cómo se realiza la conexión entre Data Factory y las fuentes de datos que contienen los datasets definidos (cadenas de conexión, contraseñas…).

Para evitar almacenar los valores sensibles (usuarios, contraseñas… ) de las cadenas de conexión de los Linked Service en claro, podemos utilizar Azure Key Vault. Para ello primero deberemos crear un Linked Service de tipo Azure Key Vault y después referenciar dicho Linked Service en la parte de cadena de conexión del Linked Service que estemos creando para acceder a nuestras fuentes de datos.

Triggers

La ejecución de un Pipeline de Azure Data Factory puede iniciarse bien de forma manual o bien mediante el uso de triggers. Actualmente están soportados los siguientes tipos de triggers:

  • Schedule: Estos triggers ejecutan pipelines en función de una programación de tiempo de manera recurrente. Por ejemplo ejecución del pipeline cada lunes a las 9 AM o ejecución del pipeline de manera diaria a las 10 de la noche.
  • Tumbling window: Ejecutan pipelines utilizando ventanas temporales que empiezan en un momento determinado, tienen un tamaño fijo y mantienen el estado. Estas ventanas no se sobreponen y se ejecutan a intervalos continuados. Este tipo de triggers es el adecuado para la re-ejecución de procesos que dependen de fechas en el pasado.
  • Event-based: Este tipo de trigger ejecuta un pìpeline en respuesta a un evento. Actualmente solo están soportados los eventos relacionados con Azure Blob Storage, lo cual permite iniciar la ejecución de un pipeline cuando se crea o elimina un fichero en una ruta determinada.

En función del caso de uso y la tipología de las fuentes de datos será más adecuado usar un tipo de trigger u otro.

Integration Runtime

Se define Integration Runtime como la infraestructura de cómputo utilizada por Azure Data Factory para realizar las siguientes tareas:

  • Movimiento de datos.
  • Distribución de actividades: Distribución y monitorización de las actividades de transformación que se ejecutan en multitud de servicios diferentes.
  • Ejecución de paquetes de SQL Server Integration Services.

Actualmente Data Factory soporta tres tipos de Integration Runtime:

Azure

  • Permite realizar movimiento de datos entre almacenes de datos en la nube y distribución de actividades en servicios que se encuentran en una red pública.
  • Soporta la conexión con almacenes de datos y servicios de cómputo en redes públicas con endpoints públicos.
  • Los recursos de cómputo están gestionados por Azure y el dimensionamiento es transparente. Solo se paga por el uso real del servicio.

Self-Hosted

  • Permite realizar movimiento de datos entre almacenes de datos en la nube y almacenes de datos en una red privada (en la nube u on-premise).
  • Permite la distribución de actividades en servicios que se encuentren en una red privada u on-premise.
  • Se tiene que instalar en una máquina en la infraestructura OnPremise del cliente o en una máquina virtual en una red privada en Azure que tenga sistema operativo Windows.

Azure-SSIS

  • Permite la ejecución de paquetes SSIS en la nube de Azure.
  • Se puede aprovisionar en una red pública o privada.

Monitorización

Actualmente, Data Factory soporta la monitorización a través de las siguientes herramientas:

  • Ventana de monitorización incluida dentro de la propia página de gestión de Data Factory.
  • Azure Monitor.
  • SDK.

Cuando se monitoriza la actividad a través del área de monitorización de Data Factory tenemos acceso a una monitorización visual de los pipelines y las activities que se ejecutan. Además tenemos la opción de volver a ejecutar activities fallidos dentro de un pipeline y tener un histórico de re-ejecuciones de todos los pipelines o de un pipeline en particular.

Tanto en Azure Monitor como a través del área de monitorización de Data Factory se pueden definir alertas que se disparan en función a unos criterios establecidos.

Parametrización

Data Factory soporta el uso de parámetros tanto en la configuración de linked services como en la configuración de los datasets. Esta característica es particularmente útil cuando queremos generar un dataset dinámico que varía en función de la fecha de ejecución del pipeline por ejemplo.

La parametrización está soportada para los siguientes tipos de Linked Services:

  • Azure SQL Database
  • Azure SQL Data Warehouse
  • SQL Server
  • Oracle
  • Cosmos DB
  • Amazon Redshift
  • MySQL
  • Azure Database for MySQL

Conclusión sobre Azure Data Factory

Azure Data Factory es una completa herramienta que nos aporta las siguientes funcionalidades:

  • Extracción de información desde fuentes de datos en la nube y on-premise (utilizando Self-Hosted Integration Runtime).
  • Monitorización de la ejecución de los pipelines y visualización del histórico de ejecuciones.
  • Re-ejecucion de activities de un pipeline específico.
  • Parametrización de los datasets y linked services para su reutilización.
  • Gestión de los secretos de manera segura mediante Azure Key Vault.
  • Sistema resiliente y autoescalado cuando se utiliza Azure Integration Runtime.
  • Ejecución de pipelines en respuesta a eventos utilizando Event Based Triggers.

Author

  • Arturo Martinez

    Cloud Architect en Keepler. "I am passionate about Big Data in any of its aspects and the public cloud in all its flavors (AWS, Azure, Google Cloud). I love facing new challenges every day and constantly discovering new ways to get value from data. In my job I try to design and implement scalable and resilient architectures that add value."