У нас есть довольно внушительное монолитное приложение Rails, которое имеет несколько функций (в скобках указан примерный% от общей кодовой базы):
Со временем административная часть сайта стала намного больше, чем все остальное. Все вышеперечисленное по-прежнему существует в одном приложении Rails, размещенном на одном динамометрическом стенде Heroku Performance-M.
Проблема в том, что в большинстве случаев высокая степень использования «администратора» приводит к замедлению работы всего сервера, что влияет на пользователей, не являющихся администраторами.
Из-за этого мы хотим разделить нагрузку на несколько веб-серверов Heroku, но мы хотели бы сохранить одно приложение Rails для простоты и скорости разработки.
Как лучше всего это сделать?
Спасибо!
PS - Я не был уверен, что Serverfault - лучшее место для публикации этого сообщения ... но было действительно сложно выбрать одно. Если я выбрал неправильное место для публикации, сообщите мне, и я отправлю его туда.
Простым ответом здесь было бы разделение на два динамометрических сервера и размещение перед ним маршрутизатора уровня 7, такого как HAProxy, Varnish или того, что предлагает heroku. / admin / * переходит к одному дино, все остальное - к другому. Это одно и то же приложение для обоих, просто оно не вызывает определенные части сайта.
ТЕМ НЕ МЕНИЕ
Это поможет вам, только если это проблема производительности приложения. Если страницы администратора, например, убивают базу данных - то это ни в малейшей степени НЕ повысит производительность.
Кроме того, это предполагает, что ваше приложение действительно может правильно обрабатывать состояние и сеансы - при масштабировании с 1 сервера до 2, многие вещи, вероятно, выйдут из-под контроля, чтобы вас укусить. Обязательно много тестируйте и сообщайте клиентам, когда происходят изменения. Спланируйте откат, потому что развертывание может потребовать у вас пары попыток.