为Ruby On Rails应用程序选择正确的Amazon Web Service(AWS)

时间:2014-04-10 18:31:39

标签: ruby-on-rails amazon-web-services

据我所知,Ruby On Rails部署有许多AWS选项。

(还有其他人吗?)

虽然各自的常见问题解答中都记录了各种服务功能,但我发现缺少的是这些服务之间的比较。

我应该回答什么问题来确定最符合我需求的服务?

3 个答案:

答案 0 :(得分:3)

您应该回答的问题是,哪些是最适合您需求的服务:


1。我的应用需要什么级别的自定义?

根据您应用的组件,您的需求可能会有所不同。您可能需要使用与HAproxy不同的Load Balancer(EB中的默认LB和显然是OpsWork)或者您可能想要使用Ubuntu OS(例如EB使用RedHat),因为您正在构建比特币应用程序并且比特币守护程序很容易获得在能力。等

EC2 = IaaS =更高的自由度。 EB = PaaS =修改底层图层要困难得多(但仍有可能)。 我还没有真正使用过OpsWork,但考虑到修改的容易程度,它似乎介于前两者之间。 (像Scalr这样的工具)


2。我是否真的有时间和资源来处理基础设施,还是需要专注于编写应用程序的逻辑?

您是否可以将宝贵的时间用于思考和维护模块化基础架构,以便提高部署效率?

如果您的答案是肯定的,那么请使用vanilla EC2 / AWS和橡胶或类似的解决方案来编写系统和部署脚本。 基础架构代码岩石。

如果答案是否定的,那么您最好使用任何PaaS解决方案。它可以是Elastic Beanstalk,或Heroku,Engine Yard或docker / dokku(便宜而且非常好)。然后,您可以随时重新设计系统。


第3。使用我选择的服务来扩展/增长(关于成本和工程)会有多容易?

这个问题很棘手。想象一下你的应用程序获得了很大的吸引一旦选择了可能的部署策略,就必须大致了解扩展或添加组件到系统的容易程度,以及它对定价的影响......而不会出现大的“过度工程”错误(想象)未来尚未存在的问题)

重新设计所有应用程序将花费您的时间和金钱,因此正确的初始选择应在“简单/便宜修改”之间取得平衡,并保留您的选项“开放”以在未来添加其他组件,w / o过分担心。你的时间很宝贵。


另一个选项

至于任何其他“服务”,我现在还记不起AWS的服务选项,但是你有很多不同的方式可以无缝地实现对AWS的部署......即:

  • Vagrant + Chef
  • Vagrant + Rubber
  • Boto / AWSCLI + Capistrano
  • Boto + Cloud-Formation + Capistrano
  • Rubber + Vanilla Orchrestration服务:Puppet,Chef,SaltStack
  • 托管Cloud Orchrestration:RightScale,Scalr等
  • CI服务器控制以上所有(我的收藏)
  • Docker / dokku(您自己的PaaS, 简单便宜 heroku兼容部署)


0,02

答案 1 :(得分:1)

这与上下文有关,但我建议您先尝试使用Elastic Beanstalk。如果您熟悉Chef,OpsWorks可能更有趣,或者如果您有非常具体的架构,CloudFormation和直接EC2可能会更有趣。

免责声明:这可能有点偏颇,因为我非常喜欢(并且喜欢)Elastic Beanstalk。

答案 2 :(得分:1)

我个人会使用标准的EC2。直接安装让我感到宾至如归。我已经考虑使用的一件事,但尚未使用Cloud 66部署服务。把它想象成类固醇上的橡胶。