Base de datos compartida frente a la arquitectura de mensajería

Ayer estuve en el pub con un amigo mío y comenzamos a hablar sobre la arquitectura en uso en la empresa en la que trabaja. Básicamente, la conversación rodeó los pros / contras de una arquitectura de base de datos compartida contra una arquitectura de aplicación independiente distribuida: no pudimos llegar a un consenso, en cuyo caso me gustaría escuchar las opiniones de las personas sobre los pros / contras de ambos enfoques.

Básicamente, la compañía para la que trabaja tiene una gran arquitectura con muchas aplicaciones diferentes. Algunas aplicaciones tienen una sola base de datos que comparten entre ellas. Por ejemplo, hay 1 aplicación que proporciona una IU para que los usuarios alteren los datos de referencia. Esta información de referencia es utilizada por otra aplicación que también accede a la misma información. Creo que el código en realidad se escribe como bibliotecas compartidas (es decir, ambas aplicaciones usarán un conjunto de códigos comunes que se redistribuye para cada uno (uno lo tiene como una dependencia)).

También hay otras aplicaciones con una base de datos que también son utilizadas por otras aplicaciones mediante conexión directa JDBC con código de acceso a datos (no es común entre las dos aplicaciones, ¡duplicado! ¡Erghh!).

Mi pregunta es acerca de las ventajas y desventajas de esta arquitectura en comparación con una arquitectura donde cada aplicación contiene sus datos "maestros" en silo. Si una aplicación x requiere datos de la aplicación y usan servicios web o alguna tecnología de mensajería para recibir esos datos.

El enfoque de mensajería presentaría un problema por el cual los 'códigos' de datos de referencia (o claves externas) que se usan dentro de las bases de datos de otras aplicaciones actualmente tienen que ser recuperados desde otra fuente. En la arquitectura actual, los 'decodificadores' para estos pueden cambiar en cualquier momento y reflejarse en la aplicación externa inmediatamente, en lugar de tener que tener una relación maestro / esclavo donde se copian los datos, o una alternativa donde la aplicación x tiene que consultar la aplicación y Sólo para mostrar los valores de decodificación.

Había leído Patrones de integración empresarial y, si bien da algunos ejemplos de las ventajas de la mensajería, no estoy tan convencido.

Gracias iain

Respuestas a la pregunta(3)

Su respuesta a la pregunta