我目前正在为我的 Ruby on Rails SaaS Web 应用程序寻找托管解决方案,我看到的最大问题是,如果我使用 Amazon EC2 之类的东西,那么我仍然需要配置自己的服务器并安装我需要的东西(例如数据库、编程框架、应用服务器等)。每一个都是出错的机会。我还必须担心我的数据是如何备份的、备份的频率以及许多其他“低级”细节。作为一家初创公司,我没有系统管理员的资源,所以我必须自己玩一个。我目前正在为一家初创公司做一些工作,我的老板总是在谈论 EC2 有多棒,因为它让我们“摆脱了硬件业务”——但实际上,感觉并不是这样,因为我们仍然需要设置服务器实例,还是要安装软件,还是要正确配置软件。感觉就像我们仍在从事硬件业务,只是我们并不真正拥有我们正在使用的服务器。
相比之下,像 Heroku 这样的服务(我相信它实际上在底层使用了 EC2)但基本上负责所有低级细节。他们为我做自动备份,我只是指定频率。他们已经设置了服务器配置。他们有办法管理它并保持它运行,所以我不必监控流量。我可以专注于我的应用程序并只部署代码,让他们担心管理并确保数据库正确配置了 Web 服务器并且正确的文件夹具有权限。
Heroku 的问题显然是如果我想修改它,我无法控制这些东西。Heroku 使用 nginx 作为其 Web 服务器;如果我想在 Apache 上使用 Phusion Passenger 以保持在 RoR 开发的“前沿”,我是 SOL。如果我需要在生产中快速打补丁(万恶之源,我知道,但有时会发生)我没有对 Heroku 服务器的 SSH 访问权限。如果我需要设置一个新的数据库用户来允许其他人远程访问数据,我认为我做不到。最糟糕的是,如果服务器确实发生了某些事情,除了等待 Heroku 修复它之外,我什么也做不了。
基本上在什么时候(如果有的话),作为开发人员,我们可以专注于我们的代码和应用程序,而不必在服务器配置中扮演系统管理员的角色?作为一家资源有限且配置服务器知识有限(足以应付)的初创公司,我是否会更好地牺牲一些可配置性来让其他人担心硬件/软件方面的问题?