@siarheipashkevich
developer

UPDATED: Балансировка запросов из разных стран (NGINX) и попытка войти в аккаунт из страны из которой не была произведена регистрация?

Добрый день.

Работаю над приложением в одной стране, где сейчас идёт активная регистрация и активность пользователей. Но вот появилась задача выйти на другой рынок (другая страна) и дыбы не смешивать данные из текущей базы и новой (из другой страны) так как в этом нет необходиомости, будет сделана копия приложения со своей бд и через балансировку запросов на уровне стран (nginx) запросы будут перенаправляться на нужное приложение.

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

Может кто сталкивался с подобными проблемами и вы как-то решали их или знаете как решить их?
Так как у меня, пока, нету мыслей как решить эту проблему.
Буду благодарен за любые ваши мысли.

ПС: пихать всё в одну бд нету смысла, так как не надо пользователям из одной страны показывать данные из другой и наоборот.

ППС (Пример приложения):
Есть платформа на которой любой пользователь может зарегестрировать свой магазин и продавать на ней свои товары, так же есть некая страница где будут размещены все товары от всех магазинов. Покапатели зайдя на эту страницу видят все товары и могут совершать покупки.
Но вот появилась необходимость разместить данную платформу для других стран, но не хочется смешивать товары из разных стран. Необходимо чтобы пользователь зайдя в систему видел только ту продукцию и только те магазины, которые находятся в его стране.
Также пользователи не должны никак ничего не знать о том, что есть некие другие товары и другие магазины из других стран. Для них это будет просто локальная платформа для их страны.
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
AlexanderMint
@AlexanderMint
Web Developer
Отвечу опираясь на тему и Ваш комментарий
Пример приложения:
Есть платформа на которой любой пользователь может зарегестрировать свой магазин и продавать на ней свои товары, так же есть некая страница где будут размещены все товары от всех магазинов. Покапатели зайдя на эту страницу видят все товары и могут совершать покупки.
Но вот появилась необходимость разместить данную платформу для других стран, но не хочется смешивать товары из разных стран. Необходимо чтобы пользователь зайдя в систему видел только ту продукцию и только те магазины, которые находятся в его стране.
Также пользователи не должны никак ничего не знать о том, что есть некие другие товары и другие магазины из других стран. Для них это будет просто локальная платформа для их страны.


Вариантов реализации множество, я напишу как бы сделал я:

1. Одна база данных и вот почему:
- Легко поддерживать
- Исключает ситуацию когда пользователь подключится не к той БД (если один домен)
- Не будет проблем если вы решите разделить БД, так как id будут по прежнему уникальны. (ибо обьединить гораздо сложнее)
- Сложная реализация вашей идеи в несколько БД
P.S. Выводить определенный товар и не смешивать их, это столбец добавить и 2 слова к запросу дописать. Так же и с авторизацией + есть возможность писать что то в духе "Ваш аккаунт не поддерживается в этой стране"

2. Для каждой страны свой домен (любого уровня, не важно) и вот почему:
- Правильное индексирование поисковыми системами
- Легко поддерживать
- Проще мониторить и отслеживать статистику
- Фильтровать пользователей
P.S. Если хотите запретить доступ Х страны к магазинам Y страны, то лучше на домене Y страны запретить "диапозон IP" X страны

3. Отказаться от распределения пользователей по IP, причины просты:
- Нет 100% гарантии что человек попадет на нужный домен/язык и т.п.
- Будут проблемы с поисковиками
- Пользователи не смогут выбирать
- Пользователь привязан к стране (что уже дикий бред)
- Море звонков в ТП с вопросом "У меня ничего не работает!!!"

0. к слову:
- вы сами себя ограничиваете и это плохо
- я уверен что есть аналоги по архитектуре вашей идеи, которые реализованы верно

Я написал первые мысли что пришли в голову и могу в чем то "перегибать палку" или что то не учесть, так как не знаю все детали. И да, если вы сейчас гадаете как лучше и опираетесь на мнение людей с тостера, которые не знают вашей концепции, то у вас уже проблемы...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Балансировать по IP можно только для снижения нагрузки, но данные в любом случае должны быть одинаковыми.
В вашем случае для разделения БД используйте разные домены (example.ru, example.it, example.ge) или поддомены (ru.example.com, it.example.com, ge.example.com)
Ответ написан
hOtRush
@hOtRush
Делить базу считаю плохим решением. Почему нельзя в базе пометить из какой страны пользователь? И потом как написано выше просто перенаправлять при логине на нужный локальный поддомен
Ответ написан
Ваш ответ на вопрос

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

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