Facebook是如何让200亿张Instagram照片悄悄搬家的

36氪  •  扫码分享
我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  


Instagram有2亿用户,上面保留有用户分享的200亿张照片。从2010年到今年春之前,这些照片一直存放在Amazon的EC2(弹性计算云)上,但现在这些照片已经被 Instagram 的一只小型团队搬到了收购了他们的Facebook的数据中心上,但2亿用户对此却毫不知情,仿佛什么事情都没发生过一样。他们是怎么做到的呢?

Facebook是在以10亿美元收购Instagram 1年后的2013年4月作出迁移决定的。整个迁移过程用时大约1年。尽管迁移工作量巨大,但实施迁移工作的却是一支非常小规模的团队,迁移开始时Instagram的维护团队只有8人,后来才逐步扩张到20人。实际的数据迁移工作只用的1个月时间,其余的时间完全都是用于迁移的准备工作。

搬迁工作的第一步,是要在Facebook的数据中心建立一套一模一样的软件。然后再把数据迁移过去。当然,这个过程要比你想象的要困难。在Facebook这一侧开通Instagram的照片共享服务之前,需要首先将Instagram搬迁至Amazon云的另一部分。换句话说,得搬两次。

第一次搬家是将服务从Amazon EC2搬迁至Amazon的虚拟私有云VPC。通过VPC,迁移小组可以建立起一个可拓展至Amazon以外地方(即Facebook数据中心)的逻辑网络。这一步很重要,因为Facebook可以对运行Instagram的机器的IP地址拥有完全控制权。而只有这样,在进行软件迁移时才不会出现无数的地址冲突问题。

但是,要想把Instagram从EC2搬到VPC,首先还必须在两者之间搭建一个公用的网络。Amazon本身没有提供这样的工具,因此为了暂时解决这个问题,Facebook自己开发了一套网络工具Neti。这一点说明了云计算的复杂性,对于任何想要跨云服务搭建自己应用的人来说,Facebook的这一步都是一个最大的经验教训。


部分迁移团队成员,左起依次是Pedro Canahuati、Patrick Bozeman、Rick Branson、Nick Shortway、Chris Bray和Michael Gorven,照片:Ariel Zambelich/WIRED

Instagram一开始没有用VPC是因为2010年的时候VPC还没有出来。因此,现在的初创企业要是一开始就未雨绸缪的话,可以考虑在VPC上做自己的应用,这样就能省下这一步迁移工作。而且对于只想把部分设施搬迁到私有数据中心的人来说,用VPC也是明智之选。

而接下来的软件迁移工作,他们得靠一款越来越火配置管理软件—Chef。Chef可以为软件/应用在大规模机器上的加载和配置编写出自动化的“食谱(recipes或cookbooks)”。比方说这种食谱可以自动把适当的软件加载在运行于Amazon VPC的机器上。然后,团队可以利用类似的食谱在Facebook数据中心内部的机器上加载相同的软件。为此,迁移小组编写了专门用于在各种Instragram数据库服务器上安装软件的食谱,然后又制作了用于配置缓存服务器(缓存服务器的用途是加速热门照片的提供)的食谱。

如此,到了2014年的4月,最后一部分的软件和数据也迁移到Facebook的数据中心上了。迁移后的Instagram效率是原来的3倍,而且数据提取时间减少了80%。

此次搬迁的意义,对于Instagram来说,可以使用Facebook的计算工具,对于运营数据中心的工程师来说,此次搬迁是一个模板,也为广大的在云服务至上搭建app的技术社区提供了一个从公有云向私有云迁移的范例。

当然,Facebook的迁移动作说到底只是相对少数。因为,对于大多数的中小企业来说,向公有云迁移才是大势。像Facebook这样将服务从公有云搬迁到自己私有云的只有财大气粗者才能做到。我们也相信,随着Docker、 Mesosphere 等资源统一调度和部署管理工具的成熟,应用的迁移也会变得像即插即用一样的容易。

[本文编译自: wired.com ]

AD: IBM SoftLayer 创业企业扶持培训 立即报名

本文被转载1次

首发媒体 36氪 | 转发媒体

随意打赏

提交建议
微信扫一扫,分享给好友吧。