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