Articulo de referencia

principio de granularidad del servicio

En ingeniería y arquitectura de software , la granularidad del servicio es una preocupación de diseño en sistemas basados ​​en servicios, incluyendo la arquitectura orientada a ...

En ingeniería y arquitectura de software , la granularidad del servicio es una preocupación de diseño en sistemas basados ​​en servicios, incluyendo la arquitectura orientada a servicios (SOA) y las arquitecturas de microservicios . Se refiere al alcance y la cohesión de la funcionalidad encapsulada por un servicio y los límites de sus responsabilidades. La granularidad del servicio afecta cómo se definen los servicios, cómo se comunican y cómo se distribuye la funcionalidad en un sistema. En SOA, a menudo se aborda durante el modelado orientado a servicios para equilibrar la reutilización y la abstracción. En arquitecturas de microservicios, la granularidad es un factor primordial para determinar la capacidad de despliegue independiente, la sobrecarga operativa y la complejidad de la comunicación entre servicios. [ 1 ] [ 2 ]

Definición

La granularidad del servicio es tanto una cuestión del dominio de la aplicación ( granularidad empresarial ) como un problema de diseño de la interfaz de software ( granularidad técnica ); es una propiedad del contrato de servicio expuesto por un proveedor de servicios. Se refiere a la semántica y la sintaxis del contenido de los mensajes de entrada (solicitud) y salida (respuesta), que pueden considerarse 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. La primera suele requerir una mayor complejidad de diseño, pero puede reducir el número de llamadas necesarias para completar una tarea. [ 3 ]

Criterios

Debido a las falacias de la computación distribuida , encontrar una granularidad adecuada es difícil. [ 4 ] No hay 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 débil y modularidad , que son dos de los principios esenciales de SOA, [ 5 ] y abordar otros requisitos arquitectónicamente significativos .

Muchas fuerzas influyen en la granularidad del servicio; [ 6 ] 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 corresponde con una única función empresarial; sin embargo, si una sola operación puede proporcionar múltiples funciones sin añadir complejidad al diseño ni aumentar el tamaño de los mensajes, esta generalidad puede reducir los costes de implementación y uso.

Actuación

Los servicios web se acceden de forma remota y las llamadas a su funcionamiento generan una mayor sobrecarga de red. Reducir el número de solicitudes de servicio disminuye dicha sobrecarga.

Tamaño del mensaje

Los servicios de granularidad gruesa pueden transmitir más datos que los de granularidad fina, incluyendo datos que no son necesarios para la tarea. Esto complica el procesamiento de mensajes en el punto final y, a su vez, podría afectar negativamente al rendimiento. Para reducir el tamaño de los mensajes, puede ser necesario añadir una operación de granularidad más fina.

Características de la calidad del servicio, incluida la transaccionalidad.

Para mayor claridad conceptual, cada operación de servicio debe realizar una única transacción a nivel de sistema, dejando la integridad de los datos entre los límites del servicio a la lógica de negocio 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 apropiada; no hay un óptimo global. Dieciséis de estos criterios de acoplamiento se recopilan de la literatura en [ 7 ] .

Patrones

Dado que no existe una solución única para todos los casos, el diseño de la granularidad de los servicios puede beneficiarse de numerosos patrones de diseño existentes para diversos tipos de sistemas distribuidos, especialmente aquellos relacionados con servicios, así como de patrones relacionados con el diseño de API (por ejemplo, el diseño de API en programación orientada a objetos) y la integración empresarial. Aquí se ofrece una descripción general de dichos lenguajes .

Granularidad del servicio en la arquitectura de microservicios

En las arquitecturas de microservicios, la granularidad del servicio influye en las pruebas, el despliegue, el rendimiento y la fiabilidad. Los microservicios de grano muy fino suelen ser más fáciles de probar y desplegar de forma independiente, pero a menudo presentan un rendimiento inferior y una menor fiabilidad general debido al aumento de la comunicación entre servicios y a una coreografía de servicios más compleja. [ 2 ] Los servicios de grano grueso presentan características contrastantes. Generalmente proporcionan mayor robustez y fiabilidad al minimizar la sobrecarga de comunicación y la complejidad de la coordinación, pero son más difíciles de probar y desplegar porque las modificaciones afectan a un ámbito funcional más amplio. [ 2 ] El nivel adecuado de granularidad del servicio viene determinado por los impulsores del negocio. Las decisiones arquitectónicas suelen comenzar con la identificación de estos impulsores y, a continuación, alineando las características arquitectónicas, como el rendimiento, la escalabilidad, la fiabilidad o la flexibilidad de despliegue, para que les den soporte. [ 2 ]

Referencias

  1. Erl, Thomas. Principios SOA del diseño de servicios . ISBN 9780132715836.
  2. 1 2 3 4 Richards, Mark. Antipatrones y trampas de los microservicios . O'Reilly.
  3. ^ Josuttis, N. (2007). SOA en la práctica. Sebastopol, California, Estados Unidos: O'Reilly. ISBN 978-0-596-52955-0.
  4. F. Leymann, Acoplamiento flexible e implicaciones arquitectónicas , ponencia principal de ESOCC 2016
  5. Krafzig, D., Banke, K., Slama, D. (2004). Enterprise SOA: Service-Oriented Architecture Best Practices 1st Edition. Prentics Hall. ISBN 978-0131465756.
  6. Página 21 en Zimmermann, O., Modelos de orientación y herramientas de toma de decisiones para el diseño de soluciones SOA, en la nube y de subcontratación, http://resources.sei.cmu.edu/asset_files/Presentation/2011_017_001_24654.pdf
  7. Service Cutter: Un enfoque sistemático para la descomposición de servicios, M Gysel, L Kölbener, et al. Conferencia Europea sobre Computación Orientada a Servicios y en la Nube, 185-200, ( PDF )
  • Marco de granularidad de servicio conceptual
  • Entrada de granularidad de servicio en un glosario de servicios
  • Cocina EA - Granularidad del servicio
  • Estudio de caso de IEEE sobre el papel de la granularidad del servicio en la implementación exitosa de SOA.
  • Conocimiento arquitectónico en una arquitectura de referencia de infraestructura SOA (estudio de caso SOA)
  • El libro "Getting Web Service Granularity Right" proporciona información sobre el principio de granularidad del servicio y consejos útiles sobre cómo implementarlo correctamente.
  • Guía práctica de SOA
  • Resolver el desafío de la granularidad del servicio
  • Interfaces de grano grueso
  • Un marco de métricas para evaluar la granularidad de los servicios SOA
  • Herramienta Service Cutter y catálogo de criterios de acoplamiento en GitHub