9. ARQUITECTURA ORIENTADA A SERVICIOS (SOA)
9.5 METODOLOGÍA DE IMPLEMENTACIÓN DE SOA
La implementación de soluciones orientadas a servicios es un proceso complejo que requiere la participación y cooperación de partes interesadas (stakeholders) dentro de una empresa (Figura 56).
Fig. 56. Stakeholders de una empresa. [24]
El término stakeholder fue utilizado por primera vez por R. E. Freeman [25], y define como
stakeholder como “quienes pueden afectar o son afectados por las actividades de una
93
interesadas de dentro de la empresa, como los empleados, gerentes o propietarios, y partes externas, como proveedores, clientes, accionistas, etc…
Debido a que SOA constituye un alineamiento entre el negocio y la tecnología, tal y como la definió IBM, debería de haber un trabajo conjunto entre partes interesadas, sobre todo las internas, en la construcción de una arquitectura orientada a servicios. Esto es debido a que los servicios representan procesos de negocio de la empresa, con lo cual, responsables de la gerencia con un fuerte conocimiento del negocio deberán relacionarse con otros empleados de la empresa cuya función esté relacionada con los sistemas de información. Si desde el departamento de sistemas se construyen servicios que no representan adecuadamente las funciones de negocio, los servicios no serán de utilidad o lo serán en menor grado. También se debería de tener en cuenta en este diseño de SOA a las partes interesadas externas, ya que es muy posible que proveedores o clientes hagan uso de los servicios publicados por la empresa, con lo cual, estos servicios deberían estar construidos para satisfacer las necesidades de sus consumidores.
Dentro de este marco colaborativo a nivel empresarial, se requiere de una metodología bien definida para llevar a la realidad una arquitectura orientada a servicios, describiendo los pasos a realizar, los roles y responsabilidades de cada grupo involucrado. La parte más importante de cualquier metodología es, por supuesto, el proceso de la creación de servicios. Existen dos tipos de estrategias de aproximación en base a las capas de lógica de negocio y lógica de aplicación.
La primera estrategia es la top-down. Esta estrategia simboliza un proceso de definición de arriba a abajo, es decir, de la capa de lógica de negocio hacia la capa de lógica de aplicación. Esta estrategia se considera que tiene un componente más analítico, debido a que al empezar por la lógica de negocio permite no solamente crear servicios que cumplan los principios de
service-orientation sino que también permite una reorganización de los procesos de negocio
actuales.
La segunda estrategia es la bottom-up o de abajo a arriba. Será el proceso inverso a la estrategia top-down, con lo que el diseño de los servicios se empieza a partir de la lógica de aplicación, es decir, de las aplicaciones ya existentes. Esta estrategia es más rápida que la top-
down debido a que el tiempo dedicado al diseño de los servicios es menor, estos se generan a
partir de las aplicaciones ya existentes. El inconveniente de esta estrategia es que no se conseguirá un cumplimento de los principios de service-orientation tan adecuado como la estrategia top-down. Esto es debido a que se parte de lógica existente y lo único que se hace es incluir servicios web como wrappers, con lo que, por ejemplo, no se puede crear un buen diseño de contrato estandarizado.
En resumen, la estrategia top-down es una estrategia que requiere más tiempo (y por lo tanto es más costosa) que la estrategia bottom-up. Pero por otro lado, es la estrategia deseada para conseguir un buen nivel de cumplimiento de una SOA Contemporánea [7].
94
Un ejemplo de una posible metodología top-down podría ser la representada en la Figura 57.
Fig. 57. Metodología top-down para la implementación de SOA. [26]
Las actividades principales de esta metodología son las siguientes: • Referencia de la arquitectura SOA.
Define los aspectos principales de la arquitectura SOA, como por ejemplo, la definición de servicio y los conceptos estudiados relacionados con la orientación a servicio: contrato, mensaje, inventario de servicios, etc.. También otros conceptos que forman parte del lenguaje relacionado con SOA y los servicios, como acoplamiento, granularidad, estandarización, en general, términos usados dentro de SOA y que las personas involucradas en la implementación de SOA deben conocer.
• Definición de la arquitectura de negocio
Definición de los procesos de negocio, servicios e información involucrados en el conjunto de la empresa a nivel operacional y estratégico. Un ejemplo de ello podría ser un proceso de compra o de venta, detallando los pasos que se suceden en proceso y que entidades se ven involucradas, como por ejemplo, las facturas.
• Identificación de servicios
Definición del conjunto de servicios en el contexto empresarial. Esto formará el inventario de servicios. A partir de los procesos de negocio identificados en el paso anterior, se analizan dichos procesos y se identifican los posibles servicios que puedan
95
haber en ellos, tal y como hemos estudiado, podemos determinar servicios de tarea, de entidad y de utilidad.
• Definición del modelo de información semántica
Creación de un modelo de información empresarial que define las semánticas compartidas de los procesos y servicios. Esta actividad se lleva en paralelo con la identificación de los servicios. Este modelo semántico es influenciado tanto por la arquitectura de información como la de negocio. Gracias a este paso, conseguiremos elaborar un vocabulario unificado que nos será muy útil para la creación de contratos de servicio estandarizados como se ha visto.
• Especificación de servicios
Creación de los contratos de servicio en tiempo de diseño. Crearemos las estructuras de datos estandarizadas necesarias a partir del modelo de información semántica elaborado en el paso anterior y también se crearán las interfaces que determinan las operaciones que permitirán los servicios. Por ejemplo, si hemos determinado un servicio Factura, una posible operación sería getFactura con parámetro de entrada el identificador de la factura.
• Implementación de servicios
En esta fase se implementan los servicios, teniendo en cuenta la arquitectura de las aplicaciones y la arquitectura de negocio. Lo importante de este proceso es que no hay que tener un inventario completo de servicios identificados, se puede empezar por el nivel de servicio de más alto nivel y luego ir descendiendo en cascada para cada vez ir definiendo más servicios, actualizando nuestro inventario de servicios. Siguiendo el caso de ejemplo con facturas, una vez definido el servicio Factura y estando éste operativo, puede ser que sea un nuevo requisito más adelante la creación de un servicio que sea LiniaFactura, podremos entonces crear este nuevo servicio y modificar la implementación del servicio Factura para que utilice el nuevo servicio LiniaFactura. Con esto, la funcionalidad de Factura no se ha visto alterada de cara a sus consumidores ya que el cambio ha sido transparente, y por otro lado tenemos en nuestro inventario un nuevo servicio LiniaFactura que podrá ser reutilizado por otros servicios si hace falta.
Para finalizar nuestro estudio sobre SOA, en el siguiente punto vamos a hablar de las ventajas e inconvenientes del uso de este tipo de arquitectura.
96