La creación de servicios a partir de los principios de la orientación a servicios, genera una nueva capa de comunicación en el entorno empresarial. Esta capa, como se refleja en la Figura 42, sirve de nexo de unión entre la capa de procesos de negocio y la capa de aplicaciones.
Fig. 42. La capa de servicios es un nexo de unión entre los procesos de negocio y las aplicaciones. [7]
Los servicios por una parte representan procesos de negocio empresariales y por la otra están construidos a partir de aplicaciones automatizadas que implementan la lógica necesaria de los procesos de negocio. Se puede apreciar que se diferencia entre business logic o lógica de negocio y application logic o lógica de aplicación. La diferencia entre ambos conceptos es pequeña y recae en el hecho de si la lógica es automatizada o no. Mientras que la lógica de negocio sería a nivel descriptivo y funcional, por ejemplo explicada en la normativa de la organización, la lógica de aplicación es la generada con la programación. En este estudio hemos usado y usaremos (si no se menciona explícitamente) indistintamente el
57
término lógica de negocio para los dos conceptos debido a que ya se sobreentiende a qué tipo nos referimos (automatizado o no) en función del contexto en que lo utilizamos.
La existencia de esta capa de servicios, facilita la interoperabilidad, como se refleja en la Figura 43. A continuación se enumeran los principios ya estudiados y de qué manera contribuyen a la ella [8] .
Contrato de servicio estandarizado
Como hemos visto, conviene estandarizar los datos en el contrato. De esta manera se sientan las bases para la compatibilidad entre contratos en un entorno interoperable, facilitando así la creación y reconocimiento de modelos de datos por cualquier sistema. Tomando el ejemplo explicado en el principio de contrato, un tipo de dato que se refiera al número de factura será más interoperable si se identifica como NumeroFactura en lugar de ObtenerFacturaPeticionTipo.
Bajo acoplamiento
El bajo acoplamiento promueve la interoperabilidad al crear servicios menos dependientes entre ellos, ya que esto facilitará también que otros consumidores de otros entornos compartan datos con los servicios. Esto es consecuencia directa de la interoperabilidad aportada por el contrato, ya que como se ha visto, el bajo acoplamiento entre consumidor y contrato de servicio se deriva de un buen diseño de contrato.
Abstracción
También como consecuencia directa del diseño del contrato, aplicando la abstracción se limita la interacción de los consumidores con el servicio, por lo tanto, si se focaliza la interacción a determinadas capacidades y modelos de datos, se puede asegurar en mayor grado la interoperabilidad. Obviamente, en caso contrario, más información aportada por el servicio, más capacidades y más modelos de datos, implicaría menos control sobre la información y por lo tanto más posibilidades de encontrar conflictos entre consumidores y el servicio.
Reusabilidad
La reusabilidad incrementa la interoperabilidad como consecuencia directa de un mayor consumo de servicios que ya se presuponen interoperables a partir de su contrato estandarizado.
58
El control que ejerce un servicio sobre su entorno de ejecución genera servicios más seguros y con un comportamiento más predecible, esta estabilidad promueve la interacción con diferentes tipos de consumidores.
Sin estado
En la línea del principio de autonomía, servicios sin estado con alto índice de disponibilidad y escalabilidad fomentarán la interoperabilidad debido al grado de seguridad aportado por este principio.
Descubrimiento
Con el descubrimiento de servicios se maximiza el potencial de interoperabilidad del servicio debido a que hay más consumidores potenciales que lo pueden encontrar.
Composición
En consonancia con la reusabilidad ya que la composición es un modo de reutilización, estos deben ser altamente interoperables ya que su posible pertinencia a diferentes composiciones, incrementa su habilidad de inter-operar con otros servicios.
En el punto en que nos encontramos, ya conocemos con detalle los servicios, los principios de la orientación a servicios y la característica de interoperabilidad que potencian. Éstos son pilares fundamentales en la arquitectura orientada a servicios, pero aun nos falta otro elemento a considerar para entender plenamente el concepto SOA.
El elemento del que hablamos son los servicios web o web services. Como se dijo anteriormente, los servicios web son un tipo de implementación de servicios, en concreto, un conjunto de tecnologías que se han convertido en el estándar de facto en la creación de servicios. El hecho de que se hayan convertido en estándar es debido a que no existe actualmente una tecnología que reproduzca con más fidelidad los principios de la orientación a servicios (principios que son agnósticos como se ha visto) ni el concepto de interoperabilidad [7]. Esto no implica que la arquitectura SOA sea obligatoriamente con servicios web, lo que sí implica es que actualmente se promueve o recomienda la construcción de SOA con servicios web [7] y se deja la puerta abierta a que si un día en el futuro aparece una tecnología superior a los servicios web, entonces se dejarán de utilizar y la nueva tecnología se convertirá en el estándar.
Otro punto a tener en cuenta, es que tanto los servicios web como el concepto SOA existen por sí mismos. Se puede operar con servicios web sin que esto implique que se ha construido una arquitectura SOA como veremos más adelante. En definitiva, la relación entre web services y SOA es sinérgica (ambas tecnologías se potencian mutuamente), no de obligatoriedad.
59
Una vez aclarado este punto, indagaremos en profundidad sobre los servicios web. Una vez estudiados, podremos entrar finalmente en el concepto SOA.
60