Вчера я был в пабе с моим другом, и мы начали обсуждать архитектуру, используемую в компании, в которой он работает. Разговор в основном окружал плюсы и минусы общей архитектуры базы данных в отношении распределенной независимой архитектуры приложений - мы не смогли достичь консенсуса, и в этом случае я бы хотел услышать мнение людей о плюсах и минусах обоих подходов.
В принципе, компания, в которой он работает, имеет большую архитектуру с множеством различных приложений. В некоторых приложениях есть одна база данных, которую они разделяют между собой. Например, есть 1 приложение, которое предоставляет пользовательский интерфейс для изменения справочных данных. Эти справочные данные используются другим приложением, которое также обращается к тем же данным. Я считаю, что код фактически написан как разделяемые библиотеки (т.е. Оба приложения будут использовать общий набор кодов, который перераспределяется для каждого (у него есть зависимость).
Существуют также другие приложения с базой данных, которые также используются другими приложениями прямым соединением JDBC с кодом доступа к данным (не распространенным между двумя приложениями - дублируется!! erghh!).
Мой вопрос связан с плюсами/минусами этой архитектуры и архитектурой, где каждое приложение содержит "ведущие" данные в бункере. Если приложение x требует данных из приложения y, они используют веб-службы или некоторую технологию обмена сообщениями для получения этих данных.
Подход к обмену сообщениями приведет к возникновению проблемы, при которой коды данных справочной информации (или внешние ключи), которые используются в db других приложений, которые в настоящее время сейчас должны быть получены из другого источника. В текущей архитектуре "декодирование" для них может измениться в любое время и сразу отразиться во внешнем приложении, вместо того, чтобы иметь отношение "ведущее/ведомое", где копируются данные, или альтернативу, когда приложение x должно запрашивать приложение y просто для отображения значений декодирования.
Я прочитал "Шаблоны интеграции предприятия", и, хотя он дает некоторые примеры преимуществ обмена сообщениями, я не настолько убежден.
Спасибо Иэн