Назад | Перейти на главную страницу

Как обмениваться данными между веб-приложениями?

У меня есть два веб-приложения, одно для клиентов, а другое для внутреннего использования. Оба используют базу данных PostgreSQL. Какие подходы я мог бы использовать для обмена данными между этими приложениями? Оба приложения потребуют доступа для чтения и записи, но данные не обязательно должны быть доступны мгновенно. Кроме того, я бы хотел, чтобы оба приложения не зависели друг от друга, одно может быть отключено, не влияя на другое приложение.

Я могу придумать следующие варианты. Я что-то упускаю?

Вариант А: Третья база данных

Самым простым было бы иметь третью базу данных PostgreSQL, к которой имеют доступ оба приложения. Обратной стороной я могу видеть то, что схема базы данных должна быть одинаковой и что оба приложения требуют, чтобы вторая база данных всегда была в сети.

Вариант Б. Отдельная служба API

Как вариант A, но это отдельная служба, к которой оба приложения имеют доступ и с API для использования. Но сервис должен быть всегда доступен.

Вариант C: События сообщений

Оба приложения имеют собственный набор данных и публикуют события изменений. Система сообщений, такая как Amazon SQS, где оба приложения будут прослушивать сообщения и соответствующим образом обновлять там данные. Мне нравится этот подход, но я уже вижу, как данные могут рассинхронизироваться.

Есть вариант D?

D) Одна внутренняя сторона будет обращаться к другой БД.

Для меня это лучший метод. Со стороны клиента вы ничего не хотите терять, поэтому, если вам нужен общий доступ, у вас будет способ его отслеживать.

Второй момент, если БД находится в демилитаризованной зоне, то лучше установить доверительные отношения только из внутреннего -> dmz.

В-третьих, если доступ является проблемой, создайте службу отслеживания, которая считывает и синхронизирует эту таблицу в обеих базах данных.