Por: Manuel Solano

|

01 Feb, 2015

SOA, Servicios y Bus de Integración, conceptos comunes en la jerga informática y de negocio de hoy día, pero su definición coloquial y uso varían según interpretaciones,
tecnologías, necesidades, soluciones propuestas y hasta por el momento en el tiempo en que se ha decidido interactuar con tales elementos.

Todos estos conceptos comparten en la arquitectura orientada a servicios un uso y una aplicación con grandes beneficios para los objetivos empresariales y es por ello que un repaso sobre los mismos se vuelve importante y determinante en su evaluación, adopción, mantenimiento y hasta en
 criterios que valoren continuidad y escalabilidad.

Orientación a servicios

Antes de hablar de arquitecturas y tecnologías asociadas, es bueno entender el concepto general detrás de este movimiento, la computación orientada a servicios. Una definición rápida es imaginarla como un contenedor de distintos servicios sobre una plataforma de computación distribuida, donde se incluyen además definiciones propias para conceptos como diseño, patrones, lenguajes, tecnologías y marcos de trabajo.

Sus principales objetivos se distinguen puntualmente en:

• Interoperabilidad: Todo servicio implementado se diseña para ser compatible con otros elementos de su misma naturaleza, lo que permite un ensamblaje efectivo y
reconfiguración a bajo costo para responder requerimientos de negocio que se suponen cambiantes.

• Federación: Con el establecimiento de una capa de contrato estándar entre servicios se minimiza la disparidad subyacente
permitiendo la gobernabilidad individual y la evolución necesaria.

• Plataforma neutral: La orientación a servicios es por definición neutral en cuanto arquitecturas o tecnologías propietarias, lo que permite al negocio no limitarse por
características propias de una plataforma.

• Alineamiento de negocio y tecnología: Los servicios se diseñan en respuesta a necesidades del contexto de negocio lo que los acerca más a los objetivos de la organización.

• Retorno de la inversión(1) (ROI): La mayoría de servicios son creados y vistos como activos de TI sobre los cuales se espera que su aporte sobrepase los costos de implementación y mantenimiento.

• Reducción de la carga tecnológica: Como resultado de los anteriores puntos el manejo de los elementos tecnológicos se facilitan, la reutilización, interconexión, reemplazo
y construcción y se simplifican bajo este esquema, lo que se traduce en menores costos y menos carga en general para TI.

La orientación a servicios propone la creación de fragmentos de solución específicos que puedan ser utilizados de forma colectiva y repetitiva, en búsqueda de cumplir con las estrategias específicas del negocio, y son precisamente estas unidades lo que se conoce
como servicios.

El paradigma para el diseño de soluciones

En la orientación a servicios existen ocho principios básicos de diseño:

1. Contrato estandarizado del servicio: El contrato compromete la forma y los datos con los que el servicio provee
funcionalidad a su consumidor, de esta forma las operaciones y los datos de entrada y salida definidos son respetados por la implementación que se asocia con cada
contrato.

2. Minimizar la interdependencia: Los servicios son planificados sin tomar en cuenta los detalles particulares de sus consumidores, de esta manera se evita la
dependencia de funciones y datos con otros servicios o sistemas.

3. Abstracción: El contrato solo provee información esencial para entender y localizar la funcionalidad y los datos que administra el servicio sin contemplar
la forma en como éste será finalmente implementado.

4. Reutilización: La funcionalidad asociada a un servicio se supone lógica agnóstica, permitiéndole ser reutilizado.

5. Autonomía: La implementación en plataformas de ejecución particulares no deben condicionar la funcionalidad misma del servicio ni cambiar los resultados que pueda proveer.

6. Sin estado: Los servicios deben evitar en la medida de lo posible mantener información específica de una instancia de ejecución o contexto y de esta forma minimizar el
consumo de recursos. No mantiene ni depende de condición pre-existente alguna.

7. Detectable: Los servicios deben proveer meta-datos que brinde suficiente información para que les permitan ser descubiertos e interpretados.

8. Composición: Por definición los servicios son elementos de composición, su fin último es participar como elementos en la creación de lógica de negocio que
atienda una determinada funcionalidad, sin importar la complejidad misma de la composición.


Arquitectura Orientada a Servicios (SOA)


La arquitectura orientada a servicios es el modelo con el cual se construyen soluciones en el paradigma de la orientación a servicios, bajo esta se plantean los principios para
diseñar y construir aplicaciones distribuidas que alcancen objetivos de negocio, donde se consideran elementos como la integración de sistemas, la alineación a procesos de
negocio, la innovación y respuesta en tiempos menores ante necesidades de los clientes, una adaptación ágil y temprana ante las demandas generadas de la misma competitividad de los mercados y modelo a escalar.

Una implementación SOA puede componerse de una combinación de tecnologías, productos, API’s(2), extensiones de soporte en infraestructura entre otros elementos.

El manifiesto SOA

El manifiesto(3) sobre la arquitectura orientada a servicios publicado en www.soa-manifesto.org es una formalización producto del esfuerzo de diversos grupos comprometidos de distintas industrias y liderados durante el segundo simposio internacional sobre el tema; en este documento se establece a un alto nivel
una clara separación de la arquitectura orientada a servicios y el concepto de orientación a servicios como tal. A continuación, un segmento textual del documento tomado de dicho sitio:


“La Orientación a Servicios es un paradigma que enmarca lo que usted hace. La Arquitectura Orientada a Servicios (SOA) es un tipo de arquitectura que resulta de aplicar la orientación a servicios.

Hemos estado aplicando la orientación a servicios para ayudar a las organizaciones a entregar consistentemente valor a los negocios, de manera sostenida, con mayor agilidad y con efectividad en los costos, alineada con las necesidades cambiantes de los negocios.

A través de nuestro trabajo hemos llegado a priorizar:

  1. El valor del negocio por encima de la estrategia técnica. Las metas estratégicas por encima de los beneficios específicos de los proyectos.
  2. La interoperabilidad intrínseca por encima de la integración personalizada.
  3. Los servicios compartidos por encima de las implementaciones de propósito específico.
  4. La flexibilidad por encima de la optimización. El refinamiento evolutivo encima de la búsqueda de la perfección inicial.

 

Esto significa que aunque valoremos los elementos de la derecha, valoramos aún más los elementos de la izquierda"

 

Servicios

 

Como se ha anotado con anterioridad, los servicios son las unidades lógicas que permiten la composición de soluciones en el paradigma de la orientación a servicios. Su diseño e implementación como una pieza independiente de software con características específicas obedecen al alineamiento con las estrategias de negocio en la arquitectura SOA.

A cada servicio se le asigna su propia funcionalidad distintiva y es comprometido con un conjunto de capacidades relacionadas en un contexto específico, y es por esto, que un servicio puede se considerado como un contenedor de capacidades asociadas con un propósito común.

El modelo de un servicio

Es una clasificación que permite identificar a qué tipo base predefinido pertenece un servicio según ciertos criterios de utilización. Para determinar esto, se utiliza la naturaleza de lógica implementada, el potencial de reutilización de dicha lógica y el nivel de relación de servicio con dominios específicos dentro de la estructura empresarial.

Los siguientes son los tres tipos más comunes de clasificación de servicios en proyectos SOA:

• Servicio tarea: Es un servicio con funcionalidad no agnóstica(4) al contexto de ejecución. Por lo general, tiene un propósito único y específico asociado a la lógica de un proceso de negocio padre.


• Servicio entidad: Es un servicio reutilizable con funcionalidad agnóstica al contexto de ejecución y se asocia por lo general a una entidad de negocio, como por ejemplo a facturas, clientes, etc.

• Servicio utilitario: Es un servicio reutilizable con funcionalidad agnóstica al contexto de ejecución y explícitamente separado de las especificaciones resultado del análisis de negocio y los modelos derivados. Este tiene funcionalidad asociada a la generalidad de la tareas tecnológicas, como por ejemplo notificación, correo, bitácoras o procesos
de seguridad.

Cabe resaltar que lo anterior es sólo un posible modelo para ser utilizado en las fases de análisis y diseño, pero perfectamente una organización puede optar por su propio conjunto de clasificación asociado a la realidad de su negocio para un mejor entendimiento, lo que sí es importante, es su clara definición por su importante papel en el modelado de las soluciones.

Inventario de servicios


Un inventario de servicios es una colección independientemente estandarizada y gobernada de servicios complementarios dentro de los límites que representa una empresa(5) o un segmento de la misma. Una organización puede contar con múltiples inventarios de servicios, y este conjunto se conoce como dominio de inventario de servicios.

Los inventarios de servicios son típicamente creados bajo un modelo de implementación top-down(6) que resulta en la definición de “modelo de
inventario de servicio”. La subsecuente aplicación de diseños de servicios y las agregaciones por las necesidades propias del negocio, utilizando un inventario de servicios es

de extrema importancia, en el objetivo de establecer un alto grado de interoperabilidad entre funcionalidades, con lo que se consigue además una visión más clara en el tema de composición en búsqueda de soluciones a necesidades más complejas como respuesta a nuevos o cambiantes requerimientos de negocio.


Portafolio de servicios


El portafolio de servicios o bien catálogo de servicios es un término utilizado para representar un conjunto de servicios dentro de
la infraestructura de tecnologías de información.

La distinción entre inventario de servicios y portafolio de servicios es importante para su utilización en distintos contextos:

• Un inventario de servicios representa una colección de servicios implementados que son gobernados independientes y pertenecen a dueños no relacionados.


• El análisis de inventario de servicios es un proceso de modelado por el cual los servicios candidatos son definidos para un nuevo o ya existente
inventario.

• El modelo de inventario de servicios es una especificación técnica que representa el resultado de haber ejecutado un análisis de inventario de servicio.

• El término “portafolio de servicio” tiene una definición más ambigua comparada con “inventario de servicio” en cuanto que el primero puede representar todos o solo un subconjunto de los servicios a cargo de TI.


• Un “portafolio de servicio” existe como un documentación de alto nivel de servicios utilizados para propósitos de planificación.

• Un “portafolio de servicio” por lo general engloba uno o mas inventarios de servicios.

Finalmente, cabe mencionar que la administración de un portafolio de servicios es la práctica de planificar la definición, puesta en producción y
evolución de colecciones de servicios.

Contrato de un servicio

Quizás uno de los aspectos más interesantes en las especificaciones SOA es lo referente al contrato de un servicio, que expresa la interface técnica necesaria para implementar y luego interactuar con la lógica que lleva a la creación de un servicio.

Puede ser compuesto por uno o más documentos que expresan la metainformación acerca de su funcionalidad. Esta definición establece una forma de descubrir y utilizar la información ofrecida por un servicio, inclusive por herramientas automatizadas. Existen varias formas de implementar servicios, y por tanto, de definir sus
metadatos o contrato:

• Cuando se realiza una implementación como servicio web (web service), la descripción más común es a través de un WSDL, junto a definiciones de datos utilizando Schemas XML y políticas con WS-Policy. Por lo general, se crea un único WSDL que puede referenciar uno o más esquemas Schemas XML y políticas WS-Policy.

• Cuando la implementación del servicio es a través de REST, estos son accedidos vía un contrato de estructura uniforme, similar al provisto por HTTP y los tipos de media Web. Los servicios de contrato son representados diferente en dependencia del contrato uniforme que está involucrado.

Algunos conceptos complementarios 

Finalmente, para entender la interacción de conceptos en una arquitectura SOA básica se necesita de la aclaración de unos elementos adicionales:

• Proveedor de servicios: Es quien provee la implementación del servicio y publica su localización y contrato para uso de los consumidores.
• Consumidor de servicios: Es aquel elemento del negocio (aplicación o servicio) que requiere de la lógica implementada por un servicio. Utiliza el catálogo para analizar sus opciones.
• Catálogo de servicios: Unida a la definición general, desde el punto de vista pragmático, es un directorio donde se publican y listan los servicios dispuestos por el proveedor para ser utilizados por los consumidores.


Bus de integración y SOA


Hasta ahora hemos repasado los conceptos más relevantes del paradigma de orientación a servicios y su utilización a través de la arquitectura (SOA), pero es posible que un artefacto común y tal vez poco comprendido (al menos por los no técnicos) que se utiliza por lo general en esta tendencia tecnológica sea el de un bus de integración.

En el mundo empresarial, este artefacto es tan común y a la vez tan poco cuestionado que a la pregunta de ¿qué es un bus de integración?, Algunos posiblemente contesten de forma inmediata que se refiere a una herramienta por medio de la cual las aplicaciones obtienen servicios como interconexión y transformación, entre otros; respuesta que no es ni errada ni completa del todo. Otro error común es creer que al implementar un BUS se está implementando de alguna forma SOA, lo cual es equivocado y por tanto es importante ahondar un poco en este concepto.


Como responsables de la arquitectura o beneficiarios de la misma es necesario tener claro qué es realmente y cómo funciona dentro del esquema general para que de esta forma se aproveche realmente su funcionalidad en beneficio de un negocio más competitivo y ágil.

¿Qué es un BUS?


¿Es una herramienta? ¿Es un conjunto de ellas? ¿Para qué sirve realmente?
¿Cómo se relaciona con SOA?

 

El concepto BUS agnóstico de las implementaciones y tecnologías, según el sitio www.soapatterns.org se define como:

“Un bus de servicios empresariales que representa un ambiente diseñado para manejar interconectividad sofisticada entre servicios. Se establece como una capa intermediaria de procesamiento que puede ayudar a solventar varios problemas típicos asociados a temas como fiabilidad , escalabilidad y la disparidad de comunicaciones.”

De lo anterior, se deduce que un bus empresarial es un concepto, un patrón y no explícitamente una herramienta concreta. Como modelo de arquitectura de software para computación distribuida, es una variante especial de un modelo más general y muy conocido: cliente - servidor; promueve agilidad y flexibilidad en relación a la comunicación entre aplicaciones.

Por supuesto que existe software que provee las características que definen este artefacto y actúen como tal. Es importante notar que por definición la creación de un bus inclusive puede ser la interacción de varios sistemas de software.

Un bus empresarial es por tanto más un concepto de configuración y manejo de sus responsabilidades y no solamente una implementación concreta de sus características.

En cuanto a su uso y relación con SOA, si bien no es un requisito para poder construir aplicaciones bajo la arquitectura de servicios, es un buen complemento para manejar una serie de planteamientos establecidos por la adopción de este paradigma y que debe ser solventado por los departamentos de TI .

En concreto, un bus empresarial o ESB (como comúnmente se conoce) tiene como principales responsabilidades:
• Monitorear y controlar el trasiego de mensajes que se intercambia entre servicios.
• Resolver conflictos de comunicación entre servicios.
• Control sobre los detalles de implementación y temas de versión de los servicios que ejecuta.
• Orden y administración sobre uso redundante de servicios.
• Atender servicios básicos, como gestión de eventos, transformación y mapeo de datos, manejo de mensajería y los eventos asociados, manejo de seguridad y de excepción, conversión de protocolos y reforzar el cumplimiento de la calidad adecuada sobre el canal de comunicación.


Beneficios clave de ESB implementando SOA

 


Con la implementación de un BUS en un plan de desarrollo a través de arquitecturas SOA se obtienen beneficios como:
• Una plataforma centralizada para administrar la lógica de ruteo de la mensajería.
• Una plataforma que permite administrar la lógica de transformación.
• Una plataforma que permite administrar el  enriquecimiento de mensajería necesaria para cumplir con las necesidades planteadas por los servicios.
• Manejo de estándares abiertos de mercado.
• Mayor flexibilidad para realizar cambios si hay nuevos requisitos.
• Posibilidad de escalar desde soluciones puntuales hasta implementaciones de empresa(bus distribuido).
• Algunos tipos de servicio listos para funcionar, ya predefinidos en la plataforma.
• Adquisición de un marco de trabajo donde se utiliza mayormente la configuración sobre la codificación de la integración (composición).
• Seguridad y estabilidad en el manejo de los mensajes.


Siguientes pasos


Hasta ahora es claro de donde proviene y que conceptos son claves en la implementación SOA, y el siguiente paso es la aplicación pragmática, evaluar cómo y cuándo y de qué manera es posible realizar una implementación bajo este esquema. También es importante entender con más detalle las piezas fundamentales de esta arquitectura, los servicios, las tendencias, razones y mejores prácticas.

Finalmente, SOA ha conseguido un espacio en el mundo empresarial y ha evolucionado. Entender las tendencias y alternativas y seguir su pulso en el mercado es igualmente importante.

 


Edición #65

Business transformation Edicion #65

Contenido

  • Informe de Responsabilidad Social Empresarial 2015
  • Agencias Motta agiliza sus procesos
  • Un Gol por la Educación otorgó 299 tabletas
  • Principios básicos que debe tener un Data Center
  • 5 precauciones para evitar errores graves en la migración de datos
  • Introducción a la Orientación a Servicios por medio de SOA
  • Bienvenidos a la Era Cognitiva
  • Biometría próxima frontera de la prevención del fraude online
  • ¿Por qué importa la infraestructura TI?
  •  Soluciones de colaboración para empresas en desarrollo
  • ¿Estás preparado para entender a tu consumidor?
  • SAP HANA Análisis predictivo
  • Innovar es mucho más que adquirir nueva tecnología
  • F5 fortalece capacidades de la comunidad OpenStack