7. SERVICE-ORIENTATION
7.1 CONTRATOS DE SERVICIOS ESTANDARIZADOS
Los contratos (Figura 23) son la base de la orientación a servicios, ya que gracias a ellos se permite la relación entre servicios. Los contratos definen los servicios, las operaciones y los mensajes, expresando así su propósito y sus capacidades.
Fig. 23. Finalidad de un contrato de servicio. [8]
Como se ha mencionado anteriormente, un contrato incluye uno o varios documentos de descripción de servicio. Encontramos los documentos de descripción de servicio técnicos y los que no son técnicos [8]. Los documentos técnicos son los que son consumidos en tiempo de ejecución, es decir, aquellos que tienen la información necesaria para que se ejecute el proceso en que los servicios están involucrados, y los que no son técnicos, son documentos que aportan información de soporte adicional a la información técnica. Veamos en detalle cada tipo.
7.1.1 Documentos técnicos
En las descripciones técnicas encontramos las operaciones permitidas por el servicio (sus capacidades), los mensajes necesarios para intercambiar información a través de las operaciones y los modelos de datos que soportan los mensajes. Por ejemplo, si tenemos un servicio relativo a una factura, en su descripción técnica podríamos tener una operación que sea ObtenerFactura. Esta operación, tendrá dos mensajes, un mensaje de petición de la factura ObtenerFacturaPeticion y un mensaje que devolverá la respuesta ObtenerFacturaRespuesta. Ambos mensajes contendrán unos tipos de datos asociados, en
38
el mensaje de petición viajará el identificador de la factura para que el servicio sepa qué factura tiene que ir a buscar. Una vez la encuentre, construirá en el mensaje de respuesta otro tipo de dato que será la factura con toda su información. Es importante que estos tipos de datos estén estandarizados ya que es muy probable que la información de una factura esté presente en diferentes servicios. Por lo tanto, en nuestro ejemplo, en los datos usados en el mensaje de petición ObtenerFacturaPeticion definiríamos el identificador de la factura como NumeroFactura y no como ObtenerFacturaPeticionTipo. De esta forma, se estandariza el modelo de datos referente al número de factura y se puede reutilizar en otros servicios u operaciones que también lo usen.
Otra posible descripción técnica son las descripciones de políticas. Las políticas son un conjunto de condiciones que determinan si se debe proveer acceso a las operaciones o no, tal y como se muestra en la Figura 24.
Fig. 24. Uso de políticas en los servicios. [7]
Como ejemplo de políticas encontramos reglas que hacen referencia al cifrado de mensajes con un determinado algoritmo, o que los mensajes deban viajar signados para así asegurar la autoría de los mensajes.
Las políticas también están sujetas a la estandarización, con lo cual podemos tener definiciones de políticas separadas de los servicios y por lo tanto susceptibles de ser reutilizadas.
7.1.2 Documentos no técnicos
Existen otros documentos a parte de los documentos técnicos que pueden incluirse en un contrato. El ejemplo más común es el uso del acuerdo de nivel de servicio o service level
agreement (SLA). El SLA asocia características de calidad de servicio o quality of service
(QoS) al contrato. Estas características pueden ser referentes a la disponibilidad, accesibilidad o rendimiento asociadas a los servicios, por ejemplo, proveer una garantía de tiempos de respuesta de los servicios y sus tiempos medios, estadísticas asociadas a los consumos (tipos de consumidores o número de accesos) y una programación horaria de garantía de disponibilidad del servicio.
39 7.1.3 Versionado
Cuando un servicio lleva ya un tiempo en uso en un entorno empresarial, lo más normal es que haya aumentado sus relaciones con otros servicios consumidores. Esto tiene una parte positiva y una posible parte negativa [8]. La parte positiva es que el uso intensivo del servicio demuestra que éste está teniendo un alto índice de reusabilidad. La parte negativa podría ser que en cierta manera se está generando un acoplamiento a nivel empresarial con el servicio, dado que cada vez más servicios dependen del contrato del servicio. Es aquí donde un buen diseño estandarizado del servicio minimiza el número de futuras versiones del contrato y por lo tanto, minimiza los cambios necesarios en los servicios que consumen dicho contrato.
7.1.4 Dependencias tecnológicas
Los contratos por naturaleza deben ser implementados con una tecnología en concreto, es por ello que dependen de dicha tecnología. Esto quiere decir que si la tecnología queda obsoleta o es actualizada, los contratos deberán modificarse acorde a los nuevos cambios, en el caso de que lleguen a influenciar en el diseño del contrato.
Una vez vistos los contratos en detalle, podemos analizar en qué manera influyen en otros principios. El uso de contratos por ejemplo, minimiza las dependencias con los demás servicios ya que éstas se concentran en el contrato evitando así dependencias entre las implementaciones de los respectivos servicios, por lo tanto, estamos favoreciendo el principio de desacoplamiento. Así mismo, limitando la información que aparece en el contrato a su propósito, capacidades y requisitos de interacción, dejando de banda la información no esencial, conseguimos que el servicio tenga el grado de abstracción requerido. En cuanto a la reusabilidad, el objetivo es conseguir servicios agnósticos, es decir, que sean lo más genéricos posibles para así aumentar su reusabilidad potencial. Esto se consigue mediante un buen diseño de los contratos, definiendo adecuadamente sus operaciones. Hemos visto con anterioridad que los servicios pueden alojarse en un repositorio de servicios. Aunque el servicio esté en el repositorio, es necesario que se defina claramente el propósito del servicio, incluyendo anotaciones descriptivas. De esta forma pues, se favorece así el principio de descubrimiento de los servicios.