Cuando el número de servicios en la empresa empiezan a pasar de unas decenas a unos cientos (o incluso miles), deja de ser recomendable tener algún tipo de clasificación que nos permita poner un poco de orden para convertirse en imprescindible. No olvidemos que uno de los objetivos más importantes de SOA es poder reutilizar los servicios ya existentes… ¿Cómo vamos a reutilizar un servicio si ni siquiera sabemos que existe? ¿si no podemos consultar los servicios existentes según un determinado criterio? Está claro que tenemos que realizar una clasificación, de la misma manera que lo están los libros de una biblioteca.
Como ocurre con una clasificación tradicional de libros en un biblioteca, se pueden tener varios criterios complementarios que realizar esta clasificación. Por ejemplo, podríamos clasificar los libros según su género, su formato, su tipo (ensayo, ficción, no ficción), etc. etc. Es por esto que podemos también tener varios criterios para los servicios. Por supuesto, estos criterios pueden llegar a ser subjetivos, pero veamos los más habituales:
- Servicios elementales o básicos:
Son los más simples y realizan una funcionalidad sencilla - Servicios compuestos:
Son el resultado de componer varios servicios compuestos (u otros servicios compuestos) - Servicios de proceso:
se utilizan para el apoyo de procesos de negocio. Tiene un grado de reutilización bajo
Como digo puede haber otro tipo de clasificaciones, y no tienen que ser excluyentes entre sí. Es decir, se pueden complementar y dar distintas visiones de un mismo servicio. No hay que olvidar que el principal objetivo es mejorar su gestión y sobre todo, hacer que sean fácilmente encontrables por el analista que está trabajando en una nueva integración.
Otras clasificaciones podrían ser:
- Según el tipo de actor (humano, automático, ambos)
- Canal: B2B, B2C…
- Nivel de seguridad
- Nivel de servicio: básico, premium, gratuito, lentos, rápidos, etc.
- Estructura organizativa (departamental, empresarial, externos)
- De negocio o técnicos
- Los servicios técnicos son aquellos que no tienen funcionalidad de negocio pero que les sirven de apoyo. Por ejemplo un servicio para consultar el repositorio de usuarios, para el envío de un email o SMS, etc. etc.
¿Por qué clasificar los servicios?
- Permite poner el foco en las características relevantes, facilitando el filtrado en la búsqueda
- Cada analista tiene da más importantacia a ciertos criterios sobre el resto de criterios. Es bueno por lo tanto poder hacer la consulta bajo diferentes criterios para adaptarse a las necesidades de los a analistas.
- Permite realizar un mejor análisis técnico, ya que dependiendo del tipo del servicio, se pueden establecer mejores prácticas, de despliegue, de mantenimiento, etc. etc. Podemos tener personas especializadas a nivel técnico en según que tipo de servicios.
Como digo siempre, es muy recomendable que antes de empezar siquiera a crear servicios, nos paremos a pensar cómo vamos a gestionarlos: quién los crea, como se documentan, cuáles son las políticas que deben cumplir, etc. y también, cómo se van a clasificar y guardar en el directorio de servicios para que puedan ser “descubribles” por el resto de la organización
14/05/2015 at 17:31
Hola Andres,
Primero que todo quiero felicitarte por tu blog, haces que sea muy fácil de entender los conceptos de SOA. Con respecto a la clasificación de los servicios me surge una duda, Según Thomas Erl los servicios se deben clasificar según su tipo de lógica(negocio, utilidad o aplicación , agnóstica y no agnóstica) , y luego podemos tener tipos de servicio como los de Tarea(Son de Negocio y no agnósticos), Entidad(Negocios y agnóstico) y de Utilidad(utilidad y agnóstico), basado en esto me gustaría saber como clasificarías los siguientes servicios:
– Servicios que consultan tipos de datos que se utilizan por lo general para llenar combos y listas Ej: lista de tipos de cuentas bancarias, lista de tipos de documentos, etc. Esto debería ser un servicio?
-Una consulta compleja especifica de un requerimiento funcional. Que no es es potencialmente re utilizable.
15/05/2015 at 00:37
Hola, gracias antes de nada. Sobre tu primera pregunta yo diría que es un servicio de negocio agnóstico. Aunque buen es cierto que como parece que los datos que devuelve no cambian a menudo se podrían cachear durante bastante tiempo evitando la mayoría de las llamadas.
Sobre el segundo, si es muy específico supongo que será no agnóstico, de soporte a un proceso de negocio concreto.
17/03/2016 at 19:12
Hola excelente lo que haz colocado en este blog, tengo una duda con respecto a este tema, yo ahorita estoy empezando con esto de los servicios SOA y tengo como requerimiento revisar los métodos de un WS que ya esta en producción para ver cuales son reutilizables universales para convertirlos en un Servicio. Mi duda radica en como reconocer aquellos métodos que pueden convertirse en Servicios Candidatos?.
eje: el ws tiene un método que obtiene el país y también puede obtener las marca de un carro.