Назад | Перейти на главную страницу

Как реализовать маршрутизацию на основе пользователей для мобильного приложения

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

Вначале эти компании были исключением, поэтому настраиваемая копия приложения была скомпилирована с их настраиваемым URL-адресом, в то время как обычная версия приложения использовала исходный URL-адрес. Но вскоре это оказалось непоправимым, поскольку количество таких компаний росло, а выпуск клиентских приложений становился все более частым.

Итак, теперь есть первый ws (размещенный разработчиками) с пользовательской базой данных, который содержит фактический URL-адрес службы, к которому должен подключиться каждый пользователь, и есть единственная версия клиентского приложения, которую все используют и скомпилирована с первыми WS. фиксированный URL. Когда пользователь входит в систему, приложение делает http-запрос для получения окончательного URL-адреса WS для пользователя. Этот второй URL-адрес будет отличаться в зависимости от того, нужно ли пользователю использовать внутренний размещенный WS или он принадлежит клиентской организации с собственным хостингом. С этого момента приложение использует этот URL-адрес для последующих запросов. Это удобно для управляющих компаний, поскольку вы можете, например, быстро сократить обслуживание компании, которая не платит, но, с другой стороны, она генерирует слишком много трафика на первый сервер.

Как бы вы решили это в 2016 году? Я не системный администратор или сетевой эксперт, но мне кажется, что это ручное решение проблемы маршрутизации, и первый сервер можно заменить чем-то другим. Все, что нужно для определения URL-адреса WS, - это название организации пользователя. Окончательное программное обеспечение на стороне сервера такое же, и базы данных аналогичны. Может, это можно решить с помощью балансировщика нагрузки? Я знаю, что Amazon EC2 и Azure поддерживают балансировку нагрузки, но здесь мы говорим о перенаправлении на выделенные серверы, каждый из которых отличается и размещается сторонними компаниями. Может, с DNS что-нибудь сделать?


ОБНОВИТЬ

Похоже, с этой задачей справится обратный прокси (nginx?). Как бы вы направились к каждому бэкэнду на основе названия организации?