NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

使用 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:511973
用户头像

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

关注

评论

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

斯坦福发布 最新 GPT 模型排行榜 AlpacaEval【AI工具免费使用】

袁袁袁袁满

大模型 GPT AI绘画 ChatGPT

Nxyz是怎么样的一个搜索平台?

币离海

区块链 Web3.0 nxyz

AI 鲲鹏独角兽 | Kyligence 荣登毕马威中国人工智能创新双30企业榜单

Kyligence

数据分析 Data + AI

LeetCode题解:剑指 Offer 03. 数组中重复的数字,原地置换,JavaScript,详细注释

Lee Chen

LeetCode

免费的国产数据集成平台推荐

RestCloud

数据同步 ETL

ONLYOFFICE:一个免费、开源、跨平台的办公神器

陈橘又青

远程办公 文档 协同办公 协同文档

我用低代码平台,简单搭建了一套管理系统

互联网工科生

低代码 低代码平台

半导体即国家,日本做了啥?最大的 AI 模型并不十分透明;特斯拉安全数据报告缺失近一年丨 RTE 开发者日报 Vol.70

声网

复杂业务逻辑的判断与优化

ZA技术社区

大数据 科技 保险科技 众安保险 ZA技术社区

7款最佳免费需求管理工具详细对比

PingCode

需求管理 需求管理工具

大模型 | Red Teaming, 无法忽视的关键一环

澳鹏Appen

人工智能 ChatGPT 生成式AI 红蓝对抗 red team

IBM SPSS Statistics 26 (spss统计软件)中文特别版mac/win

iMac小白

IBM SPSS Statistics中文 IBM SPSS Statistics 26 spss统计软件

低代码源代码交付的平台有哪些?

这我可不懂

源代码 低代码平台

【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 网际协议IP详解。

百度搜索:蓝易云

云计算 Linux TCP 运维 IP

QSpace Pro for Mac:轻松摆脱多窗口来回切换的繁琐

晴雯哥

开发者故事 | 我和openGemini有个约会

华为云开源

时序数据库 开源社区 开发者故事

国内仅有的两个“代码生成型”低代码平台之对比

编程之成住坏空

低代码 无代码 代码生成 代码自动生成 代码生成器

分享10个免费的Python代码仓库,轻松实现自动化办公(上)

程序员晚枫

Python

Git基本知识

百度搜索:蓝易云

git 云计算 Linux 运维 云服务器

Zbrush 2023(数字雕刻和绘画程序)激活版mac/win

iMac小白

ZBrush破解版 ZBrush2023 ZBrush下载

乡村体育赛事火爆出圈原因,赛事直播源码搭建观赛平台如何成为带动产业发展

软件开发-梦幻运营部

协同创新、奔赴未来——“华为云杯”2023人工智能创新应用大赛华丽谢幕

科技热闻

选择低代码开发的理由

树上有只程序猿

软件开发 低代码 传统开发

Linux远程管理协议

智趣匠

iPhone垃圾清理器 AnyMP4 iOS Cleaner最新中文版

胖墩儿不胖y

Mac软件 清理工具 清理器

集结AI创新力量,“华为云杯”2023人工智能应用创新大赛圆满落幕

科技热闻

Token空投100个地址怎么搞?PandaTool批量转账工具解放双手

加密先生

UML软件哪个好?10款好用的UML工具和画图软件推荐!

彭宏豪95

UML 在线白板 UML建模工具 绘图软件 绘图工具

文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题

福大大架构师每日一题

福大大架构师每日一题

“火焰杯”软件测试赛,河南工业大学人工智能与大数据学院获奖

测试人

基于奇点云DataSimba,规划并新建数据生产域的实践

Geek_2d6073

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