Pasar al contenido principal
Cargando...

Procesado de datos con Spring Cloud

Inspiring technology by Hunters

En Altia hemos diseñado varios programas para que las personas que estén terminando su carrera o sean recién tituladas puedan iniciarse en el sector IT, sumando su talento y pasión por la tecnología. Uno de ellos es Hunters: personas que les gustan las tendencias, tienen alma innovadora y contribuyen a anticipar los retos del futuro. Formar parte de Hunters es formar parte de un grupo transversal con capacidad de generar y transferir conocimiento. Parte de este conocimiento lo compartimos a través de estos artículos sobre tendencia y tecnología, como el que hablaremos hoy, Spring Data Flow.

Es una herramienta de Spring Cloud para procesado de datos en Streaming o en Batch utilizando tareas programadas. La idea es tener una serie de microservicios desplegados en una plataforma (Kubernetes, por ejemplo) que forman un pipeline de procesado de datos.

¿Qué ventajas tiene utilizar esta tecnología?

Spring Cloud Data Flow es una plataforma para crear pipelines de procesado de datos, desarrollada en Spring Boot bajo la plataforma Spring Cloud. Esta permite, entre otras cosas:

  • Despliegues en local para hacer pruebas de pipelines, pudiendo hacerlo como aplicación normal o dockerizada.
  • Despliegue en Cloud en cluster de Kubernetes, mediante Helm o como una aplicación más. Interactuará con Kubernetes para gestionar el despliegue de tareas programadas como cron-jobs, usando un docker registry como fuente origen de las imágenes para desplegar los jobs como contenedores.
  • Dispone de una consola web que permite la visualización y gestión de los pipelines.
  • Se integra con plataformas de seguridad OAuth.
  • Permite integración con plataformas CI/CD a través de su API Rest.
  • Oficialmente soporta las plataformas de Kubernetes y Cloud Foundry, pero hay proyectos de comunidades que soportan OpenShift, Nomad y Apache Mesos.

¿Cómo es su arquitectura?

Spring Cloud Data Flow tiene dos pilares fundamentales:

Procesado de StreamsSirve para ejecución de trabajos de ETL en tiempo real basados en ejecución de tareas dentro de un pipeline donde cada etapa es una aplicación independiente y que se comunican a través de eventos (Kafka o Rabbit).

Se distinguen tres tipos de nodos:

  • Source: Los que reaccionan ante un evento e inician el procesado.
  • Processor: Son transformaciones y procesados que se hacen sobre el evento liberado por los Source.
  • Sink: Son nodos finales, reciben datos de los processors y generan información final.
Esquema de un Stream

Figura 1: Esquema de un Stream.

Procesado BatchEn este caso, los microservicios desarrollados deben ir dejando resultados de la ejecución para su monitorización. Dichos microservicios se desarrollan bajo las plataformas de Spring Cloud Task y Spring Cloud Batch.

Se distinguen 3 entidades básicas:

  • Task: Procesos de corta duración que se ejecutan en microservicios.
  • Job: Entidades que encapsulan una serie de pasos o Steps (al menos 1) que constituyen el procesado batch.  
  • Step: Objeto de dominio que encapsula una fase secuencial dentro de un proceso batch. Cada Step tiene un ItemReader, un ItemProcessor y un ItemWriter.
Esquema de un Batch

Figura 2: Esquema de un Batch.

Spring Cloud Data Flow despliega como un microservicio más, aunque dispone de permisos para acceder a la plataforma donde ha sido desplegado, lo que le permite ejecutar despliegues y planificar trabajos. Esto es posible gracias al módulo de Service Provider Iterface, que trae por defecto mecanismos para conectar a Kubernetes y Cloud Foundry.

Spring Cloud Data Flow permite integrarse dentro de flujos de Integración y Despliegue Continuos gracias a su api REST. El esquema de integración quedaría como sigue:

Despliegue en CICD

Figura 3: Despliegue en CICD.

¿Quieres saber más sobre Hunters?

Ser un hunter es aceptar el reto de probar nuevas soluciones que aporten resultados diferenciales. Únete al programa Hunters y forma parte de un grupo transversal con capacidad de generar y transferir conocimiento. Anticípate a las soluciones digitales que nos harán crecer.

Consulta más información sobre Hunters.

LinkedIn José Luis Antón Bueso

José Luis Antón Bueso

Solution Architect en Altia