Divide y vencerás

Esta vez quiero compartir con vosotros la arquitectura de un proyecto muy interesante en el que estoy participando.

El problema:  El proceso ETL tarda demasiado. El proceso de integración de datos tarda mucho porque  hay algunas partes del proceso que manipulan imágenes y esto hace que el proceso sea tan lento que resulta inútil.

Imagen eliminada.


La solución: Divide y vencerás (Nada nuevo bajo el sol.... también es cierto...). Dado que, lo que ralentiza todo el flujo, es el procesado de imágenes. Se ha dividido el proceso ETL en dos partes:

  • La primera parte del proceso realiza todas las operaciones necesarias excepto el manipulado de imágenes y deja los registros en una cola ( RabbitMQ )
  • La segunda parte, recoge los registros de la cola, procesa las imágenes e inserta los datos en la base de datos de destino.
La ventaja: Puedo tener tantas fases II cómo necesite  que me permitan procesar los datos en paralelo  y limitar el tiempo total del proceso!



Imagen eliminada.
Este enfoque nos ha permitido reducir drásticamente el tiempo de ejecución del proceso ETL levantando tantos procesadores de Fase II cómo necesitemos. Así si hay pocos mensajes en la cosa, tan sólo tenemos un único proceso de Fase II (Tampoco hay que tener procesadores soñando con objas electrónicas ). Si la cola se satura... levantamos tantos procesadores de Fase II cómo consideremos oportuno 


Ya se que no es nada nuevo, pero me ha gustado compartir la arquitectura de este proyecto con vosotros.
Por cierto... La arquitectura me la propuso el propio cliente... (Al césar lo que es del césar )