Есть приложение, 3-звенка, работающее в корпоративной сети.
Теперь есть необходимость в работе этого приложения не в локальной сети компании,
а в разных филиалах с минимальными изменениями сервера приложений.
В клиентских приложениях будут проводиться изменения.
Все изменения в одном городе должны быть видны клиентским приложениям в другом городе.
Есть такое вариант установки: установка в каждом филиале своей локальной БД,
а синхронизацию серверов организовать описанным ниже способом.
Теоретически, есть два варианта:
1. Linked servers (в этом случае есть всего одна база)
2. Replication (в этом случае каждый клиент имеет локальную копию БД)
В первом варианте есть много трудностей:
1. Как создать подключение к linked server в connection string ?
2. Проблемы с безопасностью, поскольку подключать головной сервер придется по IP,
а на стороне сервера делать дырку для подключения из сети.
3. Сильное падение производительности.
Второй вариант кажется более адекватным:
1. Создать главный публикующий сервер
2. Все остальные сервера приложений будут являться подписчиками и одновременно публикующими серверами.
3. Изменения приходят на главный сервер и дальше публикуются на остальные копии БД в филиалах.
Буду признателен, если кто поделится опытом, с этим я ни разу не сталкивался.
Какие есть паттерны и общепринятые практики в решении этого вопроса?
Если реализовать 2 вариант, то какие сценарии лучше всего применить
по синхронизации серверов клиентских приложений: время, разрешение конфликтов и прочее?