拯救者Linux:我是如何給我的團(tuán)隊引入Linux的
在項目早期就遇到公開的失敗后,一個著名大學(xué)的 IT 團(tuán)隊決定將他們的 web 注冊系統(tǒng)部署到 Linux上,此舉幾乎將服務(wù)器的***用戶訪問量提高了 3 倍
1998年,我在明尼蘇達(dá)大學(xué)為一個新的 web 團(tuán)隊管理他們的服務(wù)器管理組。明尼蘇達(dá)大學(xué)是一個非常大的大學(xué),個個院校擁有接近 6000 名在校大學(xué)生。當(dāng)時學(xué)校是用一個上了年紀(jì)的大型機(jī)系統(tǒng)來做學(xué)生的檔案管理系統(tǒng),這種系統(tǒng)已經(jīng)過時了,所以需要做出改變。
這個系統(tǒng)不是 Y2K 類型的(LCTT 譯注:保存年份時只用兩位數(shù),導(dǎo)致記錄 2000 年時計算機(jī)會記錄為 1900 年,詳見 What Does Y2K Compliant Mean?),所以我們準(zhǔn)備建立一個由仁科軟件公司來交付的新的學(xué)生檔案管理系統(tǒng)。這個新系統(tǒng)對明尼蘇達(dá)大學(xué)來說有很多作用,不僅能夠管理學(xué)生的檔案,還能提供其他的一些功能。然而它卻缺少了一項關(guān)鍵特性:你不能在你的瀏覽器上通過 web 來給你的班級進(jìn)行注冊。
按照今天的標(biāo)準(zhǔn)來看,這是一個重大的疏忽,但是在上世紀(jì)九十年代,互聯(lián)網(wǎng)還是一個新生概念。亞馬遜才建立不久,ebay 剛創(chuàng)業(yè)一年,google 呱呱墜地,Wikipedia 還沒有影兒。所以 1998 年仁科公司沒有支持 web 在線注冊課程這個功能也就不足為奇了。但是明尼蘇達(dá)大學(xué)作為 Gopher 網(wǎng)絡(luò)的發(fā)源地,并且給之前的大型機(jī)系統(tǒng)開發(fā)了一套 web 功能接口,我們覺得 web 在線注冊功能對于這個新的學(xué)生檔案管理系統(tǒng)是至關(guān)重要的。
我們在這個 web 團(tuán)隊的任務(wù)就是去實現(xiàn)此管理系統(tǒng)的 web 在線注冊功能。
幸運(yùn)的是,我們并不是孤軍奮戰(zhàn)。我們聯(lián)系了 IBM ,在第二年一起開始來搭建這個新的 web 在線注冊系統(tǒng)。IBM 負(fù)責(zé)提供硬件和軟件環(huán)境來運(yùn)行這個 web 系統(tǒng):3 個運(yùn)行***的 AIX 系統(tǒng)(類 UNIX 操作系統(tǒng))、IBM Java 和 IBM WebSphere 平臺的 SP 電腦節(jié)點(diǎn),并用一個 IBM 的負(fù)載均衡器來實現(xiàn) 3 個節(jié)點(diǎn)的負(fù)載分流。
AIX network diagram
在經(jīng)過一年多的開發(fā)和測試后,我們的系統(tǒng)終于上線了!但不幸的是失敗卻接踵而至。
負(fù)載過大
在開發(fā)過程中,我們無法準(zhǔn)確地模擬測試真實場景下許多學(xué)生同時登錄的場景。原因不是沒有測試環(huán)境,明尼蘇達(dá)大學(xué)有定制的 web 負(fù)載測試軟件包,而且 IBM 有自己的工具做補(bǔ)充,但是這個 web 系統(tǒng)在當(dāng)時對我們來說實在是太陌生了,我們沒有意識到這些測試工具是不能滿足要求的。
通過數(shù)月的測試,我們將此 web 系統(tǒng)的預(yù)期負(fù)載量調(diào)整到 240 個并發(fā)用戶。但不幸的是,我們實際的使用量卻是預(yù)期的兩倍左右,在***天系統(tǒng)上線時,超過 400 名學(xué)生馬上同時登錄進(jìn)系統(tǒng),由于負(fù)載遠(yuǎn)遠(yuǎn)超出預(yù)期值,3 臺 web 服務(wù)器直接宕機(jī)了。由于持續(xù)的高負(fù)載,服務(wù)器一直崩潰,只能不斷地重啟。一臺剛重啟完,另一臺又宕機(jī)重啟了,這種場景居然持續(xù)了一個月。
由于不能有效地通過 web 注冊,學(xué)生只能通過原來的方法來注冊:來到登記員的辦公室,拿著筆注冊,然后再出門。當(dāng)?shù)貓蠹堃残覟?zāi)樂禍地嘲諷道:"電腦軟件的失敗強(qiáng)迫學(xué)生只能面對面地注冊!"
Negative headlines about web registration crashes
面對失敗這個事實,我們盡自己全力在下一個開發(fā)周期中來提高軟件性能,在之后 6 個月的時間里,我們瘋狂地想去增強(qiáng)這套系統(tǒng)的負(fù)載能力。盡管增加了更多的代碼,調(diào)整了多次配置,還是不能支持更多的用戶。盡力了,然而面對的還是失敗。
就如所料的,在下一個迭代周期后,迎接我們的還是失敗。服務(wù)器由于負(fù)載問題一次又一次地宕機(jī)。這一次新聞標(biāo)題已經(jīng)變成了:“web 注冊系統(tǒng)就是垃圾”。
在開始下一個為期 6 個月的迭代前,我們已經(jīng)絕望了。沒有人知道服務(wù)器不停宕機(jī)的原因,我們已經(jīng)預(yù)期這個問題現(xiàn)在是無解的。我們是要采取一些措施來搞定這個問題,但是怎么做呢?以下是我們討論得出的方法:
是否需要切換新的平臺?
IBM 當(dāng)時引入了 Linux,給它的 Java 和 WebSphere 平臺做了二次開發(fā)。所有產(chǎn)品都獲得了紅帽公司的 RHEL 認(rèn)證,并且有幾個產(chǎn)品已經(jīng)在我們的桌面系統(tǒng)上運(yùn)行了。我們意識到了現(xiàn)在在 Linux 上已經(jīng)有了完整的生態(tài)系統(tǒng)來運(yùn)行我們的 web 管理系統(tǒng),但是它能表現(xiàn)的比 AIX 更好嗎?
在搭建好一個測試服務(wù)器并進(jìn)行基本的負(fù)載測試后,我們驚奇的發(fā)現(xiàn)一臺 Linux 服務(wù)器能夠輕松地支持之前 3 臺 AIX 服務(wù)器所不能支持的負(fù)載量,在相同的 web 代碼、IBM Java 和 WebSphere 平臺下,單臺 Linux 服務(wù)器能夠支持超過 200 個用戶。
我們將這個消息告訴了登記員和 CIO,他們同意將 web 注冊系統(tǒng)切換到 Linux 平臺上。雖然這是我們***次在明尼蘇達(dá)大學(xué)跑 Linux,但是失敗已成習(xí)慣,反而無所畏懼了。AIX 只會失敗,Linux 卻是我們唯一的希望。
我們馬上基于 Linux 來進(jìn)行開發(fā)。另一個組的同事也提供了幾臺 Intel 服務(wù)器來給我們使用,我們給服務(wù)器裝上紅帽系統(tǒng)和相關(guān)的 IBM 組件,然后在新系統(tǒng)上進(jìn)行了持續(xù)性的負(fù)載測試,令人欣喜的是,Linux 服務(wù)器沒有出現(xiàn)任何問題。
經(jīng)過兩個月高強(qiáng)度的開發(fā)測試,我們的新系統(tǒng)終于上線了,而且是巨大的成功!在巨大的負(fù)載下,web 注冊系統(tǒng)在 Linux 的表現(xiàn)都堪稱***。同時在線峰值甚至超過了 600 名用戶。Linux 拯救了明尼蘇達(dá)大學(xué)的 web 注冊系統(tǒng)~
成功的經(jīng)驗
當(dāng)我回首這個項目時,我發(fā)現(xiàn)你可以用以下幾個點(diǎn)來向你的團(tuán)隊介紹 Linux:
1、 解決問題, 不要自欺欺人
當(dāng)我們提議在企業(yè)中使用 Linux 時,并不是因為我們認(rèn)為 Linux 很酷才使用它。當(dāng)然,我們是 Linux 的愛好者并且已經(jīng)在自己的環(huán)境中運(yùn)行過它,但是我們在公司是為了解決問題的。能用 Linux 是因為我們的登記員和出資人同意 Linux 是解決問題的一個方法,而不僅僅是因為 Linux很酷我們想用它。
2、 盡可能小的去做改變
我們的成功是建立在 IBM 已經(jīng)基于 Linux 做出了它的 Java 和 WebSphere 產(chǎn)品的基礎(chǔ)上的。這能讓我們在將 web 系統(tǒng)從 AIX 切換到 Linux 上不用做過多的修改適配。兩者比起來只有硬件和操作系統(tǒng)改變了,其他系統(tǒng)相關(guān)的組件都保持了一致,這些都是保證平臺切換成功的基石。
AIX cost diagram
Linux cost diagram
3、 誠實對待風(fēng)險和回報
我們的問題很明顯:web 注冊系統(tǒng)在前兩個迭代周期中都失敗了,而且很可能再次失敗。當(dāng)我們將自己的想法(AIX 切換到 Linux)告訴出資方后,我們對其中的風(fēng)險和回報是心知肚明的。如果我們什么都不做,就只有失敗,如果我們嘗試切換到 Linux 平臺,我們可能會成功,而且從最初的測試結(jié)果分析,成功的概率是高于失敗的。
而且就算在 Linux 平臺下項目還是失敗了,我們也可以迅速地切換回 AIX 服務(wù)器。有了這些細(xì)致的分析和措施,終于使登記員能夠安心讓我們試試 Linux。
4、 言簡意賅地交流
在項目平臺切換的過程中,我們做了一個整體計劃。我們在一張白紙上明確地寫下了我們計劃做什么,為什么要這么做。這種方式的成功關(guān)鍵就在于計劃的簡短性。領(lǐng)導(dǎo)們不喜歡像看小說一樣來看技術(shù)性的主意,他們不想糾纏在技術(shù)細(xì)節(jié)中。所以我們有意地在執(zhí)行層面上進(jìn)行計劃安排,在框架層面上進(jìn)行描述。
當(dāng)我們在進(jìn)行平臺切換時,我們會定期的告訴出資人當(dāng)前進(jìn)展。當(dāng)新系統(tǒng)成功完成后,我們每天都會提交更新,報告已經(jīng)有多少學(xué)生成功通過此系統(tǒng)完成注冊和遇到的問題。
盡管這個項目已經(jīng)過去了接近 20 年,但是其中的經(jīng)驗教訓(xùn)在今天仍然適用。盡管 Linux 在其中起了舉足輕重的作用,但是最重要的還是我們成功地將所有人的目標(biāo)引導(dǎo)到解決共同的問題上。我認(rèn)為這種經(jīng)驗也可以運(yùn)用到很多你所面對的事情當(dāng)中。






























