Microservice Orchestration (Netflix Conductor)

Microservice Orchestration (Netflix Conductor)

Hoy me gustaría presentar un servicio de orquestación que podrá ser de mucha ayuda en la construcción de nuestros Microservice. Parto con la premisa que un servicio de orquestación debe ser rápido, simple, dinámico, pequeño, configurable, fácil de usar, con gran performance de trabajo y un largo etc… En el siguiente diagrama, presento lo que para mí debería ser una arquitectura orientada a orquestación de Microservice:

Microservice Orchestration

Dentro del paquete de productos que ha desarrollado Netflix (Netflix OSS), tenemos a Conductor una más que interesante propuesta, un poco grande quizás para primeras cargas basadas en orquestación pero, a tener muy en cuenta.

Conductor implementa la orquestación de llamadas a múltiples Microservice, de ésta forma, podremos obtener aquellas funcionalidades que necesitemos sin tener que realizar una multitud de llamadas. Algunos ejemplos pueden ser:

  • Insertar accesos a tablas de auditoría,
  • Poder consultar informaciones para recuperar procesos de login,
  • Facilitar el control y la visualización de interacciones entre otros microservicios,
  • Facilitar los Procesos de ingestión de la información,
  • etc…

Es interesante el tener en cuenta que, por defecto, se propone la arquitectura de forma asíncrona, aunque se puede realizar de forma síncrona si lo creemos necesario.

Netflix Conductor Architecture

La arquitectura de Netflix Conductor está basada en cuatro grandes bloques, expliquemos brevemente cada uno de ellos. Veamos:

  • Workflows: permite la gestión de los datos tanto como la ejecución de los flujos.
  • Metadata: permite la gestión de la definición de los flujos y las tareas asociadas.
  • Tasks: permite la gestión de los datos que están en ejecución en los flujos.
  • Admin: es una API de administración que nos permite la recuperación tanto de los datos de configuración, como para poder purgar los flujos gestionados y la recuperación de todas las tareas en curso.

Una de las grandes ventajas de la existencia de Netflix Conductor es el mero hecho de poder realizar la orquestación de microservicios facilitando, a la vez, la creación de flujos de trabajo. Dichos se diseñan de una forma muy sencilla mediante ficheros JSON. Cierto es que, por ahora, Conductor no contempla la creación mediante entorno gráfico pero si la visualización de los flujos.

Por lo que respecta a las Tareas, éstas deben construirse reviamente a su uso dentro de algunos de los flujos que podamos tener. Podremos hacerlo mediante parametrización o bien, utilizando el API REST de gestión de Metadata. De tareas tenemos:

  • Tareas de Sistema: aquellas enfocadas al control de los flujos o bien,
  • Tareas Simples: aquellas tareas que han sido diseñadas para ser ejecutadas fuera de Conductor. Las tareas se comunican con Conductor mediante un sistema de polling y, finalizada su ejecución, devuelven el estado actualizado para continuar con el flujo.

Conductor permite implementar de forma sencilla flujos para el intercambio de datos. Podemos decir que existen dos contextos grandes usos: para workflow o para tareas (task). El flujo tendrá unos datos de entrada, que podrá propagar a las distintas actividades que lo formen ya sea a través de los parámetros de entrada de las tareas o a los datos de salida, tanto a nivel de tarea como de flujo.

Para facilitarnos la vida, Netflix ha publicado un Docker donde en minutos podremos tener la solución de Conductor y validarla, también, podemos descubrir más en: https://www.slideshare.net/virenx/netflix-conductor

Autor: Joakim Vivas

comments powered by Disqus