El Coreógrafo TrustCloud brinda flexibilidad, seguridad y resistencia ante los eventos adversos para cualquier sector empresarial.
Coreógrafos: La clave para evitar el Vendor Lock-in
En una situación de vendor lock-in o secuestro por parte de un proveedor tecnológico, en la que una empresa dependa de manera significativa de un fabricante de tecnología y no tenga capacidad para migrar a otro, un enfoque basado en coreografía puede ser la solución. Esta alternativa supone un avance en comparación con la orquestación de servicios, por lo que conviene conocer las diferencias fundamentales entre ambas.
P
otenciar la flexibilidad con una arquitectura de microservicios
A medida que más empresas adoptan arquitecturas de microservicios, los desarrolladores se ven cada vez más expuestos a los conceptos de orquestación y coreografía, ya que deben comprender y elegir la estrategia adecuada para coordinar la interacción entre los microservicios en sus aplicaciones. Cada microservicio se enfoca en una función específica y se comunica con otros servicios a través de señales bien definidas. Cualquier plataforma o aplicación es susceptible de aprovecharse de esta visión en la que cada microservicio se ocupa de una función específica: desde el acceso de empleados a las notificaciones, la facturación o la gestión de perfiles.
La idea detrás de los microservicios es descomponer una aplicación en partes más pequeñas y autónomas, lo que permite que se desplieguen de manera independiente, aportando flexibilidad, agilidad y escalabilidad. Del modo en el que se decida organizar esta arquitectura dependerá no solo la evolución del sistema, sino la fortaleza de la empresa a la hora de afrontar un bloqueo de proveedores o vendor lock-in.
La apuesta cada vez más popular de las tecnológicas por alojar los servicios en la nube se beneficia de la arquitectura de microservicios de múltiples maneras, si bien es fundamental elegir sabiamente cómo coordinar las interacciones entre ellos: mediante la orquestación o la coreografía.
Orquestación: gestión centralizada
La orquestación implica tener un componente centralizado, conocido como orquestador o director de orquesta, que coordina y controla la ejecución de los diferentes microservicios. Fundamentalmente, el orquestador se encarga de gestionar las señales entre los servicios, decidiendo cuándo y cómo deben interactuar. Es el encargado de asegurar la sincronización y secuencia correcta de las operaciones, garantizando así un funcionamiento fluido y coherente del sistema. El orquestador se responsabiliza de leer una necesidad e invocar un servicio. A partir de ahí recibirá una respuesta, la cual determinará cuál es el siguiente paso. En base al resultado obtenido, el orquestador invocará un nuevo servicio, si procede. Todas las fases del proceso se gestionan con llamadas a los diferentes microservicios que pasan por el director.
La ventaja más notable de este modo de entender la arquitectura de servicios tecnológicos es que simplifica la monitorización y el control de los procesos. Al tener un punto centralizado de coordinación, es más fácil supervisar y gestionar las interacciones, así como obtener una visión global y extraer información en tiempo real sobre estado y rendimiento.
Además, al tener un orquestador que controla el flujo de ejecución, la complejidad general del sistema se reduce. En lugar de tener que coordinar y sincronizar directamente cada uno de los servicios de modo individual, el orquestador se encarga de manejar estas tareas. Esto simplifica tanto la puesta en marcha como el mantenimiento, ya que los desarrolladores pueden concentrarse en la funcionalidad de cada servicio sin tener que preocuparse tanto por la coordinación entre ellos.
Si el modelo de interacción entre los servicios es transaccional, es decir, si se realizan operaciones que deben ser consistentes y reversibles en caso de error, el orquestador podrá manejar puntos de excepción o ruptura de procesos. Esto significa que, si ocurre una fallo o interrupción en algún punto, el orquestador puede establecer mecanismos de recuperación y reintento de la transacción para asegurar la integridad de los datos y mantener la consistencia de los sistemas.
El orquestador controla las interacciones, ya que es el que “conoce” las particularidades de cada tarea necesaria para resolver los procesos. Por ejemplo, en un flujo de trabajo que involucre la video identificación, la firma de documentación y la generación de activos digitales, o en el caso de un proceso de compra en el que el pago y el reparto pertenezcan a actores diferentes, el orquestador garantiza que cada paso se realice en el orden adecuado y que se notifique al cliente en cada etapa. Entre paso y paso, se “lanzan” los eventos, que son aprobados por el orquestador, dando paso al siguiente.
Sin embargo, es importante tener en cuenta que esta dependencia del orquestador puede generar vulnerabilidades si no se manejan correctamente los puntos de ruptura. También puede haber afectaciones en el conjunto si el orquestador falla o experimenta problemas.
Coreografía: colaboración e independencia
La coreografía, en cambio, es un enfoque distinto que define la forma en que los diferentes microservicios interactúan y coordinan sus acciones. En lugar de depender de un controlador centralizado, la coordinación se logra a través de un conjunto de señales o eventos predefinidos.
Estas señales o eventos actúan como mensajes que los microservicios utilizan para comunicarse entre sí. Cada uno de ellos puede enviar o recibir estas señales, lo que les permite tomar decisiones y realizar acciones en función de la información que reciben de los demás. Los elementos se comunican entre sí o bien depositan los mensajes en una zona pública desde la que el resto de los servicios puede “recogerlos”.
La característica clave de la coreografía es que se sostiene en la descentralización. Cada microservicio trabaja de forma independiente y autónoma, tomando sus propias decisiones basadas en las señales que recibe. No hay un componente centralizado que coordine directamente las acciones, lo que permite una mayor flexibilidad y agilidad en el sistema.
Esta planificación que parte de la colaboración y la interacción entre los propios microservicios puede resultar en un sistema más distribuido y resiliente, ya que no existe un cuello de botella que favorezca los errores. Además, si un microservicio está recibiendo una alta carga de trabajo, se puede escalar horizontalmente agregando más instancias o solicitudes de ese microservicio específico sin afectar el rendimiento general del sistema. Tampoco afecta al conjunto del sistema que la empresa decida agregar, modificar o reemplazar microservicios.
Otra de las particularidades más importantes de la coreografía es la asincronicidad. Es decir, cuando un microservicio envía un mensaje o evento a otro, el emisor puede seguir trabajando sin esperar respuesta. En un modelo de comunicación sincrónica, el emisor podría bloquearse si el microservicio receptor tarda en contestar.
Patricia Bazán, profesora en la Universidad Nacional de La Plata y experta en informática y desarrollo de software, resume en 4 bloques las principales diferencias entre orquestador y coreógrafo1:
- Objetivo:
– Orquestador: Componer servicios dentro de una misma organización para cumplir con un proceso de negocio específico.
– Coreógrafo: Componer servicios para la colaboración entre diferentes organizaciones.
- Modelo:
– Orquestador: Jerárquico (pregunta – respuesta).
– Coreógrafo: Peer to peer (entre iguales).
- Enfoque:
– Orquestador: Componer servicios y el orden en que son ejecutados para alcanzar el objetivo de un proceso de negocio.
– Coreógrafo: Definir la manera en que múltiples partes colaboran para conformar una transacción de negocio.
- Fundamento:
– Orquestador: Constituye un servicio en sí mismo.
– Coreógrafo: Define la interacción entre servicios.
Huelga decir que las empresas que se apoyen en cloud computing pueden optar por un enfoque híbrido, que combine tanto el uso de un orquestador como la coreografía. El orquestador podría coordinar y controlar ciertos aspectos del flujo de trabajo, mientras que la coreografía se emplearía para permitir la colaboración y la comunicación entre los microservicios de manera distribuida. El orquestador puede ser especialmente útil cuando existen dependencias o reglas estrictas que deben cumplirse en el proceso y el coreógrafo en aquellas fases que exigen acciones rápidas y directas.
Evitar dependencias y bloqueos
A la hora de acudir a una solución que mitigue o evite la dependencia de un proveedor o vendor lock-in conviene hacer ciertas consideraciones, como en qué enfoque de los estudiados se basa esta solución y cuál es el más adecuado.
Con una solución de coreografía, cada microservicio puede ser reemplazado o actualizado de forma independiente, sin afectar a todo el sistema. Esto significa que, si se necesita hacer cambios o sustituciones, se puede hacer sin afectar la funcionalidad general del sistema. En una solución de orquestación, los microservicios están estrechamente acoplados al orquestador, lo que dificulta la sustitución o actualización individual de los componentes sin afectar el sistema en su conjunto.
Es probable que la orquestación provoque que la organización afectada vuelva al punto de partida, atándola al proveedor específico que proporciona el orquestador. Sin embargo, la coreografía, orquestador de orquestadores, al permitir que cada microservicio funcione de manera independiente, sin depender de un proveedor en especial, evitará el secuestro y brindará más libertad a la empresa para elegir y cambiar los proveedores de servicios individuales según sea necesario.
1 La orquestación de servicios y las aplicaciones actuales | Patricia Bazán. Editorial de la Universidad Nacional de La Plata, EDULP. 2021