En el contexto de la ingeniería de software y la arquitectura de software , la granularidad del servicio es una preocupación de diseño clave cuando se aplica el paradigma de la orientación al servicio, por ejemplo, durante el modelado orientado al servicio . La granularidad del servicio especifica el alcance de la funcionalidad empresarial y la estructura de la carga útil del mensaje en una operación de servicio que se proporciona dentro de una arquitectura orientada a servicios (SOA) .
Definición
La granularidad del servicio es tanto una preocupación del dominio de la aplicación ( granularidad empresarial ) como un problema de diseño de la interfaz del software ( granularidad técnica ); es propiedad del contrato de servicio expuesto por un proveedor de servicios. Pertenece a la semántica y la sintaxis del contenido del mensaje de entrada (solicitud) y de salida (respuesta), que pueden verse como instancias de dos patrones generales de integración empresarial , mensaje de comando y mensaje de documento . Por definición, una operación de servicio de grano grueso tiene un alcance más amplio que un servicio de grano fino, aunque los términos son relativos. El primero normalmente requiere una mayor complejidad de diseño, pero puede reducir la cantidad de llamadas necesarias para completar una tarea. [1]
Criterios
Debido a las falacias de la computación distribuida , es difícil encontrar una granularidad adecuada. [2] No existe una única respuesta simple, pero existen varios criterios (ver más abajo). Un objetivo principal del modelado de servicios y el diseño de granularidad es lograr un acoplamiento flexible y modularidad , que son dos de los principios SOA esenciales, [3] y abordar otros requisitos arquitectónicamente significativos .
Muchas fuerzas influyen en la granularidad del servicio; [4] Cuatro factores particularmente relevantes a considerar al diseñar para una granularidad adecuada son el rendimiento, el tamaño del mensaje, la transaccionalidad y la función comercial:
Función empresarial
Idealmente, cada operación de servicio se asigna a una sola función comercial, aunque si una sola operación puede proporcionar múltiples funciones sin agregar complejidad al diseño o aumentar el tamaño de los mensajes, esta generalidad puede reducir los costos de implementación y uso.
Actuación
Se accede a los servicios web de forma remota y las llamadas al funcionamiento del servicio web generan más gastos de red. Reducir el número de solicitudes de servicio reduce esa sobrecarga.
Tamaño del mensaje
Los servicios de grano grueso pueden pasar más datos que los servicios de grano fino, incluidos los datos que no se requieren específicamente para la tarea. Esto complica el procesamiento de mensajes en el punto final y, a su vez, podría dañar el rendimiento. La reducción del tamaño del mensaje puede requerir agregar una operación más detallada.
Características de calidad de servicio, incluida la transaccionalidad.
Para mayor claridad conceptual, cada operación de servicio debe realizar una única transacción a nivel del sistema y dejar la integridad de los datos a través de los límites del servicio a la lógica empresarial del consumidor del servicio. Esto también simplifica la recuperación de errores y, por lo general, facilita el diseño.
Existen muchos más criterios de decisión para encontrar una granularidad adecuada; no hay un óptimo global. Dieciséis criterios de acoplamiento de este tipo se recopilan de la bibliografía en. [5]
Patrones
Como un tamaño no sirve para todos, el diseño de granularidades de servicio puede beneficiarse de muchos trabajos de patrones existentes en varios tipos de sistemas distribuidos, especialmente aquellos relacionados con servicios, así como trabajos de patrones relacionados con el diseño de API (por ejemplo, diseño de API en objetos programación orientada) e integración empresarial. Aquí se ofrece una descripción general de dichos lenguajes .
Referencias
- ^ Josuttis, N. (2007). SOA en la práctica. Sebastopol, CA, EE.UU .: O'Reilly. ISBN 978-0-596-52955-0 .
- ^ F.Leymann Acoplamiento suelto e implicaciones arquitectónicas , discurso de apertura de ESOCC 2016
- ^ Krafzig, D., Banke, K., Slama, D. (2004). Enterprise SOA: Mejores prácticas de arquitectura orientada a servicios 1ª edición. Salón de Prentics. ISBN 978-0131465756 .
- ^ Página 21 en Zimmermann, O., Modelos de orientación y herramientas de toma de decisiones para SOA, nube y diseño de soluciones de subcontratación, http://resources.sei.cmu.edu/asset_files/Presentation/2011_017_001_24654.pdf
- ^ Cortador de servicios: un enfoque sistemático para la descomposición de servicios, M Gysel, L Kölbener, et al .. Conferencia europea sobre informática orientada a servicios y en la nube, 185-200, ( PDF )
enlaces externos
- Marco conceptual de granularidad de servicios
- Entrada de granularidad de servicios en un glosario de servicios
- Cooking EA - Granularidad del servicio
- Estudio de caso de IEEE sobre el papel de la granularidad del servicio en una realización exitosa de SOA
- Conocimiento arquitectónico en una arquitectura de referencia de infraestructura SOA (estudio de caso SOA)
- Obtener la granularidad del servicio web correcta proporciona información sobre el principio de granularidad del servicio y consejos útiles sobre cómo hacerlo bien.
- Guía para profesionales de SOA
- Resolviendo el desafío de la granularidad del servicio
- Interfaces de grano grueso
- Un marco de métricas para evaluar la granularidad del servicio SOA
- Catálogo de criterios de acoplamiento y herramienta Service Cutter en GitHub