La Importancia de la Gobernabilidad en SOA
¿Qué es la Gobernabilidad en SOA?
A priori puede resultar una pregunta dificil de responder; pero lo que sí que tiene que quedar claro es que se trata de uno de los puntos más importantes a tener en cuenta a la hora de emprender un proyecto SOA.
Normalmente, gobernabilidad no es solo un conjunto de tecnologías que te permiten llevar a cabo satisfactoriamente una arquitectura SOA. Suele ser un conjunto de herramientas en conjunto con diversas metodologías, guías y buenas prácticas.
Cuando hablamos de gobernabilidad, no podemos dejar de hablar de Gestión y Registro de Servicios. Los registros UDDI han evolucionado en la mayoría de los fabricantes, hasta ofrecer auténticas herramientas de gestión y organización de servicios. Muchos de ellos tienen un elemento central que suele ser un registro UDDI, pero generalmente suelen ser mucho más que eso: registro de servicios, políticas de gestión, de seguridad, ciclos de vida, repositorios de información de todo tipo asociada a los servicios, etc…
Y asociado a esos registros de servicios, tenemos que hablar de un concepto importante que es el de los ciclos de vida asociados (no solo a los servicios sino también a toda la arquitectura): normalmente evidenciaremos 4 fases en ese ciclo: Análisis, Diseño, Desarrollo y Medida (o Monitorización).
- Análisis: Comprende normalmente la fase de análisis de la organización o empresa objeto de la Arquitectura SOA. Es importante analizar no solo lo existente sino también lo que se va a construir. Es necesario identificar como está estructurada la empresa, las areas existentes y como se encuentra definida la organización. Es en este punto donde debemos definir un Plan de Gobernabilidad correcto y adecuado a las necesidades (que podrá, no obstante, ser modificado a futuro si encontramos dicha necesidad).
- Diseño: Una vez que se ha identificado la oportunidad para construir una Arquitectura SOA debemos definir los distintos niveles que serán necesarios, la gente que va a estar involucrada y en que medida. Puede ser interesante definir un grupo de gente encargada de asegurar la excelencia en la calidad de la gobernabilidad planteada (Governance Excellence Team). Habrá que, además, identificar como se va a organizar los departamentos de IT y otros con respecto a un proyecto de estas características.
- Desarrollo: Será el momento de poner en funcionamiento lo diseñado en las fases previas. Habrá que poner en funcionamiento las distintas políticas que aseguren la calidad de los desarrollos. En este punto es donde, a muy nivel técnico, deben registrarse los servicios y hacerse disponibles según los propios ciclos de vida de aceptación para el resto de usuarios. Aquí es donde debemos sacar todo el rendimiento a las herramientas tecnológicas que nos permitirán llevar a cabo una gobernabilidad de la arquitectura de manera correcta (principalmente gracias a repositorios (que no registros) de servicios).
- Medida: La monitorización y visión del funcionamiento de la arquitectura nos permitirá determinar los fallos o carencias que tiene y ofrecer una remodelación de los diseños iniciales. El cumplimiento de los niveles establecidos, SLA’s, etc.. nos permitirá ver que se está haciendo bien y que se está haciendo mal. Este punto es en el cual se cierra el ciclo de vida y se permite el aseguramiento de la calidad por el refuerzo de la misma.
La Gobernabilidad en SOA es un tema importante debido principalmente a la interdependencia de los sistemas involucrados: existen múltiples propietarios, múltiples políticas, etc… y ello conlleva generalmente que cada “incidencia” de reutilización pueda provocar dependencias adicionales.
Herramientas tecnológicas de apoyo a la Gobernabilidad SOA:
- Repositorios de Servicios: Suelen ser componentes basados en registros UDDI, pero que hoy en día van mucho más alla. Normalmente permiten almacenar servicios para ser disponibles en la propia arquitectura SOA siguiendo un modelo de publicación, descubrimiento y subscripción. Su forma de exponer los servicios se basa en los WSDL, lo que permite tener definido cualquier servicio, principalmente a través de un ESB o Bus de Servicios (al que normalmente va conectado el Repositorio de Servicios).
Gracias a un repositorio de servicios vamos a disponer de todos los servicios organizados y facilmente accesibles para ser reutilizados. Estas herramientas suelen disponer de numerosas capacidades como ciclos de vida de aceptación de los propios servicios, monitorización de los mismos para ver su uso, capacidades de alerta de cambios a todos los suscriptores, identificación de los desarrolladores de los servicios, elementos de definición adicionales, etc… - Monitorización: Normalmente son herramientas que permiten monitorizar el consumo de los servicios existentes. De esta manera podemos ver si se están utilizando adecuadamente, cuales son más críticos, tiempos de respuestas, etc…
Gracias a estas herramientas podremos medir los distintos indicadores, SLA’s y demás mediciones necesarias para ver si se está asegurando los niveles mínimos de calidad establecidos. En caso de que no fuera así, se tomarán las medidas oportunas para solucionarlo. - Seguridad: Existen herramientas específicas para definir los distintos niveles de seguridad de nuestra arquitectura y por tanto tener siempre identificados los servicios dentro de dichos niveles. Podremos añadir seguridad adicional a la existente por los propios servicios y así tener identificado en todo momento quién accede y como accede a los servicios.
Soa
[...] otra ocasión ya hablé de Gobernabilidad en Arquitecturas SOA y de la importancia de su adopción casi desde el inicio del proyecto; [...]