Una de las situaciones habituales a la que nos enfrentamos cuando queremos construir una plataforma unificada de acceso al dato dentro de nuestra organización es la necesidad de desplegar procesos de ingesta y transferencia de datos entre los diferentes sistemas de almacenamiento, que se pueden encontrar tanto en entornos On-premise como en entornos Cloud. Para la realización de este tipo de procesos se utilizan los denominados motores de ingesta que nos permiten transferir datos desde diferentes orígenes de manera ágil y escalable hacia un sistema de almacenamiento. En este post vamos a centrarnos en el motor de ingesta que permite desplegar este tipo de procesos en Azure mediante la utilización del Integration Runtime (IR) de Azure Data Factory.

¿Qué es un motor de ingesta de datos?

Un proceso de ingesta de datos consiste en cargar registros de información (datos) desde uno o varios orígenes hacia un sistema de almacenamiento de datos.

Procesos de ingesta de datos.
Procesos de ingesta de datos.

Un motor de ingesta es un componente que permite ejecutar los diferentes procesos de ingesta, orquestando los diferentes flujos de datos (movimiento, transformación, limpieza, etc.) y planificando la ejecución de cada uno de ellos en base a las necesidades de la plataforma de datos.

Tareas de un motor de ingesta de datos.
Tareas de un motor de ingesta de datos.

Desarrollar un buen proceso de ingesta nos permitirá:

Existen 2 modalidades de procesos de ingestión de datos:

  1. Ingesta de datos en streaming, donde los datos se van insertando en el repositorio de datos centralizado casi en tiempo real (near real-time), habitualmente mediante un sistema de eventos que permite procesar millones de eventos en casi tiempo real generados por diferentes aplicaciones productoras. Este modo de ingesta es utilizado para la ingesta de datos ligeros y con necesidades de consulta en “near real-time”.
  2. Ingesta de datos en batch, donde los datos se van insertando por lotes en el repositorio de datos centralizado, habitualmente mediante procesos de carga incremental planificados periódicamente. Este modo de ingesta es utilizado para la ingesta de datos pesados donde es necesario un alto rendimiento.

En este post nos centraremos en la modalidad de ingesta en modo batch y el servicio dentro de Azure que nos ofrece estas capacidades: Azure Data Factory.

Ingesta de datos batch con Azure Data Factory

Los procesos de ingesta, en modo batch, mediante Azure Data Factory, se desarrollan mediante la construcción de canalizaciones (o pipelines). Las canalizaciones son agrupaciones lógicas de actividades que en su conjunto llevan a cabo una tarea específica, por ejemplo, ingestar todos los datos de clientes de un CRM en el repositorio central. Además, las actividades utilizan otros tipos de componentes que les permiten acceder a la información con el objetivo de completar su cometido. Estas relaciones entre componentes se pueden visualizar en el siguiente flujo:

Componentes de Azure Data Factory.
Componentes de Azure Data Factory.

El primer paso para comenzar a mover los datos desde entornos híbridos hacia el repositorio de datos central es comenzar a desarrollar las pipelines de ingesta de datos. Para poder ejecutar las diferentes actividades de movimiento de datos dentro de nuestra pipeline de Data Factory lo primero que necesitamos hacer es seleccionar el motor de ejecución que utilizarán los linked service de origen y destino para llevar a cabo la actividad.

Elección del motor de ejecución en un linked service dentro de Data Factory.
Elección del motor de ejecución en un linked service dentro de Data Factory.

Pero la gran pregunta es… ¿Qué es un motor de ejecución dentro de un motor de ingesta y cómo elegimos el adecuado para nuestros movimientos de datos?

¿Cómo elegir el motor de ejecución?

El motor de ejecución dentro de Data Factory se conoce como Integration Runtime. El Integration Runtime (IR) es el servicio que proporciona las capacidades de computación a las diferentes actividades dentro de Data Factory, proporcionando el puente entre las actividades y los linked services. Como es habitual en la mayoría de organizaciones, los datos de origen y destino se encuentran dispersos entre entornos On-premise y nuevos entornos Cloud. La localización del IR define dónde se realizará la computación y el movimiento de los datos.

El origen y el destino de la información de estos procesos de transferencia de datos, junto con la configuración de las redes de comunicaciones entre el entorno Cloud y el entorno On-premise, son elementos determinantes a la hora de definir la configuración y el tipo de IR que debe ser desplegado dentro de la plataforma. De entre las posibles opciones:

Para decidir entre las diferentes opciones qué IR desplegar y utilizar debemos responder a una serie de preguntas que se representan en el siguiente flujo de evaluación:

Flujo de evaluación de elección del Integration Runtime.
Flujo de evaluación de elección del Integration Runtime.

En este post partiremos de las consideraciones que representan una de las casuísticas más habituales dentro de las organizaciones:

Por lo tanto, la elección del motor de ejecución a desplegar y utilizar en nuestros procesos de ingesta será un Self-hosted IR.

Modelo de despliegue de los Self-Hosted IRs

Un Integration Runtime autogestionado puede ser desplegado en dos posibles ubicaciones, dependiendo de la naturaleza de los datos que se utilicen en los procesos de transferencia de información:

En base a las diferentes necesidades de ingesta de información, se pueden presentar 3 posibles escenarios de despliegue dentro de una organización:

Teniendo en cuenta el caso de uso inicial del post de ingestar y mover datos entre entornos híbridos, el escenario idóneo para este tipo de situaciones es el Escenario 3, siendo la posible arquitectura la que se muestra en la siguiente imagen:

Arquitectura de los Self-Hosted IR desplegados en entornos híbridos.
Arquitectura de los Self-Hosted IR desplegados en entornos híbridos.

Modo de utilización de los Self-Hosted IRs

Es muy importante seleccionar de forma adecuada el motor de ejecución sobre el que correrán nuestros procesos de movimientos de datos. Cuándo utilizar uno u otro dependerá del origen y el destino de los procesos de transferencia de datos, tal y como se ilustra en la siguiente figura:

Uso de Self-Hosted IRs en los procesos de movimiento de datos.
Uso de Self-Hosted IRs en los procesos de movimiento de datos.

Conclusiones

Tal y como acabamos de ver, el Integration Runtime es el corazón de los procesos de ingestión desarrollados en Azure Data Factory. Elegir el tipo de IR adecuado para desplegar y/o utilizar es una decisión muy importante que debemos tomar antes de comenzar a desarrollar nuestros procesos de movimientos de datos.

No hacerlo de la forma adecuada podría suponer:

En posts posteriores describiremos los pasos que son necesarios llevar a cabo para la instalación de un Self-Hosted Integration Runtime dentro de una máquina virtual y cómo conectarse a los orígenes de datos.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.