Conceptos introductorios al diseño de Servicios SOA
Integración de Aplicaciones
1. Java Developers Mexico https://www.facebook.com/JavaDevelopersMexico
Integración de Aplicaciones
Comunicación Síncrona vs. Asíncrona en la Integración de Aplicaciones
¿Qué es la Integración de Aplicaciones?
La integración de aplicaciones (o integración de aplicaciones empresariales) es la compartición de
procesos y datos entre diferentes aplicaciones en una empresa. Para pequeñas y grandes
organizaciones por igual, ha llegado a ser una prioridad de misión crítica conectar aplicaciones
dispares y aprovechar la colaboración de aplicaciones a través de la empresa con el fin de mejorar
la eficiencia general del negocio, incrementar la escalabilidad, y reducir los costos de IT.
Antes de arquitectar una solución de integración de aplicaciones, sin embargo, es crucial
comprender los diferentes niveles de integración y en particular, cómo son intercambiados los
mensajes en un entorno de integración de aplicaciones. Este artículo proporciona una vista general
de los diferentes niveles de integración - el nivel de presentación, el nivel de procesos de negocio,
el nivel de datos, y el nivel de comunicaciones - y luego examina la integración del nivel de
comunicaciones en más detalle con una discusión de comunicación síncrona o asíncrona.
Los Diferentes Niveles de Integración de Aplicaciones
Hay cuatro diferentes niveles de integración de aplicaciones. En el nivel de presentación, la
integración es llevada a cabo presentando algunas aplicaciones diferentes como una sola
aplicación con una sola interfaz de usuario (UI). También conocida como “screen scraping,” este
viejo enfoque a la integración involucra usar tecnología de middleware para recolectar la
información que un usuario ingresa en una página web o alguna otra interfaz de usuario o alguna
otra interfaz. La integración a nivel de presentación fue usada anteriormente para integrar
aplicaciones que no podrían ser conectadas de otra forma, pero la tecnología de integración de
aplicaciones ha estado involucrada y ha llegado a ser más sofisticada, haciendo que este enfoque
sea menos frecuente.
Con la integración de procesos de negocio, los procesos lógicos requirieron una empresa para
llevar sus negocios a sus activos de TI, lo cual ofrece residir en diferentes partes de la empresa y
de forma creciente, la nube. Identificando acciones individuales en un workflow y enfocando sus
activos de IT como meta sistemas (p.e. un sistema de sistemas), las empresas pueden usar
integración de aplicaciones para definir como las aplicaciones individuales interactuarán con el fin
de automatizar procesos de negocio cruciales, resultando en la entrega más rápida de noticias y
servicios a los clientes reduciendo los errores humanos, y con más bajos costos operacionales. La
integración de procesos de negocio soportó así una Arquitectura Orientada a Servicios (SOA), la
cual promueve el desarrollo de aplicaciones compuestas a través del uso de servicios existentes
(p.e. unidades individuales de funcionalidad) en la empresa.
2. Java Developers Mexico https://www.facebook.com/JavaDevelopersMexico
Aunada a la integración de procesos de negocio, la integración de datos también es requerida
para la integración exitosa de aplicaciones. Si una aplicación no puede intercambiar y comprender
datos de otra aplicación, se pueden generar inconsistencias y los procesos de negocio llegan a ser
menos eficientes. La integración de datos es llevada a cabo escribiendo código que permite que
cada aplicación comprenda los datos de otras aplicaciones en la empresa o haciendo uso de un
formato de datos intermedio que puede ser interpretado por las aplicaciones emisoras y
receptoras. El último enfoque es preferible sobre el primero ya que escala mejor un sistema
empresarial creciente en tamaño y complejidad. En ambos casos, el acceso, interpretación,
y transformación de datos son capacidades importantes para la integración exitosa de datos.
Los procesos de negocio fundamentales e integración de datos es integración a nivel de
comunicaciones. Esto se refiere a cómo diferentes aplicaciones en una empresa se hablan una con
otra, ya sea a través de transferencia de archivos, métodos solicitud/respuesta, o mensajería. En
muchos casos, las aplicaciones no estuvieron diseñadas para comunicarse con otras, requiriendo
tecnologías para permitir tal comunicación. Estas incluyen Interfaces de Programación de de
Aplicaciones (API’s), las cuales especifican cómo serán llamadas las aplicaciones, y conectores
que actúan como intermediarios entre las aplicaciones. Al nivel de comunicación también es
importante considerar la arquitectura de interacción entre las aplicaciones, lo cual puede ser
integrado acorde a un modelo punto-a-punto, enfoque hub-and-spoke, o Enterprise Service
Bus (ESB).
Transmitiendo el Mensaje: Comunicación Síncrona vs.
Asíncrona
Sin una comunicación efectiva, los procesos de negocio y datos no pueden ser integrados
apropiadamente. Dependiendo de las necesidades particulares de una empresa, la comunicación
puede ser ya sea síncrona o asíncrona, o alguna combinación de las dos.
En la comunicación síncrona, una aplicación emisora envía una solicitud a una aplicación receptora
y debe esperar una respuesta antes de que pueda continuar con su procesamiento. Este patrón es
usado típicamente en escenarios donde las solicitudes de datos necesitan estar coordinadas en
una forma secuencial.
En la comunicación asíncrona, una aplicación emisora envía un mensaje a una aplicación
receptora y continúa su procesamiento antes de recibir una respuesta. En otras palabras, la
aplicación emisora no depende de que la aplicación receptora complete su procesamiento. Si
múltiples aplicaciones están siendo integradas en tal forma, la aplicación emisora puede completar
su procesamiento aún si otros subprocesos no han finalizado su procesamiento.
Cuando se diseñan soluciones de integración de aplicaciones, la comunicación asíncrona ofrece
muchas ventajas sobre la comunicación síncrona, especialmente cuando viene a servicios en SOA.
En los patrones de comunicación síncrona, los timeouts son más comunes cuando una aplicación
tiene que esperar respuestas de algunas otras aplicaciones. Esto significa que la disponibilidad de
3. Java Developers Mexico https://www.facebook.com/JavaDevelopersMexico
los servicios incrementa ya que los procesos individuales no son bloqueados tan frecuentemente
debido a la espera que otros subprocesos terminen. De hecho los subprocesos pueden ser
ejecutados en cualquier orden. Además, la comunicación asíncrona permite el débil acoplamiento
de las aplicaciones, eliminando la necesidad de la gestión de conexiones. Esto resulta en una
solución de integración de aplicaciones que es más flexible, ágil, y escalable - atributos esenciales
para los sistemas empresariales de hoy.