У меня есть два веб-приложения, одно для клиентов, а другое для внутреннего использования. Оба используют базу данных PostgreSQL. Какие подходы я мог бы использовать для обмена данными между этими приложениями? Оба приложения потребуют доступа для чтения и записи, но данные не обязательно должны быть доступны мгновенно. Кроме того, я бы хотел, чтобы оба приложения не зависели друг от друга, одно может быть отключено, не влияя на другое приложение.
Я могу придумать следующие варианты. Я что-то упускаю?
Самым простым было бы иметь третью базу данных PostgreSQL, к которой имеют доступ оба приложения. Обратной стороной я могу видеть то, что схема базы данных должна быть одинаковой и что оба приложения требуют, чтобы вторая база данных всегда была в сети.
Как вариант A, но это отдельная служба, к которой оба приложения имеют доступ и с API для использования. Но сервис должен быть всегда доступен.
Оба приложения имеют собственный набор данных и публикуют события изменений. Система сообщений, такая как Amazon SQS, где оба приложения будут прослушивать сообщения и соответствующим образом обновлять там данные. Мне нравится этот подход, но я уже вижу, как данные могут рассинхронизироваться.
Есть вариант D?
D) Одна внутренняя сторона будет обращаться к другой БД.
Для меня это лучший метод. Со стороны клиента вы ничего не хотите терять, поэтому, если вам нужен общий доступ, у вас будет способ его отслеживать.
Второй момент, если БД находится в демилитаризованной зоне, то лучше установить доверительные отношения только из внутреннего -> dmz.
В-третьих, если доступ является проблемой, создайте службу отслеживания, которая считывает и синхронизирует эту таблицу в обеих базах данных.