Paseo por las Arquitecturas de Integración

Introducción

Actualmente es muy sonado el mundo de las APIS y el API Management, pero vamos a ver cómo hemos llegado hasta ahí, es decir, vamos a tratar un poco la evolución histórica de las diferentes tecnologías de integración. Creo además que siempre nos ayuda a tener una mejor visión del porqué de las cosas, si conocemos de dónde venimos.

Las diferentes Arquitecturas de Integración, digamos que se pueden clasificar en 4 tipos:

  • Data Integration: Es el proceso de combinar datos desde distintas fuentes en una única visión unificada. Va un poco ligado al Big Data y Business Intelligence. Se trata la réplica de datos y sincronización, ficheros batch y transferencia de ficheros como CSVs.
  • Application Integration: Es el proceso donde diferentes aplicaciones independientes trabajen juntas y se pide a las aplicaciones la información a través del canal middleware típicamente, con transformaciones y enriqueciendo la información. Se trata con arquitecturas más típicas y antiguas como es SOA con ESB y ficheros XML o más moderna como las de APIs y microservicios con API Management y ficheros JSON, transferencia de mensajes y B2B (Business to Business)
  • Event Driven Integration: La integración por eventos es el proceso que se desencadena tras un evento en un sistema típicamente asíncrono. Va ligado sobre todo a IoT (Internet of Things). Trata sobre todo con arquitecturas de Eventos (EDA), mensajes streaming (ej. Kafka)
  • Process Integration: Es el proceso que se propaga a través de múltiples sistemas con una orquestación típica en el canal MDW de los objetos de negocio. Trata con procesos BPM, con flujos humanos e incluso procesos repetitivos.

Demos un repaso a las principales técnicas de integración, con estándares y protocolos que se usan.

  • B2B EDI – Business To Business Electronic Data Interchange: Está funcionando desde los años 70 como la integración más antigua. Se trata de un conjunto de formatos/estándares universales para interacción entre organismos, donde tenemos como protocolos más conocidos el EDIFACT y el ASC X12.
  • B2B MFT – Business To Business Managed File Transfer: Formatos definidos entre consumidores y proveedores para el intercambio de ficheros grandes. Tenemos como protocolos estándares FTP, SFTP y FTPS.
  • Messaging: Es la base fundamental para las Arquitecturas dirigidas a Eventos. Los protocolos más conocidos son JMS y AMQP.
  • SOA/ESB – Service Oriented Architecture/Enterprise Service Bus: Empezó sobre los años 2000 como un patron para exponer servicios usando el protocolo SOAP y WSDL como estándar para los mensajes XML de entrada y salida de los ESB
  • APIs: Es la evolución natural de los servicios web, que comenzó a partir del 2010 a usarse y se hizo masivo desde 2015. Su uso no es único para comunicar aplicaciones internas, sino también para la comunicación B2B entre partners. Es mucho más ligero SOA y utiliza el formato estándar de diseño REST/JSON frente al SOAP/XML, con la seguridad Oauth 2.0 como framework de seguridad.
  • IoT – Internet Of Things: El Internet de las Cosas se basa principalmente en dispositivos que envían eventos a diferentes plataformas que los guardan y reaccionan en tiempo real. Se basa en los protocoles y estándares como MQTT y AMQP.
  • Data Integration: Utilizando técnicas de ETL y ELT (Extract/Transform/Load – Extract/Load/Transform) para eventos y/o tiempo real con integraciones de bases de datos. Se basa en protocoles y estándares como FTP, JMS y AMQP.

Integraciones Clásicas

EDI: Electronic Data Interchange

Surgió en los años 70 como un sistema de comunicación que permite intercambiar cualquier tipo de documento electrónico (pedidos, albaranes, facturas, inventarios, catálogos de precios, etc.), todo con un formato normalizado entre los sistemas/empresas de quienes intervienen.

Al final este formato es único y de común acuerdo entre los diferentes intervinientes, donde algunos de los estándares más extendidos son el uso de código de barras, el ASC X12 y el EDIFACT.

Es el primer protocolo de estandarización de comunicaciones electrónicas entre empresas.

Algunas de sus características son:

  • Rapidez: permite la automatización de procesos que reducen significativamente, si no eliminan, los retrasos de tiempo asociados con el procesamiento manual que requiere del ingreso, archivado y comparación datos. La gestión de inventarios se agiliza y se vuelve más eficiente con actualizaciones de datos en tiempo real.
  • Precisión: Aparte de su ineficiencia, los procesos manuales también son muy propensos a errores, a menudo como resultado de una escritura ilegible, errores de tecleo y re-tecleo y manejo incorrecto de documentos. EDI mejora drásticamente la calidad de los datos de una organización y elimina la necesidad de volver a trabajar en las órdenes al reducir las transacciones con errores.
  • Eficiencia empresarial: EDI mejora la gestión de relaciones con clientes y socios comerciales de una organización debido a una entrega más rápida de bienes y servicios.
  • Seguridad: EDI mejora la seguridad de las transacciones al compartir datos de forma segura a través de una amplia variedad de protocolos de comunicación y estándares de seguridad.

ESB: Enterprise Service Bus

Permite comunicar aplicaciones que inicialmente no estaban pensadas para comunicarse entre ellas. ESB permite ofrecer una plataforma común con capacidades y el uso de:

  • Escalabilidad
  • Desacoplamiento
  • Enrutamiento y mediación
  • Orquestación
  • Estándares y protocolos XML, JMS, SOA, REST…

Nacieron para evitar el código espagueti de los EDI y las conexiones punto a punto, lo cual generaba una gran “maraña” de conexiones poco reutilizables haciendo muy complejas las arquitecturas de red de una empresa.

Algo que no terminó de funcionar muy bien con los ESB es quien está consumiendo qué servicios, es decir, la autenticación/autorización, ya que resultaba muy compleja.

Lo bueno de los ESBs es que canalizaban todas las comunicaciones de una empresa a través de un mismo canal, gracias a su gran flexibilidad y adaptación antes los diferentes patrones de intercambio de mensajes

Algunas de sus características son:

- Estandarización: se pueden desarrollar marcos, patrones y mejores prácticas para crear servicios reutilizables.

- Bajo acoplamiento:

  • Físicamente: Mediante el uso de mecanismos de intercambio de mensajes (p. ej., JMS) frente a conexiones de red directas.
  • Semánticamente: Mediante el uso de la transformación de mensajes para que los servicios se expongan en un formato neutral del sistema que reduce el bloqueo de la aplicación y reduce el costo del cambio.

- Escalabilidad y confiabilidad: El acoplamiento flexible físico brinda ventajas de escalabilidad, como alta disponibilidad, tolerancia a fallos y equilibrio de carga.

- Enrutamiento y mediación.

- Patrones de intercambio de mensajes complejos: Permite intercambios de mensajes más complejos como la mensajería unidireccional asíncrona y a múltiples suscriptores.

MOM: Message Oriented Middleware

Al final es un concepto que aparecen por la necesidad de la asincronía que implica el intercambio de datos entre aplicaciones utilizando un canal de comunicación que transporta unidades de información independientes

Es una parte clave de las arquitecturas ESB, ya que proporciona los fundamentos de las redes y canales virtuales que un ESB usa para enrutar

Es la base para un patrón de asincronía con características de

  • Encolamiento de mensajes
  • Enrutamiento.
  • Transformación de mensajes.
  • Estándares AMQP y MQTT

Algunas de sus características son:

  • Asincronía: El modelo basado en mensajes, aunado a la mediación del proveedor, posibilita la creación de un sistema de componentes débilmente acoplados, reduciendo la latencia.
  • Enrutamiento: Muchas implementaciones de middleware orientadas a mensajes dependen de un sistema de cola de mensajes que hace uso de paradigmas de distribución de difusión o multidifusión.
  • Transformación: Un sistema MOM con inteligencia integrada puede transformar los mensajes en el camino para que coincidan con los requisitos del remitente o del destinatario.

MFT: Managed File Transfer

Permite la administración de transferencias de datos segura y de gran volumen entre empresas.

Es la alternativa a los protocolos FTP, SMTP o HTTP, que no permite su administración, gracias a que proporcionan un portal de administración con unas analíticas que fortalecen la tecnología y la dan una mayor seguridad.

Algunas de sus capacidades son:

  • Transferencia múltiple
  • Mecanismos de reintentos.
  • Seguridad del canal
  • Encriptación de datos
  • Automatización
  • Autenticación de usuarios
  • Trazabilidad

Algunas de sus características son:

  • Mayor compatibilidad con protocolos basados en Internet, como HTTP/S o AS2.
  • Aceleración de transferencia de archivos utilizando mecanismos internos (como la compresión de archivos) y nuevas capacidades tecnológicas (por ejemplo, sesiones pTCP o TCP paralelas).
  • Gestión de ancho de banda y prioridades a nivel de socio y transferencia.
  • Integración nativa con servicios de terceros (por ejemplo, gestión de identidad y acceso, antivirus, soluciones de protección contra pérdida de datos).
  • Capacidades de extensión para agregar nuevos protocolos o pasos de procesamiento como parte de la solución, de manera segura y sostenible.
  • Escalabilidad y HA para adaptarse a la creciente demanda y al servicio siempre activo.

Integración de datos

Está intrínsecamente relacionado con las diferentes herramientas que se pueden usar para recoger la información de diferentes fuentes y agruparla en una sola fuente, posiblemente transformando dicha información en un modelo común de datos.

Batch – ETL: Extract/Transform/Load

El patrón de integración de datos vía batch, también es conocido como ETL (Extract/Transform/Load), puesto que al final se recoge toda la información posible de diferentes fuentes (extract) que se transforma a un formato unificado y conocido como modelo común de datos (transform) y se guarda en otro sistema de almacenamiento (load).

Así este almacenamiento, puede ser explotado por otro sistema en forma de analíticas o para cualquier otra finalidad.

Algunas de las grandes ventajas a considerar son la gran cantidad de datos que se pueden procesar en un momento programado a través de un solo proceso. Esto promueve la eficiencia ya que evita tener que procesar datos cada vez que se reciben.

Este proceso puede llevarse a cabo en cualquier momento, incluso durante un tiempo en que el sistema informático esté inactivo, lo que permite a los operadores priorizar el tiempo de los lotes fácilmente.

En contraposición las desventajas que pueden asociarse son que la información se procesa a una hora programada y no en tiempo real, por lo que a veces pueden ocurrir retrasos en la actualización de las bases de datos maestras teniendo la información desactualizada en las mismas.

Dependiendo de las circunstancias, esto sería perjudicial en una situación en la que los datos deberían actualizarse de inmediato, por ejemplo, cuando se está reservando asientos en un avión.

Digital Lover

Tiempo real

El patrón de integración de datos en tiempo real o mejor dicho cerca a tiempo real, puesto que al final hay un pequeño lapso por el procesamiento de los mismos, es un patrón muy parecido al patrón Bath o ETL, donde la ingesta de datos se realiza a través de una cola.

El patrón CQRS – Command and Query Responsibility Segregation, se basa en segregar/separar la BBDD en 2, una donde dejas los datos transformados y otra BBDD para la realización de queries de analíticas y/o su explotación.

Una de las principales ventajas es que los datos se procesan inmediatamente lo cual es beneficioso ya que la información se actualiza lo antes posible y es ideal cuando se trata de reservas.

Este proceso no solo promueve la velocidad, sino que también garantiza que la información esté actualizada y no se retrase.

En contraposición, es un proceso muy costoso, ya que a menudo implica modificar las aplicaciones existentes para agregar la publicación de eventos en la cola siendo a veces ni siquiera posible, ya que el origen de la información puede ser una aplicación específica del proveedor que no incluye la capacidad de modificar su lógica para agregar la publicación de eventos.

EDA: Event Driven Architectures

Las arquitecturas dirigidas a eventos se basan en la asincronía y colas de mensajes principalmente, donde los componentes que se comunican entre ellos mediante mensajes con información, se pueden clasificar según su naturaleza en:

  • Eventos: Se manda una notificación de algún suceso, No espera una respuesta
  • Comandos: Se pide a un servicio que se ejecute una operación. Implica cambios síncronos en el sistema.
  • Queries: Se piden datos. No implica cambios en el sistema

Los patrones de comunicación son principalmente asíncronos y requieren una alta capacidad de escalar.

Las nuevas tecnologías como la programación reactiva, los microservicios o el procesamiento en streaming pueden implementar especialmente bien este tipo de arquitecturas.

Las características principales de una arquitectura dirigida a eventos son:

  • Performance, disponibilidad y escalabilidad: Gracias a su naturaleza asíncrona
  • Testeabilidad: La realización de pruebas integradas se complica por esa misma naturaleza asíncrona
  • Despliegue: Su facilidad de despliegue gracias al desacoplamiento de los microservicios es muy alta
  • Trazabilidad: Se vuelve una práctica compleja la trazabilidad End-To-End, si no disponemos de una buena política de logs
  • Desarrollo: Los procesadores de eventos deben vivir dentro de contextos de límites que no afecten al resto del sistema, pero los procesos asíncronos pueden ser difíciles de implementar
  • Contratos/Interfaces: La administración para asegurar que el modelo de contrato de eventos no se rompe entre las versiones podría ser un desafío.

Algunos de los principales patrones de una arquitectura dirigida a eventos son:

  • Publish/Subscribe: El publicador/productor de eventos, no conoce a los consumidores
  • Request/Response: El productor de eventos envía un mensaje al consumidor y espera su respuesta
  • Event-Carried State Transfer: Los datos de los eventos pueblan el repositorio local
  • Event-Sourcing: Se recopilan una serie de eventos para recuperar el estado del sistema
  • CQRS – Command and Query Responsibility Segregation: se basa en segregar/separar la BBDD en 2, una donde dejas los datos transformados y otra BBDD para la realización de queries de analíticas y/o su explotación.

Al final podemos identificar claramente 2 tipologías bien definidas como son

  • Topología Mediador
  • Topología Broker

EDA – Topología Mediador

Se trata de un servicio principal/central que controla la orden donde el “event mediator” recoge de una cola principal los eventos y es el servicio encargado de orquestar el flujo que sea necesario entre los diferentes procesos que han de intervenir, donde cada “event processor” ejecuta una tarea simple.

Al final es una topología para cuando hace falta algún nivel de orquestación entre llamadas.

EDA – Topología Broker

Se trata de una cola de mensajes como Broker, donde cada “event processor” consume un tipo de mensajes/eventos y publica un tipo diferente de mensajes/eventos, donde en contraposición a la “topología mediador”, no existe un mediador.

Hay una pieza que cuando se recibe el evento, lanza el evento a los distintos canales que deben recibir la señal.

API Management

API Managment se conforma principalmente de 3 grandes piezas:

  • El API Gateway: Es el runtime.
  • El API Manager: Es la administración y desarrollo de las API.
  • API Portal: Es donde se publican dichas API y se le da todas las facilidades posibles al consumidor de las APIs para su desarrollo e integración.

Algunos de los aceleradores que se proveen con API Management, frente a la integración tradicional de ESB son:

  • Un nuevo canal para dispositivos móviles con gran seguridad de Autenticación/Autorización (framework Oauth 2.0)
  • Un portal de acceso a los recursos/servicios que se ofrecen
  • Mayor facilidad y rapidez de implementación ante las regulaciones del estado (PSD2, GDPR, etc.)
  • Nuevo modelo de negocio, con la posibilidad de acceso al core del mismo
  • Una mayor facilidad de integración con terceros
  • Un modelo basado en API First, que favorece el Time To Marquet, y la rapidez con la que un nuevo producto se pone en producción
  • Algunos factores técnicos con los que se mejora la experiencia de usuario
  • Se reduce considerablemente el coste por su naturaleza autodescriptiva y de realización de las APIs

Las principales diferencias entre las integraciones más tradicionales o legacy y el API Management son:

  • Las más tradicionales, están orientadas a un mundo on-premise, con comunicaciones internas SOAP, MQ y con mensajes XML, orientadas a los servicios de negocio con transformaciones, mediaciones y servicios orquestados, una seguridad básica y que soporta diferentes modelos comunes con una misma tecnología mediante routing, custom call outs, BPMs...
  • El API Management está orientado al Cloud y una mensajería más externa REST, Open API y con formato JSON, orientado a productos y marcado por una estrategia con una seguridad mucho más avanzada y fiable con una administración de claves, patrones anti-Hacking, con un control del consumo y unas SLA con un precio. Además, las APIs tiene una naturaleza de autoservicio donde los desarrolladores/usuarios pueden ver a través del API Portal, todos los productos y servicios ofrecidos, con analíticas en tiempo real y una gran mejora en cuanto a la experiencia del usuario gracias al nivel 4 de madurez de Richardson (HATEOAS).

Como todo software, las APIs deben disponer de un gobierno para asegurar que todas cumplen con las especificaciones técnicas definidas por el departamento IT.

En las grandes compañías, hay como 3 fases o niveles:

  1. Centro de Competencia de Integración: Donde un equipo, por lo general de Arquitectura, centraliza la construcción de APIs que a medida que crece el número de APIs a implementar, se convierte en un cuello de botella
  2. Centro de Integración de Habilitación: Donde un equipo, por lo general el mismo de la primera fase, empieza a divulgar la cultura API First y se convierte en un equipo facilitador para conseguir que cada departamento o sector de la compañía empieza a interiorizarlas y crearlas
  3. Centro de Integración Federado para la Habilitación: Donde cada departamento o sector de la compañía, pone en común con el resto un conjunto de assets/activos y buenas prácticas para un modelo común de APIs dentro de toda la compañía.

Existen alternativas al API Managment más tradicional de REST + JSON como son:

GraphQL: Es un lenguaje de consulta para APIs, que proporciona una descripción completa y comprensible de los datos en su API y brinda a los clientes el poder pedir exactamente lo que necesitan y nada más. Está pensado para interacción en las consultas con las APIs. Por ejemplo, estandariza los nombres de los query parameters para que las aplicaciones consumidoras no tengan que adaptar los nombres dependiendo de la API a la que consultes (Paypal github – expone APIs GraphQL)

gRPC: Remote Procedure Call es un procedimiento donde una aplicación cliente puede llamar directamente a métodos de una aplicación servidor en una máquina diferente como si fuera un objeto local, facilitando así la creación de aplicaciones y servicios distribuidos. Está basado en el protocolo HTTP 2.0, permite comunicaciones más efectivas mediante dos interlocutores conocidos y normalmente se utiliza de forma interna para mejorar el performance, tratando el dato a nivel binario y reduciendo al máximo los bits enviados en la comunicación.

Webhooks: También llamados Reverse APIs, donde el servidor notifica a través de una url de callback registrada, el cambio de un estado al cliente

WebSockets: Proporciona un canal de comunicación bidireccional sobre un único socket TCP

CloudEvents: Es una especificación que describe de forma común y genérica los eventos de datos

AsyncAPI: Es una especificación que describe de forma común y genérica los mensajes de APIs asíncronas. Es un nuevo paradigma vinculado a las arquitecturas EDA (Event Driven Architectures).

Service Mesh

Service Mesh complementa las características de Kubernetes, proporcionando un proxy que simplifica las comunicaciones entre microservicios (tráfico este-oeste).

Apareció cuando la tecnología API Gateway tradicional era demasiado pesada para las comunicaciones de microservicio a microservicio, proporcionando un equilibrio de carga automático, reglas de enrutamiento enriquecidas, reintentos, conmutación por error, una capa de política conectable, métricas automáticas, comunicaciones seguras de servicio a servicio, etc.

Algunos ejemplos de soluciones de malla de servicios: Istio y Linkerd.

Algunos vendors de API Management proporcionan adaptadores para Istio, que se pueden usar para administrar los servicios expuestos fuera de la malla de servicios de Istio o entre servicios que se ejecutan completamente dentro de la malla.

IoT: Internet of Things

El Internet de las cosas (IoT) es un sistema de dispositivos interrelacionados que cuentan con identificadores únicos y la capacidad de transferir datos a través de una red sin necesidad de interacción humana

Algunos de los desafíos a los que se deben enfrentar son:

  • La falta de protocolos estandarizados
  • La seguridad en los dispositivos
  • Redes IoT descentralizadas para evitar cuellos de botella
  • La lenta adopción de las nuevas tecnologías y sus leyes y regulaciones con ellas asociadas

Una plataforma de dispositivos IoT, se caracteriza a alto nivel por 4 capas:

  • Things: La capa de las “cosas”, los dispositivos (Wearables, Sensores, cámaras...)
  • Connectivity: La capa de la “conectividad”, el IoT Gateway donde se conectan los dispositivos a través de diversos protocolos
  • IoT Platform features: La capa de las “características de la plataforma IoT”, donde estan las diversas capacidades que la plataforma IoT provee (transformaciones, administración de identidades, colección de datos ...)
  • Apps & Analytics: La capa de las “Aplicaciones y las Analíticas” donde se explota mediante ciertas aplicaciones y analíticas todos los datos recopilados por las “cosas”, los dispositivos

Algunos de los estándares técnicos usados por las diferentes plataformas de integración son:

  • Infrastructure: IPv4, IPv6, UDP…
  • Identification: URIs, EPC, IPv6
  • Comms/Transport: Ethernet, IEEE 802.15.4, Bluetooth, LPWAN
  • Discovery: DNS, UPnP
  • Data Protocols: MQTT, HTTP, XMPP, REST
  • Device Management: TR-069, OMA-DM
  • Semantic: Web Thing Model, SensorML, RAML
  • Multi-Layer: Telehash, Weave, Alljoyn
  • Security: X.509, Open Trust Protocol, OAuth 2.0

iPaaS: Integration Platform as a Service

Según Gartner, la plataforma de integración como servicio (iPaaS) es “un conjunto de servicios en la nube que permite el desarrollo, la ejecución y la gobernanza de los flujos de integración que conectan cualquier combinación de procesos, servicios, aplicaciones y datos locales y basados en la nube dentro de un individuo o entre múltiples organizaciones”.

Una plataforma de integración híbrida combina capacidades de integración local y en la nube, tales como: integración de datos (ETL, en tiempo real), integración de aplicaciones, B2B EDI, MFT, mensajería, IoT o administración de API. Como regla general, los artefactos de integración deben implementarse lo más cerca posible a los datos.

Data Hub vs Data Lake

Un Data Hub iPaaS está “basado en una arquitectura de centro de datos. La plataforma admite la integración entre las aplicaciones y los puntos finales del sistema a través de un almacén intermediario centralizado que conserva los datos (a menudo normalizados) antes de la entrega al destino”.

Un Data Hub admite datos de todo tipo (relacionales y NoSQL), se centra en la armonización de datos y proporciona funciones de indexación y búsqueda. Los datos se mueven físicamente y se reindexan en un nuevo sistema.

En un Data Lake todos los datos se mueven de silos dispares a un solo sistema, pero rara vez se armonizan o indexan.

Conclusiones - Futuro

El futuro de las arquitecturas de integración es prometedor debido a la creciente necesidad de integrar diferentes sistemas y aplicaciones. A medida que las empresas buscan mejorar su eficiencia y agilidad, las arquitecturas de integración se convierten en una herramienta clave para lograr estos objetivos.

Por ende y bajo mi punto de vista, en el futuro de las arquitecturas de integración se incluye:

  • Mayor adopción de la nube: Cada vez más empresas están migrando sus sistemas y aplicaciones a la nube, lo que significa que las arquitecturas de integración basadas en la nube serán cada vez más importantes.
  • Mayor uso de soluciones de código abierto: Las soluciones de código abierto como Apache Kafka y Apache Camel están ganando popularidad en el mercado debido a su flexibilidad y capacidad de integración con diferentes sistemas.
  • Aumento del uso de tecnologías sin servidor: Las arquitecturas sin servidor se están convirtiendo en una opción popular para la integración debido a su capacidad para escalar automáticamente según las necesidades de la empresa.
  • Mayor énfasis en la seguridad: Con el aumento de los ataques cibernéticos, la seguridad se ha convertido en una preocupación crítica para las empresas. Las arquitecturas de integración deben ser seguras y proteger la información confidencial.
  • Mayor importancia de la analítica de datos: Las arquitecturas de integración deben permitir el acceso y análisis de datos para ayudar a las empresas a tomar decisiones informadas y mejorar sus operaciones.

En resumen, el futuro de las arquitecturas de integración es prometedor y seguirá evolucionando para satisfacer las necesidades cambiantes de las empresas y los avances tecnológicos.

 

 

 

He leído y acepto la política de privacidad
Acepto recibir emails sobre actividades de recruiting NTT DATA