2012年5月6日 星期日

改變世界的免費雲端軟體:OpenStack幕後創造祕辛

http://wired.tw/2012/04/11/openstack-1/index.html
http://wired.tw/2012/04/12/openstack-2/index.html

彩虹館(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後,目前全世界已經有150間以上的公司宣布支持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的執行長,矽谷雲端運算小組(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的 執行長,主要業務則是提供OpenStack distro給傳統企業供應商。而Jesse Andrews跟幾個一起進行Nebula專案的NASA承包商,現在則在Rackspace就職,幫助這間公司打造公用雲端服務,同時也協助其他供應商 打造屬於自己的OpenStack雲端服務。
Josh McKenty表示, Nebula這個點子於2008年萌芽,並在彩虹館的團體環境下成長茁壯。因此彩虹館雖然只是OpenStack創立故事的一小部分,卻是很重要的一部份。

沒有留言: