Download Tema 1: Introducción a las tecnologías de integración de aplicaciones

Document related concepts
no text concepts found
Transcript
Tema 1: Introducción a las tecnologías
de integración de aplicaciones
Índice
Introducción
Integración de Aplicaciones
Modelo de referencia
Integración de Plataforma
Historia: RPC, CORBA, JAVA RMI, DCOM,…
Servicios Web
Integración de Aplicaciones / Procesos
SOAP
El enfoque REST
Gestión de flujos inter-aplicación
WS-BPEL (Web Services Business Process Execution
Language)
Integración de datos
Introducción (1)
Integración de aplicaciones
Hacer colaborar entre sí a aplicaciones distribuidas,
heterogéneas y posiblemente autónomas.
Distribución: las diferentes aplicaciones pueden ejecutarse
en máquinas conectadas a través de una red:
LAN
Internet
Autonomía: El sistema de integración no puede esperar que
la aplicación cambie su forma de actuar para facilitar la
integración
Aplicaciones heredadas
Aplicaciones de otros departamentos
Aplicaciones de otras empresas (B2B)
Introducción (2)
Heterogeneidad
Máquinas: mainframes, servidores (Sun, IBM, HP, etc.),
estaciones de trabajo (Compatibles PC, Apple Macintosh,
Sun, IBM, HP, etc.)
Sistemas operativos: Solaris, HP-UX, AIX, Linux, MacOS, MSWindows (9x, NT, 2000, XP), etc.
Redes: TCP/IP, Novell Netware, lenguajes .NET (Visual C#
.NET, Visual Basic .NET, Visual C++ .NET), etc.
Aplicaciones en distintos lenguajes: Java, C++, Visual Basic,
Visual C++, Delphi, COBOL, etc.
Distintas arquitecturas de datos: ficheros, bases de datos de
distintos modelos y fabricantes, sitios web,…
Distintos esquemas y formatos de datos. Ejemplo:
App A: DIRECCION=“C\ Alcala, 32, 28080 Madrid”.
App B: CALLE=“Calle Alcalá” NUM=“32”, CP=“28080”,
CIUDAD=“Madrid”.
Introducción (y 3)
Heterogeneidad: Razones
Decisiones de ingeniería
Razones de coste
Diferentes personas eligen diferentes soluciones a un mismo
problema
Se compra el tipo de software/hardware que cumpla los
requisitos y tenga un precio razonable
Aplicaciones antiguas
No es posible desecharlas y rehacerlas con las tecnologías más
modernas
Es preciso seguir utilizándolas hasta amortizar su coste de
desarrollo y obtener beneficio
Modelo de referencia (1)
INTEGRACIÓN B2B
INTEGRACIÓN DE APLICACIONES Y
PROCESOS
INTEGRACIÓN DE DATOS
INTEGRACIÓN DE PLATAFORMA
Modelo de referencia (2)
Integración de Plataforma
Integración de Datos
Independencia de arquitectura de almacenamiento.
Independencia de heterogeneidades de esquema/formato.
Integración de Aplicaciones / Procesos
Comunicación de aplicaciones en diferentes máquinas.
Independencia de localización, hardware, SO y lenguaje de
programación.
Creación rápida de aplicaciones basadas en aplicaciones
existentes. Procesos de negocio modelados como flujos.
Integración B2B
¿Qué debemos considerar cuando las aplicaciones que se
comunican pertenecen a organizaciones diferentes?
Seguridad, minimizar acoplamiento, estándares sectoriales,…
Modelo de referencia (y 3)
INTEGRACIÓN B2B
TEMA 4
TEMA 5
TEMA 3
INTEGRACIÓN DE APLICACIONES Y
PROCESOS
INTEGRACIÓN DE DATOS
INTEGRACIÓN DE PLATAFORMA
Ejemplo (1)
Una empresa de telecomunicaciones utiliza, entre otras, las
siguientes aplicaciones:
Aplicación de Facturación.
Aplicación de gestión de incidencias.
Tiene información sobre las facturas y los pagos de proveedores y
clientes.
Construida enteramente en la organización en los 80 utilizando COBOL.
Gestiona eficazmente miles de facturas cada mes, pero hay poco
personal capaz de modificarla.
Gestiona las incidencias detectadas por los clientes.
Construida utilizando un paquete comercial que expone APIs C++.
Aplicación ERP.
Entre otras cosas, permite gestionar los recursos de la operadora, los
costes asociados a su uso, y los márgenes de rentabilidad en sus
actividades.
Construida utilizando un paquete comercial que expone APIs JAVA.
Ejemplo (2)
CRM Productos.
Tiene información sobre los clientes de telefonía, Internet y voz de la
operadora.
Construido internamente utilizando un paquete comercial que expone
APIs C++.
CRM Clientes Hosting / Housing.
Tiene información sobre empresas clientes de Hosting / Housing.
La operadora sólo ha empezado a ofrecer estos servicios
recientemente. Un nuevo departamento se ocupa de ello.
Construida utilizando una aplicación comercial online (e.g.
Salesforce.com, Sugarcrm.com).
La aplicación no reside en el CPD de la empresa sino en los servidores del
proveedor.
El interfaz de uso para los usuarios humanos es web.
La aplicación ofrece una interfaz Servicio Web SOAP para leer y modificar
los datos contenidos en la misma.
La aplicación también ofrece un API para extender y adaptar su
comportamiento a las preferencias y necesidades de la empresa.
¡ Cuesta muy poco, está lista para ser usada en 10 minutos y no hay que
depender del Departamento de Informática para mantenerla !
Ejemplo (y 3)
Aplicación de Pedidos de “Instaladores ACME”:
La operadora no dispone de personal propio para realizar las
instalaciones ni las reparaciones que requieran un
desplazamiento al hogar/oficina del cliente. En su lugar,
subcontrata esta actividad a otras empresas.
“Instaladores ACME” es una empresa especializada en este tipo
de actuaciones que trabaja habitualmente con la operadora.
Recientemente, se ha implantado un procedimiento por el cuál
la operadora puede enviar ordenes de actuación a
“Instaladores ACME” a través de un servicio web.
De esta forma, el proceso puede automatizarse.
Integración de Plataforma (1)
Historia:
70’s: Comunicación de procesos en red
80’s: Tecnologías de invocación de procedimientos remotos
CORBA (Common Object Request Broker Architecture)
JAVA RMI (Remote Method Invocation)
Microsoft DCOM (Distributed Component Object Model).
00’s: Tecnologías de Servicios Web
Sun RPC (Remote Procedure Call)
DCE (Distributed Computing Environment)
90’s: Tecnologías de objetos distribuidos
Sockets
REST (REpresentional State Transfer)
SOAP (Simple Object Access Protocol)
NOTA: La influencia de cada tecnología no se ciñe sólo a la
década mostrada en la transparencia. Ejemplo: CORBA, RMI,
DCOM e incluso Sockets siguen en uso.
Ejemplo: Integración de Plataforma
Ejemplo: para determinar la prioridad de una incidencia de un
cliente, quiero saber cuánto se le factura al cliente.
Incidencias
(C++)
Facturación
(COBOL)
Servidor
aplicaciones
web (Java)
HTTP
Navegador
Aplicación standalone
cliente
(Delphi / VBasic)
Integración de Plataforma (2)
Comunicación de procesos en red
Procesos en diferentes nodos de la red pueden intercambiar
datos utilizando APIs de red (e.g. sockets TCP/IP).
No importa topología de la red, plataforma hardware, SO o
lenguaje de programación.
Visión de muy bajo nivel. Utilizar desde un programa
servicios proporcionados por programas que se ejecutan en
otro nodo es un proceso costoso y “poco amigable”.
Integración de Plataforma (3)
Invocación de procedimientos remotos
Un proceso expone una serie de operaciones (procedimientos) que
pueden ser invocados desde cualquier programa de la red.
Las operaciones y sus parámetros se describen en un fichero de
definición utilizando un lenguaje especial.
Para hacer un programa cliente que invoque a un procedimiento
remoto, un compilador especial genera un programa llamado
“stub” partiendo del fichero de definición.
Con el “stub”, el programador del cliente puede invocar el
procedimiento remoto de forma muy parecida a la de un
procedimiento local (transparencia).
El stub es el que realmente recibe la llamada del cliente, envía un
mensaje al servidor y recibe la respuesta del mismo.
Visión orientada a programación estructurada (paradigma
dominante en los 80), no a programación OO.
Tecnología dominante: SUN RPC.
Integración de Plataforma (4)
Tecnologías de objetos distribuidos
Conceptualmente muy similar a RPC.
Cada nodo de la red puede exponer una serie de objetos.
Permiten la invocación de métodos de objetos remotos.
Utiliza el paradigma de programación OO (dominante en los
90 y hasta la actualidad).
JAVA RMI. No proporciona independencia del lenguaje de
programación (debe utilizarse JAVA).
Por su facilidad de uso ganó gran aceptación en la comunidad
JAVA.
Sigue siendo un “building block” importante en la arquitectura JEE
(Java Platform Enterprise Edition).
DCOM. Solución propietaria de Microsoft.
Muy utilizado en la comunidad Microsoft.
Difícil la interoperabilidad con el “resto del mundo” (JAVA).
Integración de Plataforma (y 5)
Tecnologías de objetos distribuidos
CORBA
Estandarizado por el OMG (http://www.omg.org). Consorcio
constituido por un gran número de empresas (Iona, Borland,
HP, IBM, Oracle, Sun, etc.)
Las APIs están estandarizadas -> El desarrollador no depende
de un fabricante.
Existen múltiples implementaciones de distintos fabricantes
para las plataformas y lenguajes más usuales (C++, Java, Ada,
COBOL, C, Smalltalk, etc.).
El OMG ha estandarizado numerosos servicios CORBA útiles
para cualquier aplicación:
Servicio de nombres
Seguridad
Transacciones
Ámbito de aplicación de CORBA
CORBA ha sido y continúa siendo una buena tecnología para
abordar integraciones complejas en intranets
Eficiente y probado
Buen soporte para seguridad, transacciones, comunicación basada
en eventos, etc.
Uso en Internet
IIOP: Protocolo para permitir que diferentes sistemas que utilicen
CORBA se comuniquen a través de TCP/IP.
Existen firewalls que no reconocen IIOP
Hay fabricantes que venden proxies de IIOP, pero no todas las
empresas que han adoptado las tecnologías de Microsoft los tienen
Existen túneles IIOP sobre HTTP, pero no son óptimos
Microsoft no fabrica implementaciones de CORBA
Hay terceros que sí lo hacen (ej.: Iona, Borland, etc.), pero no se
puede esperar que todas las empresas que han adoptado las
tecnologías de Microsoft usen CORBA
Servicios Web (1)
La Web proporciona un mecanismo de transporte
universal, eficiente, robusto, escalable y probado
tanto en aplicaciones inter-organización como intraorganización.
Muchas de las tecnologías comentadas hasta el
momento fueron diseñadas antes de la emergencia
de la Web o no fueron específicamente diseñadas
para aprovecharse de ella.
Servicios Web (2)
Un Servicio Web expone un conjunto de puntos de
acceso (endpoints) que pueden ser invocados por
procesos externos.
Un endpoint puede ser visto normalmente como una
operación que recibe ciertos parámetros y devuelve
un resultado, quizás efectuando alguna acción por el
camino.
Están basados en tecnologías surgidas alrededor de
la Web:
Típicamente, los puntos de acceso son accedidos mediante
HTTP y sus direcciones se expresan mediante URLs.
Las invocaciones y las respuestas de las mismas se codifican
típicamente mediante XML.
Servicios Web (3)
Suele distinguirse entre dos estilos de servicios web:
Servicios web SOAP.
Añaden un nuevo conjunto de protocolos (SOAP) y lenguajes
para permitir RPCs y envío de mensajes entre aplicaciones a
través de la web.
Estandarizados por el W3C.
Suelen utilizar HTTP como mecanismo de transporte, pero no
obligatoriamente.
Servicios web REST.
No añaden nuevos protocolos ni lenguajes: utilizan solamente
HTTP 1.1 y formatos como XML para especificar mensajes.
Pueden utilizarse para implementar RPCs, pero también dan
soporte a un nuevo estilo arquitectónico para diseñar
aplicaciones distribuidas (Servicios Web REST “puros” o
“RESTful Web Services”.
XML
Lenguaje de tags (similar en sintaxis a HTML)
Permite expresar información estructurada y fácilmente
parseable por una aplicación
Estandarizado por el W3C ( http://www.w3.org)
Es extensible:
XML no impone un conjunto de tags, sino sólo unas pocas normas
de uso (los tags se abren y se cierran y en medio puede tener
otros tags anidados, todos los documentos tienen un tag raíz, los
tags pueden tener atributos, etc.)
Sus campos de aplicación son innumerables
Integración de aplicaciones heterogéneas, configuración de
aplicaciones, generación de la capa vista de una aplicación
web/WAP, bases de datos, etc.
XML: Ejemplo (1)
La operadora podría enviar el siguiente texto sobre
HTTP (o HTTPS) a “Instaladores Acme”
Elegimos HTTP (o HTTPS) porque todos los firewalls lo
soportan
<?xml version=“1.0”>
<InstallationManagement>
<makeInstallation id=“3098”>
<type product=“cablemodem” bandwidth=“100”/>
<client name=“John Smith”>
<address street=“Real 16, 3º” city=“A Coruña”/>
<phone number=“981222222”/>
</client>
<details> Llamar antes. Mejor por la tarde </details>
</makeInstallation>
</InstallationManagement>
XML: Ejemplo (y 2)
Cuando “Instaladores Acme” acepta realizar la orden
de intervención puede contestar con algo del estilo:
<?xml version=“1.0”>
<InstallationManagement>
<makeInstallationResponse id=“3098” status=“accepted”>
<scheduleddate day=“20” month=“3” year=“2007”/>
</makeInstallationResponse>
</InstallationManagement>
NOTA: Este es un ejemplo de servicio web REST. En
Servicios SOAP XML también se utiliza pero con otro
propósito.
Servicios Web SOAP (1)
WSDL (Web Services Description Language)
Permite especificar en XML las operaciones, parámetros y
tipos de datos de un servicio web.
La idea es similar al fichero de definición de RPC.
SOAP (originalmente “Simple Object Access
Protocol”)
Protocolo basado en XML para envío de mensajes
estructurados (“objetos”)
Normalmente funciona sobre HTTP (también SMTP, JMS,…).
Cuando un cliente invoca una operación de un servicio,
envía un mensaje SOAP indicando la operación a invocar y
los valores de los parámetros.
El servicio devuelve un mensaje SOAP con la respuesta.
Servicios Web SOAP (2)
Los interfaces ofrecidos por un servicio se expresan
en WSDL (Web Service Definition Language)
Existen compiladores para generar WSDL partiendo
de interfaces en lenguajes populares (e.g. JAVA)
<wsdl:portType name=“IncidencesProvider">
<wsdl:operation name="getIncidencesByClient“
parameterOrder=“in0">
<wsdl:input name="getIncidencesByClientRequest"
message="impl:getIncidencesByClientRequest"/>
<wsdl:output name="getIncidencesByClientResponse"
message="impl: getIncidencesByClientResponse "/>
<wsdl:fault name="IncorrectClientException"
message="impl: IncorrectClientException"/>
</wsdl:operation>
</wsdl:portType>
El compilador de WSDL permite generar
Un “Stub” (Proxy) del objeto remoto (cliente)
Un Skeleton (Adapter) para implementar el interfaz remoto
(servidor)
Servicios Web SOAP (3)
UDDI (Universal Description, Discovery and
Integration of Web Services)
Protocolo para interaccionar con un servidor (registro UDDI)
que proporciona operaciones (vía SOAP) para registrar y
buscar servicios web
Cada servicio web se registra dando, su nombre, una
descripción del servicio (ej.: la URL de su WSDL, una
descripción textual, etc.), etc.
Especificación: http://www.uddi.org
Servicios web SOAP (y 4)
Registro UDDI
Instalador-1
SOAP
SOAP
Operadora
SOAP
SOAP
Instalador-2
Internet
SOAP
...
Instalador-N
APIs para Servicios web SOAP
Existen APIs (comerciales y gratuitas) para los
lenguajes más usuales.
Generan WSDL desde el lenguaje deseado.
Partiendo del WSDL, generan Stubs y Skeletons.
En general, las APIs no son estándares, sin embargo,
no afecta a la interoperabilidad
En el caso de Java
La interoperabilidad es posible porque los protocolos (SOAP,
WSDL, UDDI) están estandarizados
Las APIs son estándares
Forman parte de JEE
Al igual que en CORBA, podemos cambiar de fabricante sin
que afecte al código fuente
En el caso de los lenguajes de Microsoft
Las APIs forman parte de .NET
REST (1)
REpresentational State Transfer. Estilo arquitectónico propuesto
por Roy Fielding en 2000.
RPC, CORBA, RMI, DCOM,…, incluso SOAP: ¿el mismo perro con
distinto collar?
La Web es, sin duda, la aplicación distribuida más exitosa de la
historia, y no sigue esa arquitectura.
REST: Estilo arquitectónico para construir aplicaciones
distribuidas inspirado en las características de la web.
Mucha gente piensa que la arquitectura de las aplicaciones
distribuidas no ha cambiado significativamente en 25 años.
Los defensores de REST (RESTafaris) creen que REST es la clave
para construir aplicaciones distribuidas tan escalables, accesibles,
robustas y eficientes como la web.
Sin embargo, frecuentemente REST se utiliza como sinónimo de
servicios web que, en lugar de las tecnologías SOAP, utilizan
directamente HTTP y XML (aunque sea al “viejo” estilo).
Ejemplo: Invocación a “Instaladores Acme”.
REST (y 2)
En el enfoque REST el protocolo de transporte es siempre HTTP
REST nos obliga a “parsear” el mensaje XML devuelto.
En el enfoque SOAP y el resto de enfoques derivados de RPC,
manejamos directamente los objetos de nuestro lenguaje de
programación (Java, C++).
Tener un protocolo por encima de HTTP (SOAP) nos permite
tener un lugar donde incluir información para manejar aspectos
como seguridad, transacciones,…
SOAP puede utilizar diferentes mecanismos de transporte: HTTP,
SMTP, JMS … pero casi siempre se usa HTTP.
Sin embargo, hoy en día, estas funcionalidades aún no están
disponibles en SOAP.
Muchas veces se utiliza REST no tanto por sus ventajas
arquitectónicas (que, en ocasiones, se ignoran) sino porque:
Es más fácil invocar un servicio REST que un servicio SOAP.
Hay problemas de interoperabilidad en las implementaciones de SOAP.
Las tecnologías HTTP / XML son inter-operables universalmente.
Ámbito de aplicación de servicios web (1)
Integración de aplicaciones en intranets
Cuando se utilizan, se suele seguir el enfoque SOAP.
No son una alternativa tan eficiente y madura como CORBA
CORBA dispone de numerosos servicios (seguridad,
transacciones, etc.)
Sin embargo
Gozan de “industry momentum” y en consecuencia muchas
empresas se decantan por su uso
Es una tecnología soportada por todos los fabricantes.
Ámbito de aplicación (y 2)
Integración de aplicaciones en Internet (B2B y
Mashups)
A pesar de sus inconvenientes frente a CORBA, el enfoque
de Servicios Web SOAP es ya el más utilizado en
integraciones B2B.
CORBA, RMI y DCOM tienen aún su espacio.
Sobre todo fuera del mundo corporativo (Mashups), REST es
muy utilizado, aunque SOAP tiene su espacio:
Como ya se ha dicho, un servicio REST es más fácil de invocar
que SOAP y, actualmente, tiene menos problemas de
interoperabilidad -> Mayor accesibilidad.
Sites como Google, Amazon,… ofrecen también API REST.
En la actualidad, el factor decisivo para su uso no suelen ser
las novedades en cuanto a patrones arquitectónicos.
Flujos inter-aplicación (1)
Los procesos de negocio se componen de múltiples
interacciones entre aplicaciones. Ejemplo: tratar incidencia
1.
2.
3.
Se obtienen los datos de la incidencia de la aplicación de
incidencias.
Se consulta a la aplicación de Facturación para ver si el cliente
está al día de los pagos.
Si lo está:
1.
2.
3.
4.
4.
Se envía los datos de la incidencia a la aplicación CRM.
Se invoca a la aplicación ERP para obtener un recurso que examinará
la incidencia (invocación asíncrona).
Cuando la incidencia ha sido evaluada, si se precisa una intervención
remota, se envía un mensaje a la aplicación B2B del instalador
escogido.
…
Si no lo está
1.
2.
La incidencia es rechazada.
…
Flujos inter-aplicación (y 2)
Sistemas EAI (Enterprise Application Integration):
Lógica de control inter-aplicación declarativa
Soporte para envío/recepción de mensajes síncronos y
asíncronos
Transacciones multi-aplicación
Soporte para la creación sencilla de “adaptadores” para las
aplicaciones existentes
Hasta ahora, soluciones poco basadas en estándares
En intranets son una realidad plenamente establecida
Evolución:
Los sistemas EAI están evolucionando para dar mayor
soporte a comunicaciones B2B
Los servicios web jugarán un papel crucial mediante los
estándares emergentes para la orquestación y la coreografía
de servicios web: WS-BPEL, BPML, etc.
Integración de datos distribuidos
Combinar automáticamente los datos procedentes de
diversas fuentes es difícil:
Heterogeneidad, Autonomía, Distribución,…
Actualidad:
Data Warehouse: son una realidad para aplicaciones batch
de generación de informes y análisis de tendencias con
datos intra-organización. No soportan:
Acceso a datos en tiempo real
Integración de datos en aplicaciones B2B
Enfoques emergentes:
EII (Enterprise Information Integration). Pretende
proporcionar acceso unificado en tiempo real a múltiples
fuentes de información tanto intra-organización como interorganización
Integración de datos distribuidos: Ejemplo
Vista unificada de cliente: Tabla (puede ser “virtual”)
que contenga los datos de los clientes junto con su
número de incidencias abiertas y su nivel de
facturación
Requiere obtener datos de clientes de ambas aplicaciones
CRM.
Deben cruzarse con los datos de los clientes con la
aplicación de incidencias y con los de la aplicación de
facturación.
SOA
SOA (Service Oriented Architecture)
Modelar arquitecturas de sistemas como un conjunto de
servicios poco acoplados (se minimizan las dependencias
entre ellos).
Los servicios definen formalmente sus operaciones mediante
un “contrato” independiente del lenguaje de programación.
De esta forma, los servicios pueden interoperar.
Para construir aplicaciones que combinen varios servicios se
apuesta por flujos inter-aplicación y/o tecnologías de
integración de datos.
El punto de vista SOA sobre la reusabilidad es de
granularidad gruesa: reusar servicios, no objetos.
Se hace énfasis en la fácil publicación y localización de
componentes reusables.
Aunque en teoría es independiente de la tecnología, se basa
fuertemente en las tecnologías de Servicios Web.