从Heroku迁移到AWS的建议

4
根据我的了解,对于我的问题有很多解决方案,但我希望能够得到一些建议从哪里开始。目前我们在Heroku上运行以下堆栈:
- Rails on puma - mongoDB - elasticsearch - redis - mini_magick
在使用Elastic Beanstalk vs OpsWorks vs CloudFormation vs手动设置所有内容时,需要考虑哪些因素?此外,出于财务原因,如果可能的话,我真的不想使用Docker等第三方服务。众多选项让我有点困惑,不知道从哪里开始或如何选择。背景:现在我非常喜欢Heroku,因为我不必过多考虑系统管理员(在我的团队中,我是唯一的开发人员),但最近我们获得了大量的AWS年度信用额度,因此似乎有理由将其转移到AWS上。
2个回答

6

我想进一步解释Mark的优秀回答。

可用的替代方案

由于您是唯一的开发人员,Cloud Formation和OpsWorks对您来说都不是好选择。

使用OpsWorks,您需要编写或至少了解配置实例的Chef自动化代码。另一方面,单独使用Cloud Formation是不够的。它将帮助您创建AWS云资源,但您仍然需要弄清楚如何编排应用程序部署,这只是个开始。这两个选项都不能像Heroku那样直接提供运行和部署代码所需的所有内容。您需要自己实现其中的部分。

由于在EC2之上滚动自己的自动化甚至比上述选项需要更多的工作,因此我认为您在AWS中有两个适合您需求的选择:

1) Elastic Beanstalk

这是您在AWS中最接近Heroku的选择。起初,您可能需要花些时间了解平台,因为它不像Heroku那么直观,但最终Elastic Beanstalk将为您提供所有必要的工具,以便您继续运行应用程序而无需花费时间进行系统管理员任务。

2) ECS + Empire

尽管您提到使用Docker对您来说不可行,但我仍然想强调使用ECS,即亚马逊的Docker编排服务,作为Heroku替代方案的选择。

ECS本身并没有提供足够的自动化功能,无法满足PaaS所需的一切。该服务旨在用作构建块,您应该扩展其功能以适应您的需求。

幸运的是,Remind的人已经为您完成了这项工作。他们发布了一个名为Empire的开源项目,根据其自身描述,它是“在ECS之上的控制层,提供类似于Heroku的工作流程”。

Empire与Heroku的API兼容,其命令行实现了Heroku的最重要的功能。

Empire是一个开源项目,因此如果您选择使用它,您应该准备不时地查看其代码。文档不是很完善,虽然该项目有些热度,但社区规模并不是很大。

总体而言,如果您愿意使用Docker运行应用程序,它是Heroku的一个很好的替代方案--那么您为什么不应该呢?

Addons

除了你可以获得免费的AWS信用之外,我认为从Redis Labs切换到Amazon的Redis服务(ElastiCache)的主要好处是当您在AWS上运行应用程序时,访问Redis实例将更容易(且更便宜)。总的来说,当您迁移到AWS时,很容易复制您正在Heroku中使用的插件。对于像Elasticsearch这样的第三方插件,您只需继续将应用程序指向相关的端点即可。如果要复制Heroku的本地插件(如部署钩子)则有点复杂,因为在迁移到AWS时无法继续使用它们。在这些情况下,通常可以找到替代方法在AWS内部复制其功能。如果您想了解如何迁移最常见的插件,我写了一篇文章详细介绍了如何做到这一点,您可以在此处找到:如何在AWS上复制Heroku的插件。希望这有所帮助。

2
对于你的Rails应用程序,Elastic Beanstalk与Heroku非常相似。如果你已经熟悉像Heroku这样的PaaS,我建议你使用Elastic Beanstalk。起初配置可能会更加困难(因为你可以配置的选项更多),但之后部署过程将非常类似于你所熟悉的流程。
当然,Heroku和大多数(也许所有)其他服务都已经在AWS上运行,所以你实际上只是从一个基于AWS的服务集合切换到了Amazon自己的版本。你可能仍然可以使用一些在Heroku上使用的相同服务。例如,我认为MongoLab是Heroku上推荐的MongoDB服务,并且它也是我首选的AWS MongoDB-as-a-Service。如果你想使用那些AWS学分来购买MongoDB,你需要设置EC2服务器并自己安装和管理MongoDB。
对于Redis,你可以使用Amazon的ElastiCache服务或RedisLabs。我发现RedisLabs的功能和价格比ElastiCache更好,但你可以使用AWS学分购买ElastiCache。
对于Elasticsearch,你可能想使用Amazon的新托管Elasticsearch服务。

谢谢@mbaird!这听起来像是我在阅读后开始趋向的设置,但得到确认还是很有帮助的...我很好奇,除了亚马逊自己的文档之外,你有什么其他常用的学习资源吗?他们的文档只能带你走那么远。 - Christopher Changchien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接