Wspólna baza danych a architektura przesyłania komunikatów

Byłem w pubie z moim przyjacielem wczoraj i zaczęliśmy dyskutować na temat architektury w firmie, w której pracuje. Rozmowa zasadniczo dotyczyła zalet / wad wspólnej architektury baz danych z rozproszoną architekturą niezależnych aplikacji - nie mogliśmy dojść do konsensusu, w którym to przypadku chciałbym usłyszeć opinie ludzi na temat zalet / wad obu podejść.

Zasadniczo firma, dla której pracuje, ma dużą architekturę z wieloma różnymi aplikacjami. Niektóre aplikacje mają jedną bazę danych, którą dzielą między sobą. Na przykład istnieje 1 aplikacja, która udostępnia interfejs użytkownika, aby zmienić dane referencyjne. Te dane referencyjne są używane przez inną aplikację, która również uzyskuje dostęp do tych samych danych. Uważam, że kod jest rzeczywiście napisany jako biblioteki współdzielone (tzn. Obie aplikacje będą używać wspólnego zestawu kodowego, który jest ponownie wdrażany dla każdego (jeden ma go jako zależność)).

Istnieją również inne aplikacje z bazą danych, która jest również używana przez inne aplikacje przez bezpośrednie połączenie JDBC z kodem dostępu do danych (nie jest to powszechne między dwiema aplikacjami - duplikowane !! erghh!).

Moje pytanie dotyczy zalet / wad tej architektury w porównaniu z architekturą, w której każda aplikacja zawiera dane „główne” w silosie. Jeśli aplikacja x wymaga danych z aplikacji, korzysta z usług internetowych lub niektórych technologii przesyłania wiadomości, aby otrzymać te dane.

Podejście do przesyłania wiadomości wprowadziłoby problem polegający na tym, że „kody” danych odniesienia (lub klucze obce), które są używane w bazach danych innych aplikacji, obecnie muszą być pobierane z innego źródła. W obecnej architekturze te „dekodowania” mogą się w każdej chwili zmienić i natychmiast zostać odzwierciedlone w zewnętrznej aplikacji, zamiast konieczności posiadania relacji master / slave, gdzie dane są kopiowane - lub alternatywy, w której aplikacja x musi odpytywać aplikację y aby wyświetlić wartości dekodowania.

Czytałem Enterprise Integration Patterns i chociaż podaje kilka przykładów zalet przesyłania wiadomości - nie jestem tak przekonany.

Dzięki Iain

questionAnswers(3)

yourAnswerToTheQuestion