Conoce la Arquitectura Orientada a Servicios y sus principios.

La velocidad con que cambia el mercado, la alta competitividad y la variación en la percepción, deseos y necesidades de los clientes resultan en un gran reto para las empresas que se apoyan en las tecnologías de la información y las comunicaciones; muchas compañías buscan alternativas que permitan suplir estas necesidades. Dentro de tantas opciones disponibles, se han enfocado en implementar una arquitectura orientada a servicios comúnmente denominada SOA (Service Oriented Architecture).

La Arquitectura Orientada a Servicios

Es  un Marco de trabajo que facilita la creación de aplicaciones empresariales como Servicios de negocio  modulares, proporcionando flexibilidad y velocidad a la hora de integrar u orquestar sistemas.

Definamos la palabra “Servicio” para entender mejor el texto. 

“Un servicio es una unidad autónoma de una o más funciones del software diseñada para realizar una tarea específica, como recuperar cierta información o ejecutar una operación. Contiene las integraciones de datos y código que se necesitan para llevar a cabo una función empresarial completa y diferenciada. Se puede acceder a él de forma remota e interactuar con él o actualizarlo de manera independiente”.

En síntesis, podemos afirmar que la Arquitectura Orientada a Servicios (SOA) facilita la interoperabilidad entre sistemas de información utilizando un lenguaje común para intercambiar información cuando sea necesario.

Dentro de los principios de esta arquitectura, podemos mencionar:

1. Contrato de servicio estandarizado.

Los servicios se adhieren a un informe de servicio. Un servicio debe tener algún tipo de descripción que describa de qué se trata. Esto facilita que las aplicaciones cliente comprendan lo que hace el servicio.

Cuando un servicio es implementado como un Web Service, es importante declarar un contrato específico donde se encuentren especificaciones como:

  • Nombre de servicio.
  • Forma de accesos.
  • Funcionalidades que ofrece.
  • Descripción de los datos de entrada de cada funcionalidad que ofrece.
  • Descripción de los datos de salida de cada funcionalidad que ofrece.
20220126_095616_0000

2. Bajo acoplamiento.

Menor dependencia. Esta es una de las características clave de los servicios web que establece directamente que debe haber la menor dependencia posible entre los servicios web y el cliente que demanda el servicio web. Por lo tanto, si la funcionalidad del servicio cambia en cualquier momento, no debe interrumpir la aplicación cliente ni dejar de funciona

20220126_095616_0001

3. Abstracción de servicios.

Los servicios incluyen la lógica que componen el mundo exterior. El servicio no debe revelar cómo realiza su funcionalidad; solo debe decirle a la aplicación cliente lo que hace y no cómo lo hace.

4. Reutilización del servicio.

La lógica se divide en servicios con el objetivo de maximizar la reutilización. En cualquier empresa de desarrollo, la usabilidad es un gran problema ya que, obviamente, uno no querría perder tiempo y esfuerzo construyendo el mismo código una y otra vez en las múltiples aplicaciones que lo requieren. Por lo tanto, una vez que se escribe el código para un servicio web, debería poder funcionar con diferentes tipos de aplicaciones.

20220126_095616_0003

5. Autonomía de servicio.

Los servicios deben tener control sobre la lógica que componen. El servicio sabe todo sobre la funcionalidad que ofrece, por lo que debería tener un control total sobre el código existente.

Autonomia de Servicio

6. Servicio Civil (No Estado).

Idealmente, los servicios deberían ser apátridas. Esto significa que los servicios no deben retener información de un estado a otro. Esto tendría que hacerse desde cualquiera de las aplicaciones cliente. Un ejemplo es un pedido realizado en un sitio de compras. Ahora puedes tener un servicio web que te da el precio de un artículo en particular. Pero si los artículos se agregan a un carrito de compras y la página web va a la página donde realiza el pago, el servicio web no debe responsabilizarse de que el precio del artículo se transfiera a la página de pago. En cambio, debe hacerse con la aplicación web.

20220126_095616_0005

7. Servicio Disponible (Descubrimiento).

Los servicios se pueden encontrar (generalmente en un registro de servicios). Ya hemos visto esto en el concepto de UDDI, que crea un registro que puede contener información sobre el servicio web.

Todo servicio debe tener la capacidad de ser descubierto para que, de esta manera, pueda ser utilizado y encontrado fácilmente, de tal forma que no se dupliquen servicios que ofrecen la misma funcionalidad.

El descubrimiento requiere:

  • Un medio de comunicación consistente acerca de recursos (metainformación) que se quiere poner a disposición para ser descubiertos.
  • Metadatos para ser documentados claramente por aquellos que tengan las habilidades de comunicación adecuadas.
  • Metadatos para ser almacenados de forma centralizada y mantenidos en un formato consistente.
  • Permitirnos el acceso a la información de metadatos a los que queremos hacer recursos disponibles para el descubrimiento.
  • La metainformación para ser efectivamente buscada en respuesta de las búsquedas de criterios.
  • La metainformación para ser claramente entendida por los que van a revisar los resultados de las consultas de descubrimiento.
20220126_095616_0006

8. Composición.

Este principio nos dice que todo servicio debe estar construido de tal manera que pueda ser utilizado para construir servicios genéricos de mayor complejidad, el cual estará compuesto de servicios de menor nivel. En el caso de los Servicios Web, esto se logrará mediante el uso de los protocolos para orquestación (WS-BPEL) y coreografía (WS-CDL).

El concepto de desarrollo de software a partir de componentes existentes independientemente fomenta el concepto de composición. Por ello el concepto de composición es heredado por la orientación a servicios, por lo que un proceso de negocio está automatizado mediante la combinación de múltiples servicios. Sin embargo, dentro de la orientación a servicios es mayor el enfoque en la creación de servicios que se pueden componer y recomponer dentro de múltiples soluciones para proporcionar la agilidad prometida por la SOA. 

Como resultado de este énfasis, algunas pautas son requeridas para el desarrollo de servicios que pueden ser efectivamente agregados en varias soluciones.

20220126_095616_0007

José Salcedo M.

CtO Cetus technology

Ingeniero de Sistemas, apasionado por la innovación y el conocimiento, cofundador en Cetus Technology SAS, dedicado en la obtención de resultados eficientes en los proyectos asignados.

Artículos que te pueden interesar