Heroku - 分发单片 Rails 应用程序

Heroku - 分发单片 Rails 应用程序

我们有一个相当大的单片 Rails 应用程序,它具有一些功能(括号中是占总代码库的估计百分比):

  • 用户未登录时的营销网站:主页、附加登录页面、SEO 页面、注册/登录页面等 (5%)
  • 登录后面向用户的页面:登录后,用户可以看到 Web 应用程序并与我们的产品进行交互(20%)
  • 登录管理员页面:登录后,管理员可以使用集成的 CMS 管理用户可以看到的所有内容 (75%)

随着时间的推移,网站的管理部分变得越来越庞大。以上所有内容仍然位于一个单独的 Rails 应用程序中,托管在一个 Heroku Performance-M 测功机上。

问题是,很多时候,“管理员”使用率过高会导致整个服务器速度变慢,从而影响非管理员用户。

因此,我们希望将负载分成多个 Heroku Web 测功机,但是为了简单和提高开发速度,我们希望保留单个 Rails 应用程序。

解决这个问题的最佳方法是什么?

谢谢!

PS - 我不确定 Serverfault 是否是发布此内容的最佳地点...但选择哪个地点确实令人困惑。如果我选​​择了错误的发布地点,请告诉我,我会在那里发布。

答案1

简单的答案是将其拆分为两个 dyno,并在其前面放置一个第 7 层路由器,如 HAProxy、Varnish 或 heroku 提供的任何路由器。/admin/* 转到一个 dyno,其他所有内容转到另一个。两个 dyno 上的应用程序相同,只是不调用站点的某些部分。

然而

这只在应用程序性能问题时才有用。例如,如果管理页面正在关闭数据库 - 那么这丝毫不会提高性能。

此外,这假设您的应用程序实际上可以正确处理状态和会话 - 当从 1 台服务器扩展到 2 台时,很多事情可能会突然出现并困扰您。确保进行大量测试,并在发生变化时与客户沟通。计划回滚,因为部署可能需要您尝试几次。

相关内容