我想扩展 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。
希望这会有所帮助。