SOA, arquitectura orientada a servicios

Entremos en materia, SOA es una arquitectura distribuida orientada a servicios. Un servicio es un componente que encapsula la lógica requerida para ejecutar un proceso de negocio, lo que implica dividir los procesos de negocio en diferentes unidades lógicas (servicios) que hacen parte de una solución empresarial distribuida. Cada uno de estos procesos de negocio debe identificarse y habilitarse para alcanzar los objetivos del negocio.(Christudas, Barai, & Caselli, 2008) .

Un servicio puede estar compuesto por otros servicios, y requiere de una descripción que indique nombres, parámetros y ubicación, para que pueda ser utilizado. Esta información se especifica en un contrato o interfaz. En tal sentido, el contrato de un servicio es un acuerdo entre el proveedor y el consumidor, que especifica los datos de entrada y salida, además del formato (XML, JSON, Java Object, etc.) en el que va intercambiarse esta información. (Richards, 2016)

Veamos cuáles son los principios de la orientación a servicios, de acuerdo con Erl (2016):

Principio Descripción
Estandarización Los servicios deben seguir estándares en su diseño y en la definición de sus interfaces o contratos, para facilitar su uso y evolución controlada.
Reducció del acoplamiento Al definir las relaciones dentro y fuera de los límites del servicio, debe haber una constante tendencia a la reducción de dependencias entre el contrato del servicio, su implementación y sus consumidores. Lo que se busca es mantener la independencia en el diseño y evolución del servicio, asegurando una línea base de interoperabilidad.
Abstracción Los contratos de los servicios deben contener la mínima información necesaria para exponer en sus contratos o interfaces, ocultando los detalles del diseño e implementación del mismo.
Reusabilidad Siempre se debe diseñar un servicio pensando en que sus características sirvan a más de un propósito y varios consumidores, buscando que sea un activo reutilizable de la empresa. La reusabilidad es una de las bases del modelo orientado a servicios.
Autonomía El servicio debe tener el control significativo sobre el ambiente en donde se ejecuta y los recursos de que dispone.
Sin estado Mantener excesiva información de estado en un servicio puede comprometer la disponibilidad y predictibilidad de su comportamiento. En este sentido, los servicios pv. deben ser diseñados para mantener el estado, solo cuando sea requerido.
Descubrimiento Los servicios deben contar con los metadatos necesarios para facilitar su descubrimiento e interpretación. Es decir, deben proveer información suficiente para que los consumidores puedan identificarlo, utilizarlo y reutilizarlo.
Composición Los servicios deben estar en capacidad de participar como miembros efectivos en una composición para crear servicios compuestos, independiente del tamaño y complejidad de estos últimos.

Ahora bien ¿Qué tecnologías o herramientas tenemos disponibles para implementar SOA?, hay gran variedad de opciones que se vienen utilizando, para implementar este tipo de arquitectura, tenemos: