【问题标题】:Heroku to AWS Migration AdviceHeroku 到 AWS 迁移建议
【发布时间】:2016-02-19 16:32:07
【问题描述】:

根据我收集到的信息,我的问题有很多解决方案,但我会很感激一些关于从哪里开始的建议。这是我们目前在 heroku 上运行的堆栈:

  • 彪马上的导轨
  • mongoDB
  • 弹性搜索
  • redis
  • mini_magick

使用 Elastic Beanstalk、OpsWorks、CloudFormation 与仅自己手动设置所有内容的决定是什么?此外,出于经济原因,我真的更愿意尽可能不要使用像 Docker 这样的第三方服务。过多的选择让我对从哪里开始甚至如何选择感到有些困惑。背景:现在我真的很喜欢 Heroku b/ci,不必过多考虑 sysadmin(在我的团队中,我是唯一的开发人员),但我们最近获得了很多年度 AWS 积分,所以这似乎可以让财务对我们来说转移到 AWS 是有意义的。

【问题讨论】:

    标签: ruby-on-rails mongodb amazon-web-services heroku paas


    【解决方案1】:

    对于您的 Rails 应用程序,Elastic Beanstalk 将与 Heroku 非常相似。如果您已经熟悉 Heroku 等 PaaS,我建议您使用 Elastic Beanstalk。一开始可能会更难配置(您可以配置更多选项),但随后会是与您习惯的部署过程非常相似的部署过程。

    当然,Heroku 和您使用的大多数(可能所有)其他服务已经在 AWS 之上运行,因此您实际上只是从基于 AWS 构建的一组服务切换到亚马逊自己的这些服务版本。您可能会继续使用您在 Heroku 上使用的一些相同服务。例如,我认为 MongoLab 是 Heroku 上 MongoDB 的推荐服务,它也是我在 AWS 上首选的 MongoDB 即服务。如果您想将这些 AWS 积分用于 MongoDB,您必须自己设置 EC2 服务器并安装和管理 MongoDB。

    对于 Redis,您可以使用 Amazon 的 ElastiCache 服务或 RedisLabs。我发现 RedisLabs 的功能和价格比 ElastiCache 更好,但您可以将 AWS 积分用于 ElastiCache。

    对于 Elasticsearch,您可能希望使用 Amazon 新的托管 Elasticsearch 服务。

    【讨论】:

    • 感谢@mbaird!这听起来像是我在阅读完所有内容后开始趋于一致的那种设置,但它有助于获得一些确认......我很好奇,除了亚马逊自己的之外,你还有其他学习资源吗文件?他们的文档只带你到目前为止
    【解决方案2】:

    我想扩展 Mark 的出色答案。

    可用的替代品

    由于您是唯一的开发人员,Cloud Formation 和 OpsWorks 不适合您。

    使用 OpsWorks,您需要编写或至少了解配置实例的 Chef 自动化代码。另一方面,云团本身是不够的。它将帮助您创建 AWS 云资源,但您仍然需要弄清楚如何编排您的应用程序部署,这只是为了初学者。 这些选项都不能像 Heroku 那样开箱即用地为您提供运行和部署代码所需的一切。您需要自己实现其中的一部分。

    由于在 EC2 上实现您自己的自动化需要比上述选项更多的努力,我认为您在 AWS 中有两种选择可以满足您的需求:

    1) 弹性豆茎

    这是您在 AWS 中最接近 Heroku 的地方。一开始您可能需要花一些时间来了解该平台,因为它不如 Heroku 直观,但最终 Elastic Beanstalk 将为您提供继续运行应用程序所需的所有工具,而无需花费时间在系统管理员任务上。

    2) ECS + 帝国

    尽管您提到使用 Docker 对您来说是不可能的,但我仍然想强调使用 ECS(Amazon 的 Docker 编排服务)作为 Heroku 的替代方案。

    ECS 本身并不能提供足够的自动化来完成您对 PaaS 的期望。该服务旨在用作构建块,您应该扩展它以满足您的需求。

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

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

    Empire 是一个开源项目,所以如果你选择使用它,你应该做好不时深入挖掘它的代码的准备。文档并不完美,尽管该项目有一些吸引力,但社区并不是很大。

    总的来说,如果您愿意使用 Docker 运行您的应用程序,它是 Heroku 的一个很好的替代品——为什么不呢?

    插件

    我看到从 Redis Labs 切换到 Amazon 的 Redis 服务 (ElastiCache) 的主要好处,除了您拥有免费的 AWS 积分之外,还可以更轻松(并且更便宜)保护对 Redis 实例的访问当您还在 AWS 上运行应用程序时。

    总体而言,当您迁移到 AWS 时,复制您在 Heroku 中使用的插件相对容易。对于像 Elasticsearch 这样的第三方插件,您只需继续将您的应用程序指向相关端点。复制 Heroku 的原生插件(如部署挂钩)有点复杂,因为当您迁移到 AWS 时,您无法继续使用它们。在这些情况下,通常可以找到在 AWS 中复制其功能的替代方法。

    如果您想了解如何迁移最常见的插件,我已经写了一篇详细说明如何迁移的文章,您可以在这里找到它:how to replicate Heroku’s addons on AWS

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 2019-09-04
      • 2014-10-16
      • 2022-01-16
      • 2018-09-21
      • 2016-05-26
      • 2012-12-21
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多