我此时正在 AWS 之外运行一个大型 Rails 应用程序,我对此非常满意。以前我有许多专用的盒子,它们总是会导致问题——它们中的一个迟早会由于某种原因崩溃,Raid 失败,数据库问题等等。
在 AWS,我将 RDS 用于数据库,将弹性缓存用于缓存,我将所有代码保存在一个充当暂存服务器的胖实例上,并获取可变数量的保留实例以通过 NFS 加载代码。
我还使用自动缩放——我们已经为一些预留实例预付了费用,自动缩放有助于在 CPU 使用率高于 60% 时启动节点,然后在低于 25% 时将其移除。自动缩放规则基于 cloudwatch 警报,可以设置为监视特定的一组实例、内存缓存服务器等,当某些缩放活动发生时,例如超过 100 个实例时,您甚至可以通过 SNS 收到电子邮件和 SMS 通知在不到 1 小时内发送垃圾邮件(大量流量高峰)。顺便说一下,这些实例也会直接添加到负载均衡器中,您不需要弄乱会话存储,因为您可以使用非常好的粘性会话功能。
最近我还开始使用带有现货实例的第二个启动组,这在 cloudwatch 规则方面有点复杂,但我每个月都能节省很多,因为现货价格要低得多。当我出价的现货价格(最低)不够时,我的设置切换回预留实例。
甚至最近我也开始使用 CloudFront,它可以让我的应用程序的页面资产加载得非常快(大约 2 兆的 CSS、JS、一些图标精灵)。以前我是通过负载均衡器直接从实例提供服务。
这需要大约 20 个小时来部署、测试和调整以获得最佳性能和可用性。
我对 AWS 的一个问题是,除非您准备买单,否则没有任何支持。他们声称无需订阅即可提供一些支持,但支持领域的唯一选择是计费。哈。幸运的是,这一切都足够稳定,不会让我处于不得不为此付出代价的境地。
总体而言,Rails 非常适合 AWS。我每个月花费不到 2 个小时进行维护,而我之前花费了 30 多个小时。对我来说最重要的是,我知道我可以 GTFO 度假 X 个月,因为我知道什么都不会造成任何麻烦——一年多没有收到监控警报。
稍后编辑:该应用程序是一个具有白标功能的体育网站,大量用户,大量管理员在后端处理内容,数据库密集,因为我们显示的市场定价数据应该每隔几秒钟更新一次。我每页的平均加载时间约为 3 秒,专用服务器在做同样的事情——数据库、内存缓存、存储、负载平衡、Web 应用程序。现在我的平均时间不到 1 秒。现在每月的账单大约低 8 倍。