Diagramación de mensajes en un bus de servicio

9

Estoy buscando una forma de diagramar claramente cómo se comunican varias aplicaciones a través de un bus de servicio. Lo mejor que he encontrado hasta ahora es un diagrama de secuencia, pero realmente no me gusta. Los diagramas de secuencia necesariamente relacionan algún tipo de secuencia, y eso realmente no es lo que quiero. Además, dado que cada servicio se comunica con el bus de servicio y los diagramas de secuencia colocan cada servicio en una columna separada, a medida que aumenta el número de servicios, terminan con muchas flechas superpuestas.

Por ejemplo, dadas 4 servicios FOO, BAR, BAZ, y QUX:

  • FOOpublica mensajes de tipo publicar y regenerar .
  • BARpublica mensajes de tipo requeue .
  • BAZse suscribe a mensajes de tipo publicación , regeneración y solicitud , y publica mensajes de tipo transmisión .
  • QUXse suscribe a mensajes de tipo transmisión .
  • Cualquier servicio puede publicar cualquier tipo de mensaje en cualquier momento (no hay secuencia implícita).

¿Qué tipo de diagrama debo usar para representar esta información de manera clara e inequívoca?

Aquí está lo mejor que he encontrado hasta ahora:
Diagrama de secuencia

pswg
fuente

Respuestas:

5

Estoy buscando una forma de diagramar claramente cómo se comunican varias aplicaciones a través de un bus de servicio.

Que sería increíble. Desafortunadamente, no creo que sea posible para configuraciones de cualquier complejidad. Un diagrama de secuencia para escenarios simples es probablemente tan bueno como cualquier otra cosa.

Los componentes en un bus publican y se suscriben a mensajes. Algunos de los mensajes pueden estar causalmente relacionados, formando un protocolo. Es difícil mostrar esto gráficamente, especialmente las relaciones causales, cuando hay más de un protocolo en juego en el bus.

Los diagramas de autobuses eléctricos han existido durante mucho tiempo

diagrama del bus eléctrico

pero tratan con una cantidad de una mercancía uniforme (energía eléctrica), no con señales discretas.

Me gusta mostrar los mensajes enviados (a la derecha) y recibidos (a la izquierda) por cada componente (y la estructura del subcanal / tema, si corresponde), pero nuevamente para cualquier cosa que no sea el más simple de los escenarios, los diagramas se vuelven rápidamente desordenados y casi inútiles. .

ingrese la descripción de la imagen aquí

Entonces volvamos a una pregunta más fundamental: ¿cuál es el propósito del diagrama? ¿Qué intentas mostrar?

Si está tratando de mostrar relaciones causales entre componentes y mensajes, entonces diagramar un protocolo a la vez usando un diagrama de secuencia (o equivalente) debería estar bien.

Si solo desea mostrar los protocolos de referencia, poner los mensajes enviados y recibidos por cada componente debería ser suficiente documentación, pero se pierden las relaciones causales / temporales.

¡Buena suerte y háganos saber si encuentra o inventa algo mejor!

Steven A. Lowe
fuente
Gracias por tomarse el tiempo de responder. Para orquestaciones complejas de mensajes ('conversaciones' dentro de 'protocolos') sí, los diagramas secuenciales están bien. Pero en este momento estoy tratando de abordar una visión general de alto nivel de qué servicio es responsable de publicar un tipo de mensaje dado y qué servicios pueden verse afectados por un tipo de mensaje dado, no realmente la secuencia de mensajes involucrados. Espero algo estandarizado, pero si termino inventando el mío, probablemente se parecería mucho al diagrama del bus eléctrico que dio como ejemplo.
pswg
@pswg: de nada. Se agregó un diagrama de ejemplo, creado con maquetas de Balsamiq. Utilizo círculos pequeños para hacer que los puntos de conexión se destaquen, en caso de que necesite anotar puertas de enlace u otras restricciones
Steven A. Lowe
Sí, algo como esto funcionaría. Creo que prefiero las pequeñas flechas en el diagrama eléctrico a tener una distinción izquierda / derecha, pero esto me da algunas ideas.
pswg
@pswg: descubrí que las flechas pequeñas se interponían en el camino para diagramas más grandes;) Los componentes eléctricos rara vez (que he visto) consumen y producen energía, por lo que las flechas son estáticas. Es por eso que elegí la distinción izquierda / derecha (arbitrariamente). También trato de acercar los mensajes entrantes al cuadro del componente y los mensajes salientes más cerca de la línea del bus, pero definitivamente no es una solución ideal. ¡Esperando con ansias ver con qué vienes!
Steven A. Lowe