La integridad en la ejecución de un proceso se hace imprescindible al trabajar en entornos donde cada vez necesitamos procesar más información, hacerlo en menos tiempo y con garantías.

Ya sea la ejecución de procesos periódicos, como la emisión de facturas, la interconexión entre dispositivos (el Internet de las cosas), o la puesta en marcha de una campaña de marketing, es fundamental poder garantizar que los datos no se pierdan.

Algunos de los motivos por los que se pueden producir fallos en la ejecución de un proceso son las caídas de la red, un fallo de software o un problema de hardware.

Para mitigar cualquiera de estos contratiempos es necesario definir sistemas que nos permitan asegurar la información de forma eficiente.

Existen numerosas alternativas para conseguir un sistema con la información persistida, si bien suelen representar una sobrecarga tanto en los diseños como a nivel computacional.

Lo ideal es poder disponer de un sistema que garantice esta persistencia de forma ligera y optimizada al diseño de tus procesos.

Tolerancia a fallos en Mule

Con el ánimo de potenciar la plataforma de integración de Mule, en Hawkore decidimos desarrollar una nueva solución que fuese un paso más allá de las alternativas existentes.

Como explicamos en la entrada de Alta disponibilidad y Mule, a fin de trabajar con la versión de Mule comunidad en alta disponibilidad, con escalabilidad horizontal, procesamiento distribuido, tolerancia a fallos y persistencia, fusionamos los beneficios de Apache Ignite a los de Mule.

Ni en la versión comunidad, ni en la versión Enterprise de Mule, existen soluciones de fábrica que garanticen tolerancia a fallos. Aunque hay varias formas de conseguirlo.

Una de ellas es modificar el diseño de los procesos para utilizar una fuente de almacenamiento externa, una solución que plantea una serie de inconvenientes como el impacto en desarrollos existentes o la dificultad de coordinar actualizaciones de los datos.

Nuestra alternativa se basa en estructuras distribuidas en clúster para repartir cargas de trabajo, almacenar datos y coordinar procesos, que se integran en el core de Mule (comunidad o Enterprise) de forma transparente y sin impactar en tus desarrollos.

Además, estas estructuras distribuidas soportan persistencia de forma nativa gracias a Apache Ignite, lo que proporciona una alta tolerancia a fallos y simplifica tus diseños al no necesitar integrarse con un sistema de almacenamiento externo (BBDD, colas…)

Con nuestra solución, al trabajar con estructuras de datos de Apache Ignite con persistencia nativa activa, podemos disfrutar de la tranquilidad de saber que los datos estarán siempre persistidos.