Estudio de la arquitectura SOA (Service Oriented Architecture) como plataforma de desarrollo, administración y explotación de aplicaciones basadas en servicios (SaaS)

Arquitectura SOA: Desarrollo SaaS

Información del documento

Autor

Jaume Nebot Martínez

instructor Juan Carlos Hernández Palacin
Especialidad Ingeniería en Organización Industrial
Tipo de documento Proyecto Fin de Carrera (PFC)
Idioma Spanish
Formato | PDF
Tamaño 9.69 MB

Resumen

I.Necesidades de Negocio y Evolución de los Sistemas de Información

Este documento explora la evolución de las aplicaciones informáticas en las empresas, desde sistemas instalados localmente hasta la aparición de servicios web y la Arquitectura Orientada a Servicios (SOA). Se destaca cómo las necesidades de negocio, como la gestión de compras, ventas, inventario, contabilidad y marketing, impulsan la adopción de nuevas tecnologías. La llegada de internet permitió la transformación de las aplicaciones a sistemas web, abriendo un abanico de nuevas oportunidades como las ventas online.

1. Definición de Necesidades de Negocio

El documento inicia definiendo las necesidades de negocio como aquellas que surgen de las tareas relacionadas con la actividad empresarial. Se mencionan ejemplos concretos como procesos de compra, ventas, control de inventario, contabilidad y marketing. Se establece un claro vínculo entre estas necesidades y la evolución de los sistemas de información dentro de la empresa, destacando la importancia de la tecnología para satisfacerlas. Antes de la llegada de internet, las aplicaciones eran programas instalados en cada terminal, una limitación que se superó con la aparición de las aplicaciones web, accesibles desde cualquier ordenador con un navegador. Este cambio tecnológico trajo nuevas oportunidades, ejemplificado con la posibilidad de realizar ventas online. El texto subraya que a medida que la tecnología avanza, los sistemas informáticos de las empresas deben adaptarse, aunque la velocidad de adopción varía entre organizaciones.

2. Sistemas de Información y el Ecosistema Software

Se describe la penetración de los sistemas de información en todas las áreas de la empresa: producción, logística, recursos humanos y finanzas, entre otras. Esta diversificación tecnológica dio lugar a un complejo ecosistema software, un conjunto de aplicaciones interdependientes que comparten un mismo entorno, pero que a menudo se basan en tecnologías distintas. Esta heterogeneidad tecnológica puede deberse a la evolución continua de la tecnología, con la aparición de nuevos lenguajes de programación más eficientes, o a necesidades específicas de negocio o infraestructuras que favorecen el uso de ciertas tecnologías. Se introduce a Edsger Dijkstra y su recomendación, en 1968, de una estructuración correcta de los sistemas de software basada en capas superpuestas, donde cada capa solo se comunica con las adyacentes. Posteriormente, en 1969, P.I. Sharp profundizó en este concepto, diferenciando claramente la ingeniería de software de la arquitectura de software, usando el sistema operativo IBM OS/360 como ejemplo de un sistema construido con buenas prácticas de programación pero carente de una arquitectura global bien definida debido a la ausencia de un arquitecto de software. Esto resalta la importancia de una planificación arquitectónica adecuada desde el inicio.

3. Programación Modular y Orientada a Objetos

Se expone la programación modular, basada en la estrategia de 'divide y vencerás', como una herramienta para descomponer problemas complejos en partes más pequeñas y manejables. Un programa se divide en módulos que interactúan entre sí, con un módulo principal coordinando las llamadas a otros módulos secundarios mediante funciones y el paso de parámetros. Este enfoque crea módulos que funcionan como cajas negras, reutilizables y que resuelven los problemas de una programación estructurada. El lenguaje C se menciona como un ejemplo de lenguaje modular. La programación orientada a objetos, que utiliza objetos del mundo real para representar módulos y funciones, se presenta como una evolución natural de la programación modular. Esta sección conecta los conceptos de modularidad y orientación a objetos con la construcción de sistemas de información empresariales, anticipando la discusión posterior sobre componentes y servicios en una arquitectura más compleja. La reutilización de código, un principio fundamental en la programación modular y orientada a objetos, es esencial para la eficiencia y el mantenimiento de sistemas de información a gran escala.

II.El Ecosistema Software y la Importancia de la Arquitectura

Las empresas modernas operan con un complejo ecosistema software, un conjunto de aplicaciones interdependientes basadas en diferentes tecnologías. Edsger Dijkstra (1968) y P.I. Sharp (1969) sentaron las bases para una correcta estructuración de estos sistemas, enfatizando la necesidad de una arquitectura de software bien definida para evitar sistemas amorfos. La programación modular y la programación orientada a objetos son estrategias clave para construir sistemas robustos y reutilizables.

1. La Complejidad del Ecosistema Software Empresarial

El texto describe la realidad de las empresas modernas: un complejo ecosistema de software. Este ecosistema se compone de numerosas aplicaciones informáticas interdependientes que coexisten en un mismo entorno, pero a menudo se basan en tecnologías diferentes. Esta heterogeneidad tecnológica es una consecuencia natural de la evolución continua de las tecnologías de la información, con la aparición constante de nuevos lenguajes de programación y la necesidad de adaptar los sistemas a las cambiantes necesidades del negocio. La coexistencia de tecnologías antiguas y modernas crea un reto importante en el mantenimiento, escalabilidad y actualización de estos sistemas. La falta de una estructuración adecuada puede conducir a sistemas amorfos e inmanejables, dificultando su evolución y mantenimiento. Por lo tanto, el documento resalta la necesidad imperativa de un diseño arquitectónico sólido para afrontar la complejidad inherente a este ecosistema.

2. La Visión de Dijkstra y Sharp La Importancia de la Arquitectura de Software

El documento introduce las ideas pioneras de Edsger Dijkstra (1968) y P.I. Sharp (1969) como fundamentales para entender la necesidad de una arquitectura de software bien definida. Dijkstra propuso la organización de sistemas operativos en capas superpuestas, con comunicación únicamente entre capas adyacentes. Esta idea de modularidad y estructuración jerárquica es esencial para el mantenimiento y escalabilidad de sistemas complejos. Sharp, basándose en las ideas de Dijkstra, profundizó en el concepto de arquitectura de software, diferenciándolo de la ingeniería de software. Utilizó el sistema operativo IBM OS/360 como ejemplo ilustrativo, demostrando que aunque se construyó con buenas prácticas de programación, su falta de una arquitectura definida lo convirtió en un 'amontonamiento amorfo de programas'. Esta ausencia de una planificación arquitectónica desde el inicio subraya la importancia crucial de la figura del arquitecto de software para estructurar debidamente los subsistemas y asegurar la coherencia, la mantenibilidad y la escalabilidad a largo plazo.

3. Programación Modular como Base de la Arquitectura

Se introduce la programación modular como una estrategia clave para construir sistemas de software robustos y mantenibles. Basada en el principio de 'divide y vencerás', esta metodología permite descomponer un problema complejo en partes más pequeñas y manejables. Un programa se divide en módulos interconectados, donde un módulo principal coordina las llamadas a otros módulos secundarios mediante funciones. Cada módulo recibe parámetros de entrada, procesa la información y devuelve un resultado de salida, funcionando como una 'caja negra' reutilizable. El lenguaje de programación C se cita como ejemplo de un lenguaje que facilita la programación modular. Se resalta que este enfoque, en contraste con una programación estructurada, minimiza problemas de mantenibilidad y facilita la reutilización de código. La programación orientada a objetos, que se presenta como una evolución de la programación modular, se menciona como una forma de representar los módulos utilizando objetos del mundo real, mejorando aún más la modularidad y reutilización. Esta sección sienta las bases para comprender cómo los principios de la programación modular y orientada a objetos son fundamentales para el diseño de arquitecturas de software robustas y escalables en entornos empresariales.

III.Componentes Servicios y Contratos en SOA

El documento define los servicios como unidades de trabajo que aceptan y producen mensajes, destacando la importancia de la reusabilidad y el bajo acoplamiento entre ellos. Los contratos de servicio estandarizados, basados en tecnologías como WSDL y XML Schema, son esenciales para la interoperabilidad. A diferencia de los componentes, los servicios ofrecen mayor reusabilidad y desacoplamiento, resolviendo en tiempo de ejecución (Run-Time) las dependencias, mientras que los componentes lo hacen en tiempo de compilación.

1. La Naturaleza de los Servicios en SOA

La sección define el concepto de servicio como la unidad fundamental de trabajo en una Arquitectura Orientada a Servicios (SOA). Se describe como una unidad de trabajo que acepta mensajes de entrada y produce mensajes de salida. Se proporciona una definición adicional, tomada del W3C (World Wide Web Consortium), que describe un servicio como un recurso abstracto que representa una capacidad para realizar tareas que forman una funcionalidad coherente desde la perspectiva de proveedores y consumidores. Esta definición abstracta enfatiza la independencia de la tecnología subyacente, un principio clave en SOA. Se establece que las características comunes de los servicios se determinarán en función de su lógica de negocio, cómo se relacionan y comunican entre sí, y cómo se diseñan. Se introduce el concepto de contrato de servicio, que se desarrollará en secciones posteriores, como un elemento fundamental para la interoperabilidad y reutilización de servicios.

2. El Papel de los Contratos de Servicio

La sección analiza cómo los contratos de servicio influyen en los principios de SOA. Se resalta que los contratos minimizan las dependencias entre servicios al centralizar la información de interacción, evitando dependencias directas entre implementaciones. Este enfoque favorece el desacoplamiento y la abstracción, permitiendo que la lógica interna de un servicio sea independiente de sus consumidores. La reusabilidad de los servicios es un objetivo clave; se busca crear servicios agnósticos, lo más genéricos posibles, para maximizar su potencial de reutilización. El buen diseño de los contratos, con operaciones bien definidas, es crucial para lograr servicios agnósticos. La publicación de servicios en un repositorio, junto con anotaciones descriptivas, se presenta como una manera de facilitar el descubrimiento de servicios. La meta-información crucial para el descubrimiento de servicios abarca el propósito del servicio, una descripción detallada, las capacidades (operaciones), y las limitaciones de las operaciones ofrecidas, toda esta información alojada en un repositorio llamado registro de servicio o service registry.

3. Reusabilidad y Dependencias de los Componentes y Servicios

Se define la reusabilidad como la capacidad de un elemento software para ser reutilizado en un contexto diferente al de su creación original. Se describe la importancia de diseñar componentes y servicios con una visión a futuro, considerando desarrollos posteriores. Se argumenta que la reusabilidad de los servicios es superior a la de los componentes debido al mayor alcance de comunicación de los servicios, no limitados a un entorno de ejecución como los componentes EJB de Java (que se ejecutan en una o varias JVM). En cuanto a las dependencias, se aclara que se refiere al momento en que un elemento software necesita conocer la existencia de otro elemento. Se diferencia entre dependencias en tiempo de compilación (cuando se traduce el código a código máquina) y en tiempo de ejecución (Run-Time). Los servicios, a diferencia de los componentes, resuelven sus relaciones con otros servicios en tiempo de ejecución, lo que implica un mayor desacoplamiento. Esta diferencia entre componentes y servicios es crucial para comprender las ventajas de la arquitectura orientada a servicios en términos de flexibilidad, mantenibilidad y escalabilidad. La reusabilidad y el desacoplamiento son principios clave para lograr sistemas de información robustos, flexibles y fácilmente adaptables a los cambios.

IV.Servicios Web Estándares y Principios de SOA

Los servicios web, implementados con tecnologías como SOAP, WSDL, y XML, se presentan como la implementación de facto de SOA. Cumplen con principios clave de SOA como el contrato estandarizado, bajo acoplamiento, abstracción, y composición. La organización World Wide Web Consortium (W3C) juega un papel crucial en la estandarización de estas tecnologías, incluyendo XML, SOAP, y WSDL. Se enfatiza la interoperabilidad entre aplicaciones construidas sobre diferentes plataformas gracias al uso de estándares basados en XML.

1. Servicios Web como Estándar de Facto en SOA

La sección introduce los servicios web como la implementación de facto de los servicios en SOA. Se destaca que su adopción como estándar se debe a la falta de una tecnología alternativa que reproduzca con mayor fidelidad los principios de la orientación a servicios y el concepto de interoperabilidad. Aunque SOA no requiere obligatoriamente el uso de servicios web, la construcción de arquitecturas SOA con servicios web es la práctica recomendada actualmente. Se deja la puerta abierta a la posibilidad de que futuras tecnologías superen a los servicios web, convirtiéndose en el nuevo estándar. El texto menciona implícitamente que la tecnología de servicios web es una evolución y adaptación a las necesidades de negocio, un punto clave de la Arquitectura Orientada a Servicios (SOA). El texto prepara el camino para una discusión más profunda sobre los estándares que soportan los servicios web, como XML, SOAP y WSDL.

2. Estándares Clave de los Servicios Web XML WSDL y XML Schema

Se justifica el estudio de los estándares de los servicios web por su estrecha relación con SOA y su importancia práctica para desarrollar ejemplos de uso dentro de un ESB (Enterprise Service Bus). Se centran en XML, WSDL, y XML Schema como la base de la implementación de los servicios web, desarrollados por el W3C (World Wide Web Consortium). El texto describe brevemente el propósito del prólogo XML, incluyendo la versión y la codificación (encoding), como UTF-8, para asegurar la correcta interpretación de los mensajes XML entre diferentes entornos. Se destaca la importancia de la estandarización de datos, y cómo XML Schema provee un marco para definir y estandarizar la información dentro de los documentos WSDL. Se menciona la estrecha relación entre SOAP, WSDL y XML Schema en la implementación de la descripción de los servicios. El documento enfatiza la utilidad del WSDL para determinar las funciones disponibles en un servicio web y la necesidad de que las operaciones definidas en el mensaje SOAP coincidan con las del WSDL.

3. Principios de Orientación a Servicios y los Servicios Web

La sección relaciona los principios inherentes de la orientación a servicios (contrato estandarizado, bajo acoplamiento, abstracción y composición) con las características de los servicios web. Se explica cómo el uso de WSDL cumple varios de estos principios: el contrato estandarizado a través de la descripción del servicio, la estandarización de datos mediante XML Schema, y el desacoplamiento de la lógica del servicio de sus consumidores. Se destaca que la abstracción y el bajo acoplamiento se consiguen a través del contrato del servicio, presentando el servicio como una caja negra. También se menciona la capacidad natural de los servicios web para la composición, aunque su grado de éxito dependerá tanto del diseño del servicio como de su reusabilidad intrínseca, relacionada con su lógica de negocio. El World Wide Web Consortium (W3C) es mencionado como el desarrollador de los estándares que permiten la interoperabilidad y la funcionalidad descrita.

4. Ventajas y Desempeño de los Servicios Web

Se detallan las ventajas de los servicios web basados en estándares: interoperabilidad entre aplicaciones software independientemente de la plataforma (Java, .NET); la posibilidad de combinar fácilmente servicios de diferentes compañías ubicadas geográficamente dispersas gracias a la operación por internet y al uso de XML; y la facilidad de acceso y entendimiento de su funcionamiento gracias a la naturaleza textual de XML. Se subraya que el cumplimiento de principios como contrato estandarizado, bajo acoplamiento y abstracción permite separar el diseño de la implementación, facilitando cambios tecnológicos sin afectar a los consumidores del servicio. Se incluye una comparación de rendimiento entre servicios web y otras tecnologías de comunicación distribuidas (CORBA, EJB, Java XML-RPC, Java Axis), mostrando que los servicios web, si bien ofrecen menor rendimiento en cuanto a 'round-trip latency', esto se puede optimizar con tecnologías como XOP y MTOM, especialmente relevantes en entornos empresariales con volúmenes de datos moderados. Finalmente, la comunicación vía HTTP por el puerto 80 se menciona como ventaja y desventaja simultáneamente, por su posible facilidad de acceso pero también por la menor seguridad. Se destaca la importancia de la interoperabilidad para la integración de aplicaciones de diferentes proveedores.

V.Ventajas de los Servicios Web y Desempeño

El uso de estándares en los servicios web proporciona interoperabilidad entre diferentes plataformas (Java, .NET) y compañías. La comunicación puede usar protocolos como HTTP, FTP, y SMTP. Si bien los servicios web (específicamente implementaciones basadas en SOAP) pueden presentar un rendimiento menor que otras tecnologías distribuidas, como se ilustra en una comparación que incluye CORBA y EJB, existen mecanismos de optimización como XOP y MTOM para mejorar el desempeño. El protocolo REST es mencionado como alternativa para servicios de alta frecuencia y volumen de datos.

1. Beneficios de la Estandarización de los Servicios Web

La sección destaca los beneficios derivados del uso de estándares en los servicios web. La interoperabilidad entre aplicaciones, independientemente de la plataforma subyacente (Java o .NET), es un beneficio principal. Esto permite que aplicaciones construidas con diferentes tecnologías se comuniquen entre sí sin necesidad de adaptaciones complejas. La interoperabilidad facilita la integración de servicios de diferentes compañías, ubicadas en diferentes lugares geográficos, para proporcionar servicios integrados. La información basada en XML puede viajar a través de diferentes protocolos de red (HTTP, FTP, SMTP), facilitando la comunicación entre sistemas. La naturaleza textual de los estándares basados en XML facilita el acceso a su contenido y la comprensión de su funcionamiento. La separación entre el diseño del servicio (representado en su contrato) y su implementación es otra ventaja. Si se decide cambiar la tecnología de implementación del servicio, esto se puede hacer sin afectar a las dependencias con sus consumidores, aumentando la flexibilidad y reduciendo costes de mantenimiento. Esta sección resalta la importancia de los estándares para la interoperabilidad, simplificando la integración y reduciendo costos a largo plazo en la gestión de sistemas de información.

2. Comparativa de Rendimiento Servicios Web vs. Otras Tecnologías

Se presenta una comparación de rendimiento entre servicios web y otras tecnologías de comunicación distribuida basadas en Java. Se analiza el tiempo de respuesta ('round-trip latency' o RTT), que mide el tiempo que tarda un paquete de datos en ir y volver entre un emisor y un receptor. La comparación incluye tecnologías como CORBA y EJB (Enterprise Java Beans), junto con implementaciones Java de servicios web (Java XML-RPC y Java Axis). Los resultados muestran que los servicios web presentan tiempos RTT mayores, es decir, un rendimiento menor. Esta observación destaca una posible desventaja de los servicios web en términos de rendimiento puro, especialmente en aplicaciones que requieren tiempos de respuesta extremadamente cortos. Sin embargo, el texto también menciona mecanismos como XML-binary Optimized Packaging (XOP) y SOAP Message Transmission Optimization Mechanism (MTOM) como posibles soluciones para optimizar el rendimiento de los servicios web basados en SOAP, sugiriendo que las limitaciones de rendimiento pueden ser mitigadas con las técnicas adecuadas.

3. Consideraciones sobre la Seguridad y el Protocolo REST

Se analiza la ventaja y desventaja del uso de servicios web a través del protocolo HTTP por el puerto 80. La ventaja es la posibilidad de evitar firewalls en organizaciones con fuertes medidas de seguridad al usar un puerto por defecto para la navegación en internet. La desventaja es la posible inseguridad de permitir un tipo de comunicación de negocio no controlada. Se introduce el protocolo REST (Representational State Transfer) como una alternativa a SOAP con mayor rendimiento, pero con la pérdida de la inteligencia y autogobierno que ofrece SOAP. REST se presenta como una opción más adecuada para servicios con alta frecuencia de uso y alto volumen de datos, ejemplificado con Google Maps. El texto menciona que aunque SOAP puede ser más lento que REST, especialmente con grandes volúmenes de datos, es más útil en entornos empresariales donde los mensajes no suelen ser tan extensos, y existen mecanismos de optimización como XOP y MTOM para mejorar su eficiencia. Esta sección muestra una evaluación equilibrada de las ventajas y desventajas de los servicios web, considerando tanto su interoperabilidad y facilidad de uso como su potencial impacto en el rendimiento. La mención de REST y las técnicas de optimización demuestra una visión tecnológica actualizada.

VI.SOA y el Alineamiento Negocio Tecnología

La SOA promueve el alineamiento entre el negocio y la tecnología, modelando los servicios como funciones de negocio. Se menciona la importancia de la participación de las partes interesadas (empleados, gerentes, clientes, proveedores) en el diseño de la arquitectura SOA. Se discute la estrategia de despliegue top-down como ideal para asegurar este alineamiento.

1. SOA y el Alineamiento Negocio Tecnología Una Definición

La sección comienza definiendo la Arquitectura Orientada a Servicios (SOA) desde la perspectiva de IBM, enfatizando su papel en la creación de una infraestructura de TI empresarial que alinea los sistemas de información con las necesidades del negocio. Esta alineación, un tema recurrente en el ámbito de las TI, se considera esencial porque la tecnología debe servir a los objetivos del negocio, no existir como un fin en sí misma. SOA, mediante el modelado de los servicios como funciones de negocio y su adecuada coordinación, logra este alineamiento. Se introduce el concepto de BPM (Business Process Management) como una consecuencia directa de este alineamiento. BPM involucra la gestión sistemática de los procesos de negocio mediante su modelado, automatización, integración y optimización continua, incluyendo procesos de negocio, tecnologías de la información y personas. La orquestación de servicios, ya mencionada, se presenta como una parte integral de la gestión global representada por BPM. Se destaca la importancia de esta estrecha relación entre el negocio y la tecnología como un objetivo clave de la implementación de SOA.

2. Implementación de SOA y la Participación de las Partes Interesadas

Se subraya la importancia del trabajo conjunto entre las partes interesadas, tanto internas (empleados, gerentes, propietarios) como externas (proveedores, clientes, accionistas), en la construcción de una arquitectura SOA. Los servicios representan procesos de negocio, por lo que la gerencia, con su profundo conocimiento del negocio, debe colaborar estrechamente con los empleados responsables de los sistemas de información. Se advierte sobre el riesgo de construir servicios que no representen adecuadamente las funciones de negocio, lo que resultaría en servicios inútiles o de menor utilidad. El documento enfatiza la necesidad de involucrar a las partes interesadas externas, ya que proveedores o clientes pueden usar los servicios publicados por la empresa, y estos servicios deben satisfacer sus necesidades. Esta sección destaca la necesidad de un enfoque colaborativo en el desarrollo e implementación de una arquitectura SOA, considerando las necesidades y perspectivas de todos los actores involucrados.

3. Estrategias de Despliegue y el Retorno de la Inversión ROI

Se describe la implementación de los servicios, considerando la arquitectura de las aplicaciones y la arquitectura de negocio. Se indica que no es necesario un inventario completo de servicios desde el inicio; se puede comenzar con los servicios de mayor nivel y luego ir descendiendo en cascada. Se utiliza el ejemplo de un servicio 'Factura' que, tras su implementación, puede usar un nuevo servicio 'LineaFactura', sin alterar la funcionalidad de 'Factura' para sus consumidores. Se mencionan las ventajas tecnológicas de la SOA, como la integración de aplicaciones y mayor interoperabilidad, gracias al uso de estándares y el diseño orientado a servicios. Se presenta el ESB (Enterprise Service Bus) como herramienta para la integración de aplicaciones. Se destaca la integración de sistemas legados con poco esfuerzo usando los servicios web como 'wrappers'. Se recalca la importancia de los objetivos estratégicos, como la reducción de dependencia de proveedores tecnológicos específicos gracias al uso de estándares, y el alineamiento entre negocio y tecnología, especialmente a través de una estrategia de despliegue top-down. Finalmente se menciona el incremento del ROI (Return on Investment) como un beneficio clave, mostrando que la inversión inicial en SOA, aunque mayor, se recupera a largo plazo gracias a la reusabilidad de los servicios.

VII.El Enterprise Service Bus ESB como Plataforma de Integración

El ESB actúa como intermediario entre consumidores y proveedores de servicios, simplificando la integración de aplicaciones heterogéneas. Se compara la integración punto a punto (conexiones tipo espagueti) con la integración mediante un ESB, destacando la reducción de complejidad y el mejor manejo de cambios. El estudio menciona la importancia de mecanismos de seguridad y garantía de calidad del servicio (QoS), como Kerberos, WS-Security, y WS-ReliableMessaging. Se analiza también la implementación del ESB con código abierto (opensource) vs. soluciones comerciales, destacando Fuse ESB como un ejemplo basado en Apache ServiceMix.

1. El ESB como Intermediario Analogía con el Mercado de Consumo

La sección introduce el Enterprise Service Bus (ESB) como una pieza fundamental en una arquitectura SOA, comparándolo con un intermediario en el mercado de consumo (mayoristas entre fabricantes y consumidores). El ESB actúa como un intermediario entre los consumidores y proveedores de servicios, centralizando las comunicaciones y reduciendo el número de transacciones directas necesarias. Esta analogía ilustra claramente el papel del ESB como un componente central que simplifica la interacción entre diferentes partes de un sistema distribuido. Se adelanta que el ESB se tratará con más detalle en secciones posteriores, pero se enfatiza su papel crucial en la gestión eficiente de la comunicación entre servicios en una arquitectura SOA. Se plantea al ESB como una solución que mejora la escalabilidad y la gestión de un gran número de servicios interconectados.

2. Integración y Alineamiento en SOA El Papel del ESB

Se enfatiza la necesidad de un trabajo conjunto entre las partes interesadas, especialmente internas, para la construcción de una arquitectura SOA exitosa, debido al alineamiento entre negocio y tecnología que esta implica. La participación de responsables de la gerencia con conocimiento del negocio, junto con empleados del departamento de sistemas de información, es crucial. Si los servicios no representan adecuadamente las funciones de negocio, su utilidad será limitada. También se menciona la importancia de considerar a las partes interesadas externas, como proveedores y clientes que pueden usar los servicios publicados. Esta colaboración asegura que los servicios se diseñen para satisfacer las necesidades de todos los usuarios. La sección subraya la importancia de la correcta implementación de servicios, considerando tanto la arquitectura de las aplicaciones como la arquitectura de negocio. Se resalta la posibilidad de implementar una estrategia de desarrollo iterativa, comenzando con un servicio de alto nivel y añadiendo gradualmente más servicios según las necesidades.

3. Ventajas del ESB Integración Interoperabilidad y Conectividad

Desde una perspectiva tecnológica, se destacan los beneficios del uso del ESB, principalmente la integración de aplicaciones y la interoperabilidad. Se explica que la integración consiste en habilitar un marco común para que sistemas heterogéneos intercambien información. Gracias a la interoperabilidad intrínseca de SOA y el uso de estándares, se reduce la necesidad de desarrollos específicos de integración. Se menciona el ESB como la herramienta software que facilita la integración, cuya funcionalidad se detallará más adelante. Otra ventaja es la federación de sistemas legados con poco esfuerzo, utilizando el servicio web como un 'wrapper'. La sección ilustra el beneficio del ESB al comparar la conectividad punto a punto (conexiones tipo 'espagueti') con la conectividad a través de un ESB. Se destaca cómo el ESB reduce drásticamente el número de conexiones necesarias entre aplicaciones, facilitando el mantenimiento y la escalabilidad. La conectividad centralizada a través del ESB simplifica la gestión de cambios y actualizaciones, minimizando el trabajo requerido.

4. Seguridad y QoS en el Entorno ESB

Se trata la importancia de los mecanismos de seguridad y garantía de la calidad de servicio (QoS) en una arquitectura SOA con ESB. Se mencionan temas clave como autenticación, autorización, encriptación y transaccionalidad. Se cita a Kerberos como un protocolo de autenticación y a WS-Security y WS-ReliableMessaging como estándares para asegurar la encriptación de mensajes y la entrega confiable de mensajes, respectivamente. Estos mecanismos son vitales para asegurar la integridad, confidencialidad y disponibilidad de la información en una arquitectura distribuida, especialmente en un contexto empresarial donde la seguridad de los datos es crucial. La inclusión de esta información indica una comprensión de las implicaciones de seguridad en el diseño e implementación de una arquitectura SOA.

5. ESB de Código Abierto vs. Soluciones Comerciales

Se comparan los ESB de código abierto (opensource) con los comerciales. Los ESB comerciales ofrecen soporte técnico y documentación exhaustiva. Los de código abierto suelen carecer de interfaces de administración ricas y de documentación detallada, pero cuentan con el respaldo de una comunidad activa de desarrolladores. Se destaca la ventaja de costo cero de adquisición de los ESB de código abierto, con los gastos concentrados en la implantación y mantenimiento. Se menciona que los ESB de código abierto, al carecer de herramientas adicionales, suelen ser más ligeros y requieren infraestructuras menos robustas, lo que los convierte en una opción atractiva para entornos con recursos limitados. Se mencionan Fuse ESB, MuleSoft y Red Hat como proveedores open-source, destacando a Fuse ESB por liderar en oferta, estrategia y presencia en el mercado, estando basado principalmente en Apache ServiceMix.

VIII.ServiceMix y Tecnologías Relacionadas

El documento profundiza en Apache ServiceMix, un ESB de código abierto basado en la plataforma OSGi. Se describen las ventajas de OSGi, como la gestión de dependencias y la capacidad de ejecutar múltiples versiones de las mismas librerías. Se mencionan otros componentes importantes de ServiceMix como Apache ActiveMQ (JMS) para la mensajería, Spring para la inyección de dependencias, y herramientas para el enrutamiento como NMR y Camel. Se concluye con una descripción de las ventajas de la computación en la nube para el despliegue de sistemas SOA.

1. ServiceMix Un ESB Basado en OSGi

Esta sección se centra en Apache ServiceMix, un ESB (Enterprise Service Bus) de código abierto basado en la plataforma OSGi. Se menciona que Fuse ESB es un producto basado en ServiceMix, con una versión comercial que ofrece soporte técnico adicional. La sección destaca la ventaja de la plataforma OSGi, que permite la coexistencia de librerías iguales pero con diferentes versiones dentro del contenedor. Esto resuelve problemas comunes en la gestión de dependencias de librerías en un entorno Java, donde un cargador de clases común puede provocar conflictos entre versiones. OSGi soluciona estos conflictos al hacer las dependencias declarativas, indicando explícitamente qué librerías usa cada módulo. Se explica que gracias a esta característica, se pueden evitar errores como ClassCastException o NoClassDefFoundError, frecuentes en entornos Java con gestión de librerías no declarativa. La capacidad de ServiceMix para gestionar múltiples versiones de la misma librería mejora la flexibilidad y la capacidad de integración de aplicaciones con diferentes requerimientos tecnológicos.

2. Configuración Dinámica en ServiceMix

Se describe la configuración dinámica en ServiceMix, que utiliza archivos de propiedades (pares nombre=valor) para configurar los parámetros de los bundles. Se menciona que ServiceMix monitoriza un directorio específico (<HOME>/etc) donde se almacenan estos archivos de propiedades. Cuando se detecta un cambio en un archivo de propiedades, ServiceMix propaga automáticamente la configuración modificada al servicio correspondiente. Este mecanismo de configuración dinámica permite actualizar la configuración de los servicios sin necesidad de reiniciar la aplicación, mejorando la flexibilidad y la capacidad de adaptación del sistema. Se ilustra con un ejemplo de configuración de logs: "logging=true". Este tipo de configuración facilita la administración y el mantenimiento del sistema, simplificando el proceso de actualización y adaptación a cambios en los requerimientos operativos.

3. Prestaciones Tecnológicas de ServiceMix y Bundles Relacionados

Se detallan las prestaciones tecnológicas de ServiceMix, presentando un conjunto de bundles (componentes) diseñados para funcionar sobre su Kernel. Se mencionan bundles clave y sus funcionalidades: BPEL (Business Process Execution Language) para la orquestación de servicios; JBI (Java Business Integration) para integrar componentes de diferentes tecnologías; JMS (Java Message Service) para comunicaciones síncronas y asíncronas mediante mensajes; Apache CXF (un framework para la creación de servicios web, utilizando las APIs JAX-WS y JAX-RS); y NMR y Camel para el enrutamiento de mensajes. Esta descripción proporciona una visión general de las capacidades de ServiceMix como una plataforma robusta para la implementación de una arquitectura SOA, destacando su soporte para diferentes estándares y tecnologías. Apache ActiveMQ, una implementación de JMS, se describe como una herramienta de mensajería que permite a los componentes crear, enviar, recibir y leer mensajes de forma síncrona o asíncrona. Se explican los métodos 'receive' y 'onMessage' para comunicación síncrona y asíncrona, respectivamente. También se describe el framework Spring para la creación de objetos Java y su mecanismo de inyección de dependencias (Injection).

Referencia de documento

  • Introducción a la arquitectura de software (Carlos Billy Reynoso)
  • SOA Principles of Service Design (Thomas Erl)