拯救者 Linux:我是如何給我的團隊引入 Linux 的
在專案早期就遇到公開的失敗後,一個著名大學的 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 上不用做過多的修改適配。兩者比起來只有硬體和作業系統改變了,其他系統相關的元件都保持了一致,這些都是保證平臺切換成功的基石。
3、 誠實對待風險和回報
我們的問題很明顯:web 註冊系統在前兩個迭代週期中都失敗了,而且很可能再次失敗。當我們將自己的想法(AIX 切換到 Linux)告訴出資方後,我們對其中的風險和回報是心知肚明的。如果我們什麼都不做,就只有失敗,如果我們嘗試切換到 Linux 平臺,我們可能會成功,而且從最初的測試結果分析,成功的機率是高於失敗的。
而且就算在 Linux 平臺下專案還是失敗了,我們也可以迅速地切換回 AIX 伺服器。有了這些細緻的分析和措施,終於使登記員能夠安心讓我們試試 Linux。
4、 言簡意賅地交流
在專案平臺切換的過程中,我們做了一個整體計劃。我們在一張白紙上明確地寫下了我們計劃做什麼,為什麼要這麼做。這種方式的成功關鍵就在於計劃的簡短性。領導們不喜歡像看小說一樣來看技術性的主意,他們不想糾纏在技術細節中。所以我們有意地在執行層面上進行計劃安排,在框架層面上進行描述。
當我們在進行平臺切換時,我們會定期的告訴出資人當前進展。當新系統成功完成後,我們每天都會提交更新,報告已經有多少學生成功透過此係統完成註冊和遇到的問題。
儘管這個專案已經過去了接近 20 年,但是其中的經驗教訓在今天仍然適用。儘管 Linux 在其中起了舉足輕重的作用,但是最重要的還是我們成功地將所有人的目標引導到解決共同的問題上。我認為這種經驗也可以運用到很多你所面對的事情當中。
作者簡介:
Jim Hall -我是 FreeDOS 專案的發起者和協調人,我也在 GNOME 理事會中擔任董事。工作上我是明尼蘇達州拉姆西縣的資訊長,空閒時間裡我為開源軟體的可用性做出相關的貢獻,並透過 Outreachy(為女性提供幫助的一項GNOME外展服務)來指導可用性測試。
via: https://opensource.com/article/17/7/how-introduced-organization-linux
作者:Jim Hall 譯者:吳霄/toyijiu 校對:wxy
相關文章
- 我們團隊是如何落地DDD的(1)
- 我是如何學習 Linux 的Linux
- [Flutter翻譯]我們如何建設我們的Flutter團隊Flutter
- 我是如何沉迷於linux系統的?Linux
- 說說我當初是如何學Linux的Linux
- Windows使用者:請給我個嘗試Linux的理由WindowsLinux
- 如何管理技術團隊?我的 6 個建議
- 專訪Supercell團隊:我們是如何將《荒野亂鬥》營銷出圈的?
- 智慧手機下,如何拯救你,我的孩子
- 我和敏捷團隊的五個約定敏捷
- 天下沒有人能夠挖走我的團隊
- 我是如何評估面試者的軟技能的?面試
- 我的linux桌面Linux
- 拯救不會函式的我!!函式
- 我是如何用2個Unix命令給SQL提速的SQL
- if 我是前端Leader,怎麼走出小微前端團隊的圍牆?前端
- 我們是如何使用 Electron 構建 Linux 桌面應用程式的Linux
- if 我是前端團隊 Leader,怎麼做好概要設計前端
- 談談我是怎麼學習linux的Linux
- 程式設計師的奮鬥史(六)——我們是需要團隊合作精神的程式設計師
- 我常用的Linux命令Linux
- 我的常用Linux命令Linux
- 我的Linux書架Linux
- 我的Linux 之路(轉)Linux
- Linux是啥?我們來聊聊?Linux
- 作為IT碼農,我是如何給小孩取名字的
- 資料團隊是如何演進的?
- 我是如何自學安卓的安卓
- 我是如何加入阿里的阿里
- 我,管理100多人技術團隊的二三事
- 學習 Linux 是我們的愛情語言Linux
- 我的Linux學習歷程:那些我看過的Linux書籍們Linux
- 我是一個請求,我是如何被髮送的?
- 我常用的那些linux命令Linux
- 我的 Linux 一萬小時Linux
- 我是如何實現限流的?
- 我是如何建立網站的網站
- 我是如何混進Google的Go