BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

使用Docker从Heroku迁移到AWS

| 作者 谢丽 关注 9 他的粉丝 发布于 2015年4月10日. 估计阅读时间: 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云计算专家:立即联系

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT