我现在正在AWS上运行一个庞大的Rails应用程序,我对此感到非常满意。以前我有很多专用的盒子,总是会造成问题 - 迟早他们中的一个会因为某些原因而崩溃,Raid故障,数据库问题。
在AWS上,我使用RDS作为数据库,用于缓存的弹性缓存,我将所有代码放在一个胖实例上,充当临时服务器并获取可变数量的保留实例以通过NFS加载代码。我也使用自动缩放 - 我们已预付了大量的预留实例,自动缩放有助于在CPU使用率超过60%时启动节点,然后在25%以下时将其删除。自动缩放规则基于可设置为监视特定组实例,memcache服务器等的cloudwatch警报,甚至在发生某些缩放活动时,您甚至可以通过SNS收到电子邮件和SMS通知,比如说超过100个实例在不到1小时内发送垃圾邮件(大规模流量高峰)。顺便说一下,这些实例也可以直接添加到负载平衡器中,并且您不需要混淆会话存储,因为您可以使用粘滞会话功能,这非常不错。
最近我还开始使用第二个发射组,现场实例,这个复杂的事情有点像cloudwatch规则,但由于现货价格低得多,我可以每月节省很多。当现货价格(最低)我出价不够时,我已经切换回保留实例。
甚至最近我也开始使用CloudFront,它让我的应用程序的页面资源加载真正快速(大约2M的CSS,JS,一些图标精灵)。以前,我通过负载平衡器直接从实例提供服务。
这花了大约20个小时来部署,测试和调优以获得最佳性能和可用性。
我在AWS中遇到的一个问题是,除非您准备付账,否则不会有任何支持。他们声称一些支持在没有订阅的情况下提供,但支持区域中的唯一选项是Billing。哈。幸运的是,所有这些都足以让我不必为此付出代价。
整体Rails非常适合AWS。我每个月花费不到2个小时进行维护,而我之前花费了30多个小时。对我来说最重要的是,我知道我可以在一个X个月的假期中休假,因为我知道什么都不会造成任何麻烦 - 一年以上的监控警报都没有。
后来编辑:该应用程序是一个具有白色标签功能,大量用户,大量管理员在后端内容,数据库密集型的体育网站,因为我们展示的市场定价数据应该每隔几秒更新一次。平均每个页面的加载时间约为3秒,而专用服务器的功能大致相同 - 数据库,memcache,存储,负载平衡,Web应用程序。现在我的平均时间不到1秒。月费比现在低大约8倍。
AWS的东西虽然是,它是一个IaaS,它只是提供系统来构建我的应用程序。 Heroku/Engineyard/Enterprise-Rails/anynines是一款不需要太多安装或维护工作的PaaS。我宁愿开发PaaS,而宁愿开发我的应用程序,而不愿维护系统。所以我需要一些易于扩展和设置的东西。 – Nikom
诚然,你必须花一些时间来设置它。也许在市场上有一些AMI,尽管有完整的RoR堆栈,但这些可能会节省几个小时的工作时间。 –