Задать вопрос

Правильно ли я спроектировал распределённую систему?

Приветствую коллеги. Хочу занять ваш опыт проектирования.
Сейчас есть БД, пользователи и данные. Хранятся все в одном месте. Авторизация и весь фунционал происходят как обычно... Предположим, Есть пользователь., есть блокнот, есть записи блокнота пользователя., есть категории блокнота. Администратор может видеть(а может и нет., только абстракцию) все записи в системе
Заказчик хочет войти на Новый рынок., где есть требование хранение данных на серверах той страны где будет запущен проект.
Чтобы не нарушать целостность проекта, и контроля владельцами над проектом нужно чтобы он был централизирован, а данные в разных странах были нодами,но для пользователя и владельца выглядели целостным монолитом.

Есть два варианта:

Первый - имеющийся проект запустить на сервере в той стране в которой он будет запущен. Тогда все просто., но администрировать несколько таких проектов уже сложно.
Добавить в апи сервера контроль доступа к этой системе(платный вкл/выкл)., и несколько эндпоинтов апи для подсчёта и статистики.

Второй вариант., Категоризировать пользователей по проектам., с помощью идентификатора, который будет служить префиксом Таблицы в которой расширенные данные будут хранится. Добавить в систему удаленные таблицы с северов той страны где будут хранится эти таблицы (Postgres/ssh/hosting api)
Т.е. При добавлении пользователя в БД с новой страны - будет создаваться пустой пользователь., с пометкой префикса в главной таблице users (напр. gb). , так же в бд будут добавлены Таблицы (gb_users) в которой будет лежать данные пользователя с другой страны, тогда главный админ будет видеть пользователя которыми можно ограничивать доступ, но при этом даннны пользователя будет конфиденциальны и хранится в доп таблице ( в другой стране).
Когда такой пользователь будет входить в систему у него будет единое около авторизации., и система увидев префикс будет знать где искать его данные просто подставляя его при запросе.
Так я думаю решить проблему единой системы авторизации чтобы не ложить их всех в разные Бд.,для этого варианта.
Примерно так же хранить данные о категориях блокнотов и и самих записях в блокнотах.
Другой момент когда надо будет посчитать сколько всего пользователей в системе., и сколько у них блокнотов., нужно будет получись все префиксы в системе и сгенерировать запрос который считает всех пользователей., всех их категорий и записей в блокнотах в системе по таблицам с ранее полученными префиксами.,

Коллеги., у кого подобный кейс встречался в проектировании и разработке? Прошу оценить в правильном ли я направлении, или направить на нужный термин, чтобы я поискал где-то ещё ?
Благодарю за понимание!
  • Вопрос задан
  • 126 просмотров
Подписаться 3 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@masimka Автор вопроса
На данный момент, было принято решение подключить таблицы размещенные на сервере другой страны в постгресе как удалённую таблицу (postgres_fdw)
). И через шардирование по условию определенной метки добавить в существующим таблицам. Тогда основные данные будут хранится как полагается, и данных клиента из конкретной страны будет хранится в таблицах в нужном гео.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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