你可以一边开车,一边换轮胎吗?Dropbox 做到了
如果你是 Dropbox 5 亿用户中的一员,它对你来说不过是电脑上的一个文件夹,能让你在网存文件,发文件,在笔记本、手机、平板之间同步文件而已。然而,窥视这个文件夹背后时,你才会发现它其实是计算机工程的鬼斧神工。Dropbox 运行于一个巨大的计算机网络之上,这个网络的进步体现了过去十年中改变互联网的一股力量。今天,这个网络进入了一个卓越的新时代。
如你所见,在创立的前 8 年里,Dropbox 为 5 亿用户储存了几十上百亿个文件。但是,他们并不想自己保管这些资料。像近年许多其他的初创科技公司一样,Dropbox 把生意建立在所谓的“亚马逊云”上。这是一个非常受欢迎的服务,没错,它属于那个你熟知的亚马逊——世界最大的在线零售商。亚马逊的云计算服务让任何人都能在上面运行软件,而无需架设自己的硬件设施。换句话说,这几十亿上百个文件储存在亚马逊的机器里,而不是 Dropbox 的机器里。
逃离亚马逊云
但情况有变。过去的两年半里,Dropbox 打造出了自己的庞大网络,把服务转移到了自主设计的新机器上,机器上运行着由自家程序员用全新语言编出的软件系统。通过吸取硅谷前辈 Google、Facebook、Twitter 的经验,Dropbox 成功地把 90% 以上的文件转移到了这个新的在线帝国上。
必须肯定,这是一次计算机工程的鬼斧神工,但此举的意义超过了 Dropbox 本身,它还揭示出一些在过去十年里席卷全球硬件市场的重大改变。
今天,越来越多的公司把业务搬上了云,而不是从云上搬走。根据 Forrester 预测,云计算将成为一个 1910 亿美元的市场,巨头如 Google 和微软都在用自己的云服务向亚马逊云发起挑战。拒绝对本故事做出评论的亚马逊刚刚公布了财务信息,Amazon Web Service 去年四季度斩获 24.1 亿美元——这基本发生在 Dropbox 离开之后。
不过,有的公司规模变得如此之大,使得自主建造定制网络成为了更合理的选择。亚马逊、Google、微软依赖规模经济,让云服务价格保持低廉,但这还是一笔有利可图的生意。“没人把云生意当慈善来做,哪都会有点利润。”Dropbox 工程副总裁说。当公司增长到一定程度,离开云端能为你省下大笔的钱。Dropbox 认为它现在就有这么大了。
建立一个如此巨大的网络是极为困难的任务,这绝不是适合所有公司的选项。“正确的答案其实是别自己做这个”,前加州大学圣塔芭芭拉分校教授伍尔兹·霍瑟尔(Urs Hölzle)说。他曾是 Google 的第 8 号员工,曾负责建立公司的全球网络,如今负责运营 Google 的云计算服务。他解释道,大多数公司要么不够大,要么不够复杂,因此无法从规模经济获益。坚持要这么做的话,一旦公司发展慢下来,自建的网络可能会成为梦魇。在 Dropbox 的故事里,这也是个重要的考虑。最近几个月里,专家和投资人对 Dropbox 感到有点失望,说它 100 亿美元的估值虚高,而在吸引商业客户的层面动作又太慢。
但霍瑟尔承认,对于某些公司来说这个做法还是说得通的。至少现在看来,Dropbox 也属于这类公司。据首席运营官丹尼斯·伍德赛德(Dennis Woodside)所说,独立运作带来了“巨大的经济价值”。讽刺的是,Dropbox 逃离云端的动作恰恰反映了云的强大。它像亚马逊云一样建立自己的基础设施,把自己也变成了一家云公司。在往自己的庞大网络迁移时,Dropbox 加入了亚马逊、Google、微软的行列,把全球硬件市场以及信息科技朝一个全新的方向推进。
云,是未来的文件储存方式
亚马逊、Google 和微软主宰了一线云计算市场。同时,还有个以 Dropbox 及其劲敌 Box.com 等公司为核心的二线市场。这些公司属于一个不同的类别——他们通过互联网提供现成的软件服务。Box 的 CEO 阿隆·列维(Aaron Levie)说:
“这个产业的下一个大时代,将有一场平台之战。谁会成为创业公司拥抱的下一代平台?”
Dropbox 希望成为其中一个。于是它押上不少身家,建立了自己的云,但这不容易。随着在预置软件领域的扩张,它要应对来自亚马逊、Google 和微软的强大竞争压力。事实上,这些巨头已经开始用自己的文件分享工具挑战 Dropbox 和 Box 的地位了。未来的文件分享服务很可能会变得便宜些,分享散碎的文件——诸如照片、视频、文档、数据表——将变得不那么重要。文件不是手机使用场景的核心,有了随时在线的消息软件和 Slack 等协同软件,文件对桌面电脑也不那么重要了。
Dropbox 知道这一切。它极高的估值让它成为了专家和投资人口中“反独角兽”言论的靶子。近几个月,没有哪家公司热度比得上 Dropbox,许多人质疑它对抗互联网巨头的能力。从外界与这家公司的高管多次对话看来,显然 Dropbox 不是活在自己的幻想中。问题是——在投入了时间、金钱、努力完成数据迁移之后——公司能否与那时的世界同步?
“我想造点什么”
詹姆斯·考林(James Cowling)在麻省理工认识了 Dropbox 的创始人。作为学校的一名研究生,他的研究方向是分布式系统——运行于几十、几百,甚至几千台机器上的计算系统——他与一些最早的 Dropbox 员工是同学。随着 Dropbox 成长,他们保持着联系,来来往往,他们想明白了为什么 Dropbox 应该脱离亚马逊独立运作,以及如何完成这一壮举。考林说:
“看上去是个狂想派计划”(moonshot)。
2012 年,Google 这家互联网上最“狂想驱动”的公司,邀请考林加入负责 Spanner 的工程团队。那是个全球化的数据库,为搜索巨头贡献了巨大的驱动力。Spanner 可能还是地球上最大、最复杂的一个数据库——分布最广泛的分布式系统。不过,考林还是选择加入了 Dropbox。
“我想造点什么”。
Spanner 已经存在了,而 Dropbox 帝国还没有。
创立以来,Dropbox 有一部分在亚马逊云上,有一部分不在。如果有人通过 Dropbox 分享文件,公司把文件储存在亚马逊“简单储存服务”(Simple Storage Service,3S)上;而这些文件的元数据——所有权、下载权限等等都储存在 Dropbox 自己的数据中心。
考林与前 Google 员工、基础设施副总裁阿克希尔·古普塔(Akhil Gupta)等人一同,设计出了一种全面软件系统(sweeping software system),让 Dropbox 可以存下几百 PB 的数据——足够塞满几亿个 U 盘——并且比以前用亚马逊 S3 的时候更加高效。他们把这个系统叫做“魔法口袋”(Magic Pocket)。
“Dropbox 被描述成一个你存放所有东西的地方,东西不会丢失,而且可以随时取用——就像一个魔法口袋。”
本质上,他们给自己做了一个亚马逊 S3,只不过针对自身技术需求对软件进行了个性定制。“我们不是想打造一个同类替代品,而是要打造一个定制品。”阿加瓦尔(Agarwal)说。
即使在 Dropbox 还运行于亚马逊云上时,亚马逊就已经推出了自己的文件分享服务,扮演起了前者的竞争对手。尽管亚马逊的文件分享服务不如 Dropbox 用户友好,也没有他们那辨识度极高的蓝色文件夹 logo,这一举动显然引起了 Dropbox 的忧虑。不过,据阿加瓦尔所说,离开亚马逊云纯粹是出于经济方面的考量,而不是政治方面的。
你必须把这些巨头当成国家来看待——是友好的邻居,但小摩擦也时常会上演。亚马逊有很多业务,但我认为云储存服务对它并不是最重要的。
他最好希望如此。因为 Dropbox 已经满仓入市了。是的,它做出了它需要的软件,不仅如此,他们还定制了自己的硬件。
规模催生硬件需求
多年以来,互联网巨头如 Google、Facebook、微软和亚马逊都为自己设计了数据中心的硬件设施——电脑服务器、网络交换机,有时候还有用来储存海量数据的设备。这些公司别无选择:他们的在线帝国发展得如此壮大,以至于传统设施变得又贵又不好用。他们需要更便宜、更流水线、更具扩展性的新一代硬件。于是他们与亚洲等地的硬件生产商、零件供应商合作,走上了自建硬件之路。
如今,Google 建造的服务器比地球上任何一家公司都多——而且这些服务器还不卖,亚马逊和微软大体也是这个模式。由于这些公司都提供云计算服务,很多公司现在都运行在了云上。在 Facebook 把自己定制的硬件开源后,这个趋势变得更加显著。如今许多厂商,包括亚洲的广达电脑,都卖起了基于 Facebook 硬件的产品。
拉米·阿迦玛尔(Rami Aljamal)率先见证了这一趋势。他为 Twitter 和戴尔电脑建造了新一代流水线机器,借此夺回一点 Google 自建硬件后流失的那块市场。如今,他为 Dropbox 设计机器。
Dropbox 要储存巨量的数据,所以它需要特殊的机器来完成这项任务。他们给这些机器起名为“Diskotech”。Diskotech 是一种规格为 1.5 英尺x3.5 英尺x6 英尺的盒子,每一个这样的盒子能储存 1 PB,或者说 100 万 GB 的数据。换言之,50 个 Diskotech 就能装下人类从古到今写下的所有文字。
开始迁移
自 2013 年的夏天起,考林开始着手设计魔法口袋的软件,花了整整 6 个月才写出初始代码。但这还只是一小步,一旦系统建立起来了,他们还要保证它稳定运作。他们要把软件安装到分布在几个数据中心的几千台机器上。他们要为新硬件定制软件。他们还要把所有数据从亚马逊移出来。
整个过程花了两年。一个浩大如此的工程中,网络数据迁移是一个问题,把机器搬进数据中心是另一个问题。他们两者都要做,Dropbox 还要继续为几亿人服务。前 Facebook 网络工程师丹·威廉姆斯负责了许多扩张工作,他深知其中的艰辛:“这就像一辆正在开着的车,而你想要一边开车,一边换轮胎。”换句话说,在做这些事的时候,Dropbox 也不能暂时关闭服务。有趣的是,衡量这次壮举是否成功的一条重要标准是:用户是否意识到了这次迁移。
考林和团队成员完成初始代码后,在一个标准设备网络上进行了测试,这个网络是一个 Dropbox 的影子版本,装下了 20% 原本储存于亚马逊的数据。他们发誓,要测试 180 天无大 bug 才算成功,甚至还在 Dropbox 总部的墙上挂了一面倒数的钟。两个月后,一个大 bug 出现了,于是倒计时重新开始。于是,测试工作总共花了 8 个月。
当他们确信新系统可以在所有 Dropbox 上运行时,团队把代码移植到越来越多的系统中,同时从亚马逊迁移出越来越多的数据。那时 Dropbox 与亚马逊的合同还有 6 个月到期。“打开降落伞的时间非常短。”考林说。
光是把数据从亚马逊迁出,再迁入另一个数据中心,已然是史诗级的任务。与此同时,数据中心要架设好设备来接收这些数据。所有的物理操作都有个时间限制,如果他们不能及时把新系统装进数据中心,也就没法及时从亚马逊上把数据搬出来。于是他们每天为 40-50 排设备装机,每一排有 8 台机器。有时候还会碰到些小意外,例如在一天里,两辆从不同地方开往 Dropbox 数据中心的卡车同时发生了交通事故。
尽管有这样那样的意外,Dropbox 最终赶在合同到期前完成了迁移。因为欧洲的发展趋势不那么确定,欧洲业务仍在使用亚马逊云。但古普塔等人把 90% 的数据移进了自己的数据中心。然后,最麻烦的工程难题来了。
最麻烦的事来了
从亚马逊云把数据弄下来后,阿迦玛尔与一位名叫杰米·特纳的程序员开始商量下一个任务:把文件从老机器搬到新机器上来。特纳是英语专业、半道出家的程序员,参与创立过多家科技公司,与阿迦玛尔一起确保软硬件能顺利接轨。阿迦玛尔和工程师们设计了能容纳 1PB 数据的 Diskotech,但是问题来了——魔法口袋软件与新硬件不太兼容。于是,特纳用一种完全不同的程序语言重写了魔术口袋。
这看起来有点怪。为什么要把代码放进几千台机器,然后把代码改一遍,再放进几千台别的机器?在最大的英特网数据中心这很正常,因为机器老化得很快,零件会不断地坏掉,所以它们都会被更换。你永远在更新你的装备。
一开始,考林、特纳等人用 Google 的编程语言“Go”写下了魔法口袋的代码。这个语言是专为新世界里广泛分布的在线系统设计的,这样一来 Dropbox 就乘上了一个更高的浪头。苹果有 Swift,Mozilla 有 Rust,还有个独立语言叫做 D。这些语言让程序员能更快地写出软件,而且能让软件运行速度更快——即使在几千台机器上同时运行。
不过,Go 语言内存占用很高,以至于运行魔法口袋所需的内存,对这个庞大的储存系统来说负担太重。Dropbox 需要一种能够降低内存占用的语言,于是在这个两年半的工程中间,他们把 Diskotech 的语言又全部换成了 Rust。
折腾完了,巨人可以歇会了
这是很折腾。但正因为 Google、亚马逊、Drobox 经历了这种折腾,其他人才不必自己折腾,这就是云计算的力量。不过,Dropbox 与 Google 或者亚马逊又不同。它不提供原始计算性能,只让你储存、分享文件。这事听起来不难,但随着公司规模增长,储存的数据变多,也会变得很难。Dropbox 希望把分享功能平台化,为此专门打造了一个在线文本编辑器和协同工具 Dropbox Paper。来自微软等公司的开发者都可以把自己的应用接入这项服务。
危险的是,亚马逊、Google 和微软都在扩张自己的服务,他们势必要限制 Dropbox 的发展。假如被对手压制,自己的数据中心会变得更像个累赘而不是福音。之前有个知名的案例,当旧金山社交游戏公司 Zynga 进入高速增长期时,公司把数据从云端搬到了自己的数据中心。但之后生意萎缩了,于是它就只好坐拥着一堆自己根本用不上的基础设施。它现在又回到了亚马逊。
Dropbox 有一个优势,即加瓦尔、古普塔、威廉姆斯和索达尔这些核心人员以前都玩过这一套,而且他们的前任雇主正是最会玩的那些公司。威廉姆斯坦言,搞这种极端工程很有快感:
如果你曾经在 Facebook 或者 Google 这类公司待过,你会为高速成长而“嗨”。当你感觉不到“增长嗨”时,你会想它。
这不是夸夸其谈。他说的是能为公司省下几百万美元的快感,但正如其他上瘾症一样,这种“嗨”也有它的副作用。硅谷把这种副作用称作“非我发明综合症”,指的是公司仅仅为了造新东西而造新东西。
无论这次壮举是完成了 Dropbox 的一个商业理想,还是最终沦为巨大的“工程嗨”,这家公司总算有了自己的数据中心。Dropbox 做出了自己的 box。这意味着 Google 带来的风气慢慢地在硅谷里散播开了。Google 如此成功不仅因为它搞了个不错的搜索引擎,还因为它建造了搜索引擎及其背后所有的科技支柱。挖来无数 Google 员工的 Facebook 也是这么干的。Twitter 和它挖来的 Google 员工也是这么干的。现在,Dropbox 也来了。
要成为巨人,你或许要站在其他人的肩膀上。但当你自己成为巨人时,你会开始觉得需要给自己建个合适的住处了。
本文翻译自连线文章《The Epic Story of Dropbox’s Exodus From the Amazon Cloud Empire》,为便于阅读理解有多处删节、改动。
题图:berkslifestyle 插图:连线