Daniels Cai's Blog

proficient in Linux, proficient in Thinking.

OpenStack身世揭秘

| Comments

彩虹馆(Rainbow Mansion)是栋位于美国西岸的迷你皇宫,座落在一个可以俯瞰矽谷的山丘上,并且有着西班牙式的屋瓦与门厅的豪华吊灯。这座占地超过140坪豪宅的前任主人,曾靠着销售电脑显示卡晶片和光碟机晶片赚进大把钞票。不过事到如今,这里只是一个矽谷式公社,一个科技界的年轻激进份子生活并分享工作的场所。

这里的房客有Google员工、NASA工程师、在Tesla打造电动车的员工,也有苹果的工程师。不过这些人选择彩虹馆作为栖身之所,并不只是为了应付工作上的需要而已。门厅之后的公共图书馆,正是平常举行沙龙(一种不拘形式的讨论)的地点。平常房客们讨论的题目无所不包:从国家主义的凋亡,到网路自由是否比个人隐私还要重要,都曾是题目之一。而车库里面有着凑合着用的硬体实验室,房客们于此打造模型潜水艇、卫星以及可以使用Android手机操作的无人飞行载具。在过去这几年来,不只一间新创公司从这些房间里面诞生。

根据一名前房客所言,想要住在彩虹馆的先决条件是:你想要改变这个世界!改变世界似乎是件说比做更简单的事,不过彩虹馆的房客已经做到了。他们把集体社会性格(communal ethos)灌注到近十年来最重要的开放软件专案中:OpenStack,一个在Linux环境底下运作的云端运算程式。

利用OpenStack这个程序,任何人都能打造属于自己的亚马逊弹性云端运算(Amazon’s Elastic Compute Cloud)。亚马逊弹性云端运算是目前极受欢迎的网路服务,该服务可以让研发人员和企业即时存取虚拟伺服器。大约四年前,OpenStack的前身还只是一个在NASA内部没人看好的专案,不过目前OpenStack已经大大颠覆整个私人与公用领域的现况。

自从获得Vivek Kundra(美国第一个资讯长)的关注之后,除了NASA以外,其他的美国联邦政府业务部门也加入使用OpenStack的行列。而在NASA跟云端运算市场第二大品牌Rackspace结盟、合力推出OpenStack后,目前全世界已经有183家以上的公司宣布支持OpenStack。OpenStack正改变着HP、Cisco、Dell等科技龙头的未来,另外,如果流言属实的话,IBM也是其中加入改变的一员。

“业界有很多人正严肃地看待这件事”,Zorawar “Biri” Singh表示。Zorawar “Biri” Singh是监督HP利用OpenStack打造云端服务的负责人。“除了已经宣布支持OpenStack的成员之外,我们还跟其他人讨论过这件事,像是一些对OpenStack有浓厚兴趣的一流网路架构师。虽然还有很多工作要做,不过一切都在我们的掌握之中”。

OpenStack的创办人遍布在NASA、Rackspace和其他地方。不过其中最重要的几个创办人,曾是彩虹馆内的科技公社的活跃份子,例如现年34岁的Chris C. Kemp,就是在2006年加入NASA的艾姆斯研究中心(Ames Research Center)并创办公社的自由思想家之一。”我们当时只是想找个地方住”,Kemp表示,“不过这个地方后来变成一个招揽有趣?人士地方,这是一个让有趣的人一起吃饭、碰面与生活的地方,这些有趣的人具备扩大我们对这个世界认识的能力。”

Kemp后来担任艾姆斯研究中心的资讯长,接着则是担任整个NASA的技术长。就是在NASA与其他彩虹馆相关人士共事的时候,Kemp开启了NASA Nebula专案,这项专案后来让Google的网路杰作能够散布到全世界。在经过两年的奋斗之后,专案的主要开放式平台Nova跟Rackspace的相容平台合并,造就了OpenStack的诞生。

就像Linux一样,OpenStack的诞生可说是奇迹。在当时,命运女神并不是站在Kemp的这一边,即使想在NASA内部进行Nebula这个专案都不是件容易的事。除了因为Nebula专案跟NASA的使命不怎么相关之外,NASA内部的官僚系统,也不适合这种能够跟全世界开放共享的创作,这个专案能够这么快速地在列强环伺的科技世界中找到容身之处,的确是件困难的事。

“这项专案打从一开始就遭遇了种种困难。事实上,从头到尾就是个不可能的任务”,Rick Clark表示。Rick Clark在OpenStack专案进行的初期任职于Rackspace,现在则在Cisco协助推动相关专案。“你必须同时讨好NASA、NASA法务团队、Rackspace法务团队、Rackspace董事会,以及其他研发人员。这个专案的诞生只能说是老天保佑!”

NASA 找到失散多年的双胞胎兄弟

NASA跟Rackspace的联手,始于某篇部落格的文章。这篇文章大约在2010年初夏时出现在网路上,当时几乎没有人注意到。Joshua McKenty在这篇部落格文中写着:“启动Nova”。Joshua McKenty不但是NASA的承包商,也是彩虹馆的常客之一,他在文章中提到:“这是个用Python程式语言写成云端运算软体,使用Apache许可证方式授权。这东西可以用、很多缺陷、是个试用版,赶快来试试看吧。”

使用Python程式语言写就的Nova,基本上是亚马逊弹性云端运算的仿制品。亚马逊弹性云端运算能让使用者在不需设定个人实体机器的情况下,操作软体应用程式,只要使用者有需求,就可以获得更多的虚拟伺服器。它跟亚马逊弹性云端运算最大的不同点,在于Nova是开放式软体,由于Apache许可证的关系,所以想要使用Nova架构弹性云端运算的人,都可以任意使用这个平台。

在Nova上线一个星期后,有人告诉Rick Clark这个消息。前一年九月,Clark从Canonical(Ubuntu Linux distro的供应商)跳槽到Rackspace,并接下建立一个能够打造基础设施云端(infrastructure clouds)开放式平台的任务。当时几个Rackspace的高阶主管正在推动同样的专案,其中包括企业发展部门的副总Jim Curry与策略长Lew Moorman。

在Clark看过NASA的Nova程式码之后,对于Nova跟Rackspace本身正在进行的开放式平台间的高相似度感到相当震惊,久久无法自己。所以他很快地发送了一封电子邮件给Rackspace的巨头们,“NASA,差不多领先我们三个月的进度”,他在信中写着,“我们需要跟他们谈谈,看看有没有什么合作的方法,好让我们使用他们的程式来进行进一步的修改。”

Clark从来没有想过NASA会真的跟Rackspace合作,不过显然这间公司跟NASA之间很有缘份。Clark的老板(企业发展部门副总Jim Curry)的老爸是一名在NASA服务四十年的工程师,他的工作主要是研发供给太空梭与太空船使用的隔热系统,因此Curry从小就在德州休士顿的NASA太空中心底下长大。Curry在NASA跟Kemp搭上线的一个星期后,几个Rackspace的员工就飞到矽谷跟NASA的团队开会。他们跟NASA的团队先是在艾姆斯研究中心碰头,然后一起在附近的泰国餐厅吃饭。此时Rackspace跟NASA之间的缘分又加深了一层。

“这好像找到失散已久的双胞兄弟”,McKenty表示,“这真是我这辈子最诡异的一个经验。我们使用同样的工具,选择同样的语言程式。我们这两个研发团队里面没有一个人曾经见过对方,而且我们两边都说:哇!你们刚写的程式码正是我们正打算要写的。”

更巧的是,两边的程式码基底(code base)是相容的。当NASA在打造Nova的时候,Rackspace已经完成一个叫做Swift的平台;Nova提供虚拟伺服器,也就是运算处理能力,而Swift提供资料储存功能;Nova是仿造亚马逊弹性云端运算的功能,而Swift则是仿造亚马逊简易储存服务(Amazon’s Simple Storage Service,S3)的功能。在晚餐席间,两个团队决定将这两个专案结合在一起,并且开放程式原始码,同时决定使用“OpenStack”这个名称作为新专案名称。

不过离这样的目标还有很长的一段路要走。当餐后要付帐的时候,这群工程师意识到没有一个简单付帐的办法,在NASA,公务员与承包商必须付自己的餐点费。“去吃饭的人大概有20个人吧,而且我们是共享所有的泰式餐点,所以我们得试着按照人头来分配费用”,任职于Rackspace的Jonathan Bryce表示,“当时我想,如果这就是跟政府一起工作的缩影,这专案永远不会成功吧”。

这的确是跟政府合作的缩影,这也难怪Nova面世是多么令人跌破眼镜的一件事。

Google 跟用不完的基础设施

2006年,艾姆斯研究中心为了将这个NASA的矽谷前哨站带入网路新纪元,所以换了个新的主任。新主任上任后,马上招揽新血,其中就包括Chris Kemp与其他四个后来搬进彩虹馆的员工。彩虹馆距离艾姆斯研究中心大约只有15分钟的车程,而Kemp的新工作就是改变NASA。

Kemp原本是Silicon Graphics驻阿拉巴马州亨茨维尔(Huntsville, Alabama)办事处的系统工程师;这个办事处的任务,主要在于支援NASA马歇尔太空飞行中心(Marshall Space Flight Center)的火箭科学家。后来,他成为Classmates.com的首席网路架构师,这间公司正是90年代网路泡沫热潮中的佼佼者之一。

在NASA艾姆斯研究中心编号200号的建筑地下室安顿好之后的七个月内,Kemp马不停蹄地到处奔走。他敲定Google与NASA间的合作案,让网路巨人Google 能够协助NASA在公共网路上传送月球与火星影像。然后,作为Kemp的第二个功绩,他让Google的高阶主管把他们的私人喷射机停在艾姆斯研究中心的飞机场上。

这笔开放飞机场给Google使用的生意,每年为NASA带来一、两百万美金以上的额外收入。不过相较于机场交易,Google Moon与Google Mars给NASA带来的影响更为重大。在此之前,Kemp曾经在微软进行类似的网路服务,所以对于Google和微软之间处理通讯基础设施(backend infrastructure)的手法不同,深感冲击。

“在Google,基础设施像是不用钱的一样”,Kemp 表示,“Google那种自由放任(laissez-faire)态度就像是在说:‘没问题,我们随时都有几千个TB的空间可以用。’微软的态度跟Google则是完全相反。在微软,资料储存空间是被某些特定单位所把持,所以你必须跪下来求他们,想尽办法去借或是去偷一些运算资源来用。在NASA的情况就更艰难了,因为NASA完全没有任何基础设施来容纳这些东西。”

过去这几年来,Google建造了无以伦比的基础设施:一个横跨众多服务器的软体平台,让Google的研发人员可以任意扩增或缩减他们的应用程序。而这个基础设施仅供Google本身使用,并不需要像亚马逊弹性云端运算一样跟整个世界共用。同时,亚马逊弹性云端运算跟Google基础设施的技术概念其实是类似的。

因此,Kemp认为类似亚马逊弹性云端运算与Google的基础设施,正是NASA所需要的。他希望NASA毋须藉由Google、微软或亚马逊的协助,就可以自己传递自家的高解析度影像。

“我认为NASA应该要能够传递这份宝贵资料,好让类似Google Earth和微软的太空望远镜(WorldWide Telescope) 的平台能够使用这份珍贵的资料”,Kemp 表示,“我们不能总是说这是Google或微软要解决的问题。而当时现实的情况是我们还没有自己的基础设施。这就是为什么我们会想要发起这个专案原因。”他帮这个专案取名为“NASA, Nebula”,而这个专案最终导致了Nova的诞生。Joshua McKenty表示,在接下来的那几年里,大部分的策略会议以及一大堆的加班写程式,都是在彩虹馆的餐桌上完成的。

白宫拯救Nebula 免于被摧毁的危机

NASA Nebula本来仅是亚马逊公有云的仿制品,或是另外一个失败的政府专案。不过在2009年的时候,事情有了转机,这个专案获得美国第一位联邦资讯长Vivek Kundra的青睐。当奥巴马在2009年就职美国总统的时候,他创造了资讯长这个职位,希望能够借此大幅改善政府科技基础设施的体质,而NASA Nebula刚好提供了这个机会。Kundra把Nebula视为一个平台,可以让包括NASA在内的的联邦政府部门,都在上面使用应用程式。

“在那个时候,技术的部分还很青涩”,Kundra表示,“不过当时我可以预见,采用这个技术之后,很可能会打破我们过去使用科技的模式,这也就是我们所说的数位油田( digital oil)。旧模式非常不经济,会消耗很多资源,每个政府单位都必须准备足够的空间,好应付尖峰使用时段,不过除了尖峰时刻之外,大部分的空间都不会用到。”Kundra表示,政府的资料中心只会用到所有资料储存空间的40%左右,以及大约27%的运算处理能力。而Nebula的降临,将改变这一切。Nebula不但具备运算处理能力,也有资料储存空间功能,让每个单位要用到的时候就可以拿去用。

所以Kundra把Chris Kemp转调到白宫,并利用NASA Nebula,打造了网站“USAspending.gov”,用来将政府花费的相关资料公布给大众。同时Kundra也拟订了相关专案,希望能够推广这个平台到其他政府单位。

这时候遇到的问题是,某些美国立法者和NASA官僚打算要中止这个专案。Kemp表示,反对者中的领导者是参议员Richard Shelby,他是参议院拨款委员会(Senate Appropriations Committee)的主席。Shelby的办公室并没有针对这件事给《Wired》回覆,不过Kemp表示,参议员认为Nebula会让很多人失业。“每次我在华盛顿提到云端技术可以让资料中心在无人状态下运作时,我的话就会被解读为工作机会将因此消失”,Kemp表示,“这个专案面对了很艰辛的政治挑战,之前掌管整个NASA的长官,甚至打电话要求我解释这件事。”

Kundra谈到这件事的态度比较委婉。他表示,这不过是在推行新观念时面临了一些阻力。而现任NASA艾姆斯研究中心IT技术长的Ray O’Brien,说法和Kundra也很类似。不过据Kemp所言,当时这个专案很可能拿不到任何资金,甚至因而无法继续下去。

华盛顿方面施加的压力,差不多在2009年秋天时到了临界点。那年秋天,Kundra飞到矽谷艾姆斯研究中心,亲自主持联邦政府云端策略(cloud computing strategy)的正式运作,以表示他个人于公于私都支持Nebula专案。“没有Vivek在白宫为我们奔走,我们没办法完成这个专案」,Kemp说,「当时我的团队正在全力制作可能会在国会调查用到的文件。不过Vivek才是那个真正出力阻止他们的人。”在这种状况下,NASA Nebula运作的状况不如预期,则是另一个令人头疼的问题。

开源的难题

Nebula的第一版是建构在已发布的开源Eucalyptus之上,这个平台主要由加州大学圣塔芭芭拉分校的团队所打造;不过Chris Kemp和Joshua McKenty都认为,Eucalyptus并不具备所有他们团队想要的功能,“基本上,Eucalyptus的架构不能满足我们的需求”,McKenty表示,“代码的品质则是另外一个问题。他们的代码里面有些很严重的漏洞。”

雪上加霜的是,Eucalyptus的创办人刚为了Eucalyptus设立一间公司,显然他们不会愿意把某些代码放在开源平台上,因为他们想要保留那部分,好作为将来的卖点。这个开放核心协议的运作模式(open-core,开放项目本身的核心,但是不开放其他的相关代码),并没有打消Kemp、McKenty与整个NASA团队,希望打造一个每个人都可以使用并修改的开放式平台的念头。

Kemp、McKenty和常常在周末拜访彩虹馆的Nebula软件工程总监Jesse Andrews,花了很长的时间讨论NASA是不是有可能从零开始,打造一个新的开放软件专案,不过他们心知肚明这是件困难的事。NASA官僚系统运作的方式,倾向于使用现存开放式软体专案的程式码,而通常在经过一些法律行动之后,最后的结果就会变成NASA拿自己写好的部分来协助其他的专案。NASA实在是没有自己从零开始进行一个专案的经验,尤其这个专案将会让NASA跟外面的世界紧密合作。

“NASA​开发的往往是价值数十亿元的系统,这些系统的软体通常是长时间投资的成果,所以软体里面会包含许多智慧财产和敏感国家安全资讯,也不是件令人意外的事”, Kemp表示,“而我们就是在这种环境下,试着开放我们的程式码,打算让Nebula采取合作的模式;但是NASA并不是一个对这种模式友善的环境,我们必须另辟蹊径,重新创造一个软体发行以及开放程式码的方法。”

McKenty和Andrews最终找到了漏洞可钻:让整个团队牺牲自己周末的时间,打造属于自己的Eucalyptus,这样一来,这个作品就不属于NASA的专案了;然后他们在正常上班时间时,又以NASA承包商的身份,协助改进这个专案。Mckenty表示,这样一来,NASA就不用面对开放程式码的难题,因为从技术层面上看来,NASA只是在“协助”一个非NASA的专案。

Kemp等人就真的这样做了。他们利用私人时间在HouseKu加班赶工,这里是另一个NASA承包商Andy Smith在旧金山的住处,也是个类似彩虹馆的地方。最后,他们花了两周完成新专案的原型,也就是Nova。

震惊全世界的云软件

在NASA与Rackspace团队于艾姆斯研究中心附近的泰式餐厅,筹画OpenStack相关细节的五周后,他们已经准备好要在美国奥勒冈州波特兰OSCON开放软体展(O’Reilly Media’s Open Source Developers Conference)上发表他们的心血结晶。开源软件展的前几天,两个供应商跟几间德州的公司碰面,其中某些公司已同意加入这个项目。虽然如此,直到预定发表日的前一天晚上,Kemp还没有拿到NASA的许可,好确保能够他们能够在Apache许可证的前提下开放Nova的程式码。

没错,从Andrews和McKenty的立场来看,他们已经开放了Nova的代码。但是他们顶着NASA承包商的名义所做的工作,却还不能公开,这个项目还是需要NASA的默许。

如果是在NASA自家许可证的前提下开放Nova代码,整件事就会简单许多。NASA在几年前就为了开源软体,而开发了相关的许可证。但是Kemp与Rackspace的Jim Curry都认为,如果OpenStack不能在Apache许可证的前提下开放,以及取得两边的供应商支持,那么OpenStack的接受度就不可能会高。HP的Zorawar Singh现在回顾当初Kemp跟Curry的这个决定,他认为他们所做的决定是正确的。Singh表示,这个平台能够在许多不同的情况派上用场,就是因为Apache许可证的存在,即便使用者无法对原本的开放式软体专案有所贡献,也可以使用它。

但是NASA的官僚系统还没有准备好以这样的方式去开放代码。“让NASA在Apache许可证的前提下开放代码,是一件几乎不可能的事”,Kemp表示,“我的组员里面有些人是从法律系毕业的,虽然他们不是NASA的律师,但是他们协助我跟NASA的律师合作,好让开放程式码成真。”最后,Kemp还是胜利了。Kemp在7月19日一大早拿到NASA的最终许可,离OpenStack的正式问世只差几个小时而已。

发表OpenStack简直是Kemp与Rackspace团队梦寐以求的事。“发表的时候轰动了全场”,McKenty说,“轰动的程度远远超过我们的预期。”NTT Data马上宣布跟进采用OpenStack,NTT Data是日本通讯龙头、日本电信电话株式会社(NTT)的咨询子公司。在OpenStack问世之后的四个月,这个专案得到微软的支持。要知道,微软对开放式软体的支持可是一件很罕见的事。隔年,Dell、HP和Cisco也相继加入这个专案。

当Rick Clark还在Canonical工作的时候,Canonical使用Ubuntu Linux distro重新包装Eucalyptus,期望能让整个世界都可以使用开放式云端。OpenStack问世后不到一年之后,Canonical在2011年5月把Ubuntu的重心从Eucalyptus 转向OpenStack。就如同Kemp、McKenty、Andrews和其他NASA的研发人员所盼望的,Canonical希望打造一个任何人都可以使用的开放式平台,可以同时让任何人去编辑它,因为这是唯一一个能够跟亚马逊互别苗头的方法。

亚马逊 VS. 全世界

“亚马逊正在跟所有的IT系统供应商竞争”,Sebastian Stadil说。Sebastian Stadil是开放式云端管理供应商Scalr的CEO,矽谷云端运算小组(Silicon Valley Cloud Computing group)的创办人,也是彩虹馆的前房客。“老实说,我认为OpenStack能够在这种前途未卜的情况之下,能获得众多助力的其中一个原因就是,它是业界其他公司能够生存下去的唯一希望。”

很难估计到底有多少人使用亚马逊的服务。光去年,亚马逊网路服务系统(Amazon Web Services)的生意就成长了70%,年运转收入(annual run rate)逼近10亿美元之谱。如果你使用亚马逊弹性云端运算,你就不可能向HP或Dell之类的公司购买伺服器,也不会购买可能用来管理这些服务器的众多软体。一旦你使用亚马逊基于弹性云端运算与简易储存所提供的其他服务,像是资料库跟其他的工具,你会购买的产品就真的是屈指可数了。

OpenStack提供了一个打造足以和亚马逊匹敌的公有云的可能性,它同时也是这类公用云服务的替代品。透过OpenStack,一般的企业也可以设置私有云服务,以满足公司内部的特定业务需求。许多公司犹豫着要不要把企业资料放到其他人的服务器上,如果他们在自家的资料中心使用OpenStack,他们就可以在不把资料交给亚马逊的前提之下,享受亚马逊弹性云端运算带来的好处。

Amazon颠覆了IT世界的现状。而现在,OpenStack打算扳倒Amazon,不过这需要大家一起努力,才有办法做到。要打乱目前的市场现状,不能只靠一间公司,需要很多间公司一起参与。Chris Kemp现在主持一间叫做Nebula Inc.的公司,并按照当初他在NASA进行的专案所命名,公司的业务是销售OpenStack相关的云端运算系统软硬体。Joshua McKenty现在是Piston Cloud Computing的CEO,主要业务则是提供OpenStack distro给传统企业供应商。而Jesse Andrews跟几个一起进行Nebula专案的NASA承包商,现在则在Rackspace就职,帮助这间公司打造公用云端服务,同时也协助其他供应商打造属于自己的OpenStack云端服务。

Josh McKenty表示, Nebula这个点子于2008年萌芽,并在彩虹馆的团体环境下成长茁壮。因此彩虹馆虽然只是OpenStack创立故事的一小部分,却是很重要的一部份。

(本文转载自:CSDN) (本文转载自:杨炳富新浪微博)

原文链接:The Secret History of OpenStack, the Free Cloud Software That’s Changing Everything

Comments