Banco de Dados Compartilhado vs. Arquitetura de Mensagens
Eu estava no bar com um amigo meu ontem e começamos a discutir a arquitetura em uso na empresa em que ele trabalha. A conversa basicamente envolveu os prós / contras de uma arquitetura de banco de dados compartilhada em relação a uma arquitetura de aplicativo independente distribuída - não poderíamos chegar a um consenso e, nesse caso, gostaria de ouvir as opiniões das pessoas sobre os prós e contras das duas abordagens.
Basicamente, a empresa para a qual ele trabalha tem uma grande arquitetura com muitas aplicações diferentes. Alguns aplicativos possuem um único banco de dados compartilhado entre eles. Por exemplo, há 1 aplicativo que fornece uma interface do usuário para os usuários alterarem os dados de referência. Esses dados de referência são usados por outro aplicativo que também acessa os mesmos dados. Acredito que o código seja realmente escrito como bibliotecas compartilhadas (ou seja, ambos os aplicativos usarão um conjunto de códigos comum que é reimplementado para cada um (um tem como uma dependência)).
Há também outros aplicativos com um banco de dados que também é usado por outros aplicativos por conexão JDBC direta com código de acesso a dados (não é comum entre os dois aplicativos - duplicados !! erghh!).
Minha pergunta é sobre os prós / contras dessa arquitetura versus uma arquitetura em que cada aplicativo contém seus dados "mestres" no silo. Se um aplicativo x requer dados do aplicativo, eles usam serviços da Web ou alguma tecnologia de mensagens para receber esses dados.
A abordagem de mensagens introduziria um problema pelo qual os 'códigos' de dados de referência (ou chaves estrangeiras) que são usados dentro do banco de dados de outros aplicativos atualmente precisam ser buscados de outra fonte. Na arquitetura atual, as 'decodifica' para estas podem mudar a qualquer momento e ser refletidas no aplicativo externo imediatamente, em vez de ter que ter uma relação mestre / escravo onde os dados são copiados - ou uma alternativa onde a aplicação x precisa consultar o aplicativo apenas para exibir os valores de decodificação.
Eu tinha lido Enterprise Integration Patterns e, ao mesmo tempo, ele dá alguns exemplos das vantagens das mensagens - não estou tão convencido disso.
Obrigado Iain