Хорошо, где я работаю, у нас есть довольно значительное количество систем, написанных за последние пару десятилетий, которые мы поддерживаем.Как лучше всего интегрировать несколько систем?
Системы различны в разных операционных системах (Linux, Solaris, Windows), нескольких базах данных (несколько версий oracle, sybase и mysql) и даже нескольких языках (C, C++, JSP, PHP и хост других).
Каждая система достаточно автономна, даже за счет ввода одних и тех же данных в несколько систем.
Руководство недавно решило, что мы должны изучить, что потребуется, чтобы все системы радостно разговаривали друг с другом и делились данными.
Имейте в виду, что, хотя мы можем вносить изменения в программное обеспечение в любую из отдельных систем, полная переработка какой-либо одной системы (или более) не является чем-то, что может привести к управлению.
Первой мыслью нескольких разработчиков здесь было прямое: если системе A нужны данные из системы B, она должна просто подключиться к базе данных системы B и получить ее. Аналогично, если ему нужно предоставить данные B, он должен просто вставить его в базу данных B.
Из-за беспорядка баз данных (и версий) другие разработчики придерживались мнения, что у нас должна быть одна новая база данных, объединяющая таблицы из всех других систем, чтобы избежать необходимости манипулировать несколькими соединениями. Делая это, мы надеемся, что мы сможем консолидировать некоторые таблицы и избавиться от избыточного ввода данных.
Речь идет о времени, когда меня привлекли к моему мнению на весь беспорядок.
Вся идея использования базы данных как средства системной коммуникации меня забавляет. Бизнес-логику нужно будет поместить в несколько систем (если System A хочет добавить данные в System B, лучше понять правила B, касающиеся данных, прежде чем делать вставку), несколько систем, скорее всего, придется делать какую-то форму опроса базы данных, чтобы найти любые изменения в их данных, постоянное обслуживание будет головной болью, так как любое изменение схемы базы данных теперь распространяется на несколько систем.
Моя первая мысль заключалась в том, чтобы потратить время и написать API/Сервисы для разных систем, которые после написания могут быть легко использованы для передачи/получения данных взад и вперед. Многие другие разработчики считают, что это чрезмерная и гораздо более эффективная работа, чем просто использование базы данных.
Итак, что было бы лучшим способом заставить эти системы говорить друг с другом?