Нормальна ли такая архитектура обмена данными?

Суть — сайт платных объявлений о продаже недвижимости. Интересует, насколько разумно использовать архитектуру, описанную ниже.



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



Предлагается полную БД со всеми данными проекта вести внутри офиса на какой-либо СУБД/CRM, а в интернете держать лишь отражение/зеркало данных, необходимых для работы сайта.



Данные синхронизируются из БД в веб при изменениях, а также из веба в БД при изменениях клиентами из своих личных кабинетов. Предполагается, что процесс должен быть относительно оперативным (скажем, 5 минутная задержка позволяется).



В СУБД/CRM формируется очередь запросов/команд на обновление, которые отправляются в интернет по крону. Аналогичная очередь есть на стороне веб-сайта, она содержит данные, которые были изменены из личных кабинетов и которые нужно внести в СУБД/CRM.



Запросы в обоих очередях движутся по запуску ботов-воркеров и в зависимости от результатов выполнения помечаются как выполненные/невыполненные. Делается это чтобы не потерять какие-либо изменения и в случае чего видеть какие запросы не отработали как «сверху» (с сайта) так и снизу (из CRM).



Файлы (фото) синхронизируются простым копированием, скажем, посредством rsync по FTP или типа того.



Все (объявления, данные о платежах и бизнес-логику взаиморасчетов) держать в интернете не хочется: данные коммерчески критичные. Плюс в случае сбоев хотелось бы чтобы в офисе оставался актуальный набор данных и с ним можно было продолжать работу до восстановления соединения, после чего накопившиеся запросы уходили бы из очереди на сайт.



Предполагается, что при такой схеме может быть обеспечен быстрый переезд офиса и сайта.



Так — нормально? Может есть какие-то более разумные практики и решения?

Буду благодарен за любые мнения, даже сугубо скептические.
  • Вопрос задан
  • 3008 просмотров
Пригласить эксперта
Ответы на вопрос 2
serso
@serso
Не сложно ли? Как будете синхронизировать операции над данными?

Лучше сделать так: менеджер из офиса и пользователь из интернета работает с одним web-интерфейсом (=одной программой). Соответственно, имеют доступ к схеме базы (кто-то на запись, кто-то на чтение). Выделяются две схемы — одна доступная из приложения, вторая — нет. Общение между двумя схемами идёт по какому-нибудь протоколу и только внутри. Получаем: один код для работы пользователей с базой, разделение схем по уровню доступа.
Ответ написан
@ChemAli Автор вопроса
Да, это нормально. Называется репликация сведением. Всем спасибо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы