我和我的团队目前正在构建一个{em}至少 5k用户使用的Ruby on Rails
Web应用程序(SaaS模型),之后可能会有更多。
当我们到达开发过程的最后时,我想知道我们将使用什么样的托管。
我首先考虑使用带有Nginx
和Puma
的标准Web服务器,以及专用于数据库的第二个服务器,但可扩展性是我们真正想要的。所以我开始检查另一种解决方案(知道我们团队中没有人是管理员这一事实),我最终选择了Heroku。
所以,我的问题是我为什么要使用像Heroku这样的东西?在看完价格之后,感觉它的成本会超过标准服务器以降低性能但我仍然对它很感兴趣:如果人们使用它,就必须有理由。
答案 0 :(得分:2)
Heroku
& DigitalOcean
等,只是服务部署到"云"托管更容易。 Heroku使用AWS
的计算基础架构来托管您的应用,但提供了一个环境来帮助您更轻松地部署它们:
Why do people use Heroku when AWS is present? What distinguishes Heroku from AWS?
Heroku vs ...
关于Heroku的一些重要注意事项是,您没有直接访问您的数据库,以及依靠他们的基础设施来支持(如果他们的某些事情发生了数据中心 - 以前发生过 - 你受Heroku& AWS工程师的支配。)
我们有两个问题:
- 您有义务使用他们的AWS Postgres DB
- 您已经通过 Heroku的域名
路由
-
<强>选择强>
对我来说,没有太大的区别,因为Heroku / DO只是提供了一个环境来推动Heroku
在各自的合作伙伴托管服务提供商上运行。
由于易于部署(DigitalOcean
),您会遇到缺点,即您的数据库,环境等无法直接配置。 I.E如果你使用Heroku,它很难摆脱它(传输数据等)。
通过使用RackSpace或AWS等直接解决方案,您可以控制环境,这意味着您可以直接访问数据库,相关服务和系统的其他方面。当然,它带来了更多的维护,但你并没有像Heroku一样被锁定在一个系统中
-
<强>系统强>
就系统而言,RackSpace
:
域example.herokuapp.com将始终保持活动状态,即使 您已经设置了自定义域名。如果您希望用户使用自定义 域专有,您的应用应发送HTTP状态301已移动 永久告知Web浏览器使用自定义域。主人 HTTP请求标头字段将显示用户正在尝试的域 访问;如果该字段是example.herokuapp.com,则发送重定向。
这与使用不同依赖关系的锁定相结合。 Heroku系统的其他方面。它基本上是亚马逊VPS
基础设施
-
<强>建议强>
如果您希望拥有5k用户,我强烈建议您查看 设置你自己的环境,可能是Heroku locks you into using their domain infrastructure(正如我们所说) 使用它们。)
我认为Heroku非常适合那些只想让应用程序运行起来的开发人员,但是提供一个可以控制的环境并不是很好。
这方面的一些例子包括您的数据库 - 在Rackspace等上设置意味着您可以自己定义数据库。在Heroku上,数据库保存在第三方数据中心,您从未看到过(尝试在Heroku上设置git push
)
另一个例子是您将如何扩展应用程序。如果您有内存泄漏等问题,那么您可以更好地定位自己的堆栈,而不是依赖别人的堆栈。它允许您定义应用程序应该如何操作的具体细节 - 提供更容易扩展的能力