Как правильно организовать общение между несколькими приложениями?
В микрофинансовой организации должны функционировать несколько систем: CRM, Бухгалтерия, Core Banking, Личный кабинет клиента и т.д.
Сейчас эти системы находятся на стадии разработки. Стоит задача организовать оптимальное и надежное общение между этими системами.
Например: CRM, CB и Личный Кабинет имеют свои базы. В каждой из этих баз есть таблица клиентов. Если например клиента создали в CRM, он должен автоматически появиться в CB и в ЛК. То же самое с обновлением и удалением клиента.
Чтобы не писать для каждой пары (CB <-> ЛК, CRM <-> CB, ...) интеграцию, планируется разработать некое приложение-наблюдатель, которое будет в центре и отправлять получаемые сообщения подписчикам. Таким образом каждое отдельное приложение не будет знать о существовании другого. Если приложению нужно о каком-то событии кого-то уведомлять, то он просто отправляет сообщение наблюдателю об этом событии. Наблюдатель в свою очередь информирует остальных приложений о полученном сообщении и если кто-то из них хочет это событие обратобать, то в нем должен быть код-слушатель. То есть это некий Observer Design Pattern на уровне комплекса приложений.
Вопрос на каких технологиях это "приложение-наблюдатель" разработать? Или есть ли какие-нибудь готовые решения? Можете ли порекомендовать другой, более оптимальный подход к решению этой задачи?
Любая очередь, в зависимости от ваших требований и языков. Можете тут поизучать сравнение по производительности и посмотреть небольшое описание некоторых популярных очередей: https://softwaremill.com/mqperf/
Описанная задача может решаться при помощи использования связующего ПО такого, как сервисная шина данных предприятия. Данный софт существует с начала 2000-х, и написано про него уже много чего и где. Начать можно, как обычно, с википедии, со статьи . Прочитайте её и на английском.