Anteriormente, en este mismo blog, ya he tratado esta parte de SOA que quizás no se le está dando la importancia que tiene. Me refiero al gobierno SOA que podeis ver aquí.
Cuando empecé a leer documentación sobre todo lo referente a la gobernanza de SOA me dio la sensación de que se usa a veces un lenguaje demasiado complejo para algo que es relativamente sencillo. Y es que en esencia, el gobierno SOA son unas mínimas normas y prácticas para poner orden en la anarquía en que puede desembocar un sistema T.I. basado en cientos o miles de servicios que se llaman entre sí, en los que unos se componente de otros más sencillos, que tienen un ciclo de vida, etc. etc.
El objetivo de esta entrada, por lo tanto, es tratar de una manera sencilla pará que sirve el gobierno SOA y también, por qué no, plantear una sencilla herramienta que nos permita gestionarlo de alguna manera. Está claro que es mejor tener una herramienta sencilla que no tener ninguna. Más adelante se verá claro el por que.
Este semana he estado poniendo en mi twitter algunas preguntas que me planteo en mi trabajo diario con la organización de los servicio se negocio de la empresa:
- ¿quien usa mi servicio? ¿a quién afecto si lo modifico?
- el servicio que necesito ¿ya existe?
- si el servicio que necesito ya existe pero necesito que se haga una modificación en él ¿a quién se lo pido?
- Por último, pero no menos importante: ¿mi servicio es útil para el resto de la organización?
La herramienta
En la figura anterior, vemos las entidades que mínimamente se necesitan para lograr la funcionalidad que necesitamos. he omitido en el diagrama los atributos de las clases por claridad.
- Consumer: es el consumidor del servicio web. Típicamente es un frontal (Frontend) u otro servicio web. Está definida como una clase abstracta con dos especializaciones (Frontend y WebService)
- WebService: es la clase principal. Aquí se recogerán los metadatos necesarios como el identificador del servicio, el responsable funcional del mismo, quizás también el responsable técnico.
- Se establece una relación «invokes» entre el Consumer y el WebService. Es decir, un servicio puede invocar a otro. Por ejemplo un servicio compuesto, que integra otros dos servicios, aparecerá como que invoca a estos dos.
- ¿quién usa mi servicio?: Navegando por la relación invokes, de manera recursiva hacia atrás, podemos ver para un servicio quien lo está llamando. De este modo obtendremos un análisis de impacto de los servicios afectados por un posible cambio en un servicio concreto.
- el servicio que necesito ¿ya existe?: Con los metadatos suficientes en la clase WebService podemos hacer una búsqueda y ver si el servicio ya existe. Esto se puede complicar si añadimos una clasificación con una taxonomía, búsqueda en texto libre, etc.
- ¿a quíen le pido una modificación del servicio?: una vez localizado el servicio, se tiene la información de contacto en el atributo de responsable funcional. Únicamente habrá que pedirle a esta persona la modificación del servicio que necesito.
Deja una respuesta