MS Azure: хранение данных в разных местах, в зависимости от пользователя
Привет!
Используется Azure для хостинга приложений и инфраструктуры.
Есть бекенд в одном экземпляре и база данных к нему. Кроме базы данных ещё кое что есть, но думаю, что в рамках данного вопроса это не суть важно. К бекенду есть 2 разных фронтенда.
Есть требования, в соответствии с которыми надо сделать так, чтобы данные пользователя хранились физически в том регионе, где этот пользователь зарегистрирован.
Можно разделить базу данных по регионам, запустить соответствующее количество эземпляров приложения, нацеленное на соответствующую базу данных.
Но возникает теперь вопрос: как сделать так, чтобы фронтенд обращался к нужному эзкмпляру бекенда?
Вариант, который мне приходит в голову, это должен быть какой-то «маршрутизатор» (прокси сервер), который будет уметь:
1. Извлекать информацию из JWT токена; потенциально любую, но для данного случая, ИД пользователя будет достаточно;
2. Лазить куда-то (в БД; в Редис; и т.п.), извлекать какие-то данные для принятия решений; в данном случае нужно откуда-то взять регион пользователя;
3. В зависимости от полученных данных, будет перенаправлять запросы к соответствующему бекенду; нужна возможность описывать это все как-то, имею ввиду что-то вроде:
если регион = "уа" тогда
погнали сюда
если регион = "америка" или регион = "канада" тогда
погнали сюда
если ничего из вышеперечисленного не сработало тогда
погнали сюда
Я бы мог сделать приложение, которое будет этим заниматься. Но мне думается, что это будет не самый эффективный вариант, несмотря на то, что для подобного рода маршрутизации существуют готовые библиотеки, написанные умными людьми.
Какие ещё есть для этого варианты в Azure?
17 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів