AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

使用 Docker 从 Heroku 迁移到 AWS

  • 2015-04-09
  • 本文字数:1357 字

    阅读完需:约 4 分钟

DoorDash 是一家按需提供快速物流服务的公司。最近,他们发现其基于 Heroku 的基础设施已经无法满足需求,于是便迁移到了 Amazon Web Services。其间,Docker 技术的引入为他们节省了大量的时间。近日,DoorDash 官方博客发文介绍了迁移过程。

DoorDash 最初选择 Heroku 是因为它简单方便。但随着流量增加,Heroku 显现出以下几个方面的问题和局限:

  • 性能:Heroku 服务器实例(又称为“dynos”)性能表现欠佳。每个 dyno 的 CPU 性能和内存资源均非常有限。即使在对 Django 应用进行了大量优化之后,他们仍然不得不增加许多 dyno,这使他们觉得目前的基础设施不具备持续可扩展性。
  • 成本效益:Heroku dynos 的计算资源非常昂贵,租用一个 Heroku “2x” dyno(内存 1GB)的费用可以租用一个 Amazon c3.large EC2 实例(内存 3.75GB)。
  • 可靠性:Heroku 部署 API 一到两周就会出现一次问题。
  • 控制:在 Heroku 环境中,无法对服务器进行细粒度的控制,比如,安装自定义软件时无法通过 SSH 登录服务器调试 CPU 或内存问题。

为了克服这些问题,他们选择了 Amazon Web Services。Amazon EC2 实例 CPU 内存配置丰富多样,允许以 root 权限访问,并且性价比更高,看上去是个理想的解决方案。但是,迁移工作量很大。为了自动化服务器配置过程,需要安装“配置管理”软件(Chef 或 Puppet),而且还需要学习相应的领域专属语言,编写脚本执行第三方依赖安装任务及配置服务器栈中的所有软件。之后,为了测试,还需要使用 Vagrant 建立一个本地开发环境。因此,他们希望有一种更简单的方式帮助他们完成这项工作。经过研究,他们选择了 Docker,迁移计划变成了将运行 Django 应用的 Docker 容器部署到 Amazon EC2 实例上,这样就不需要将大量的时间花费在 EC2 主机配置上,从而将这种复杂性转移到了 Docker 容器环境中。迁移过程主要包含以下两个方面的工作:

  • 使用 Dockerfile 创建 Docker 镜像:与 Chef 或 Puppet 脚本相比,Dockerfile 更容易编写和理解。对 Django 而言,这一部分主要是指出如何安装第三方 Python 依赖以及配置复杂的软件组件(如 Web 服务器或数据库连接池)。
  • 准备 Docker 环境:为了节省时间,他们决定使用 AWS Opsworks ,这是一个内置了 Chef 的服务,可以帮助他们管理 EC2 实例。虽然最终没能避免使用 Chef,但由于绝大多数的系统配置工作都已经在创建 Docker 镜像时完成了,所以这里并没有很多工作要做。

下图是迁移完成后的代码部署流程:

两名 DoorDash 工程师用大约一个月的时间完成迁移,其中还包括学习 Docker、AWS 和 Chef。新环境的性能提升了 2 倍多,DoorDash 的平均 API 响应时间由 220 毫秒降到了 100 毫秒以下,后台任务执行时间也降低了一半。而且,所需服务器的数量也减少了一半,大大降低了托管成本。此外,由于有更多的控制权限,他们还安装了 Nginx 作为反向代理,提高 Web API 吞吐量。毋庸置疑,他们非常高兴迁移到 AWS,而 Docker 是他们能够快速完成迁移的关键原因。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流。

立即免费注册 AWS 账号,获得 12 个月免费套餐:点击注册

有云计算问题?立刻联系 AWS 云计算专家:立即联系

2015-04-09 21:512357
用户头像

发布了 1008 篇内容, 共 423.9 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

批量重命名--我用火语言RPA写了个EXE可执行文件

火语言RPA

RPA 高效办公 批量重命名软件

昇思市场份额将达30%,权威机构对中国AI框架市场最新预测

极客天地

仓库存储管理系统-生产行业版本(源码+文档+部署+讲解)

深圳亥时科技

阿里云大模型矩阵:千问&Qwen解锁多元智能

测试人

软件测试

如何让 localStorage 数据实现实时响应

极限实验室

React LocalStorage web 开发

淘宝直播间弹幕API接口(taobao.item_video_barrage)

tbapi

淘宝API接口 淘宝直播间弹幕接口 淘宝直播间数据接口 淘宝直播间弹幕API接口

JavaScript是按顺序执行的吗?聊聊JavaScript中的变量提升

不在线第一只蜗牛

JavaScript

AI口语考试APP的技术难点

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

深入理解 HTTP 协议:从基础到实践全解析

不在线第一只蜗牛

网络协议 HTTP

通过 TDengine 提升物联网平台性能的秘诀,联犀深度解析

TDengine

数据库 tdengine 时序数据库

百度安全获得中国信通院深度伪造视频检测服务评估优秀级

百度安全

阿里内部Spring Cloud Alibaba 手册, 面面俱到,太全了!

Summer

Java 程序员 面试 架构师 大厂

2025 年低代码平台还存活哪些,低代码平台哪家强?

JEECG低代码

低代码 零代码 JeecgBoot 低代码平台比较 jeecg

AI口语考试APP的功能

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI口语练习

仓库存储管理系统-贵金属(源码+文档+部署+讲解)

深圳亥时科技

2.5 亿美元融资加速升级,从子网到 Avalanche9000,Avalanche 想要改变什么

TechubNews

程序员面试必备的Java八股文,适合所有的Java求职者!

Summer

Java 程序员 面试 架构师 大厂

WebGL开发中的代码优化

北京木奇移动技术有限公司

WebGL 数字孪生 软件外包公司

解码“闺蜜机”的商业密码

脑极体

AI

使用Docker从Heroku迁移到AWS_亚马逊云科技_谢丽_InfoQ精选文章