版本的故事(一)爲何要寫版本的故事

隨着組織的發展,開發人員愈來愈多,不少公司開始創建專門的技術部門開發共用組件。能不能作出好用的共用組件,技術能力固然是必不可少的。可是經歷了不少項目的生生死死,愈來愈以爲版本管理也是一個十分重要的因素。不少基礎組件作的時候紅紅火火,作了兩年就恍恍惚惚了。有不少老的版本漂流在外,新的項目和老的項目開始出現依賴衝突,現場部署不下去了。詢問組件的開發者哪一個版本能用,也給不出一個確切的答覆,只好「所有升級最新版本」。共用組件生存在調用鏈的最低層,所有升級涉及多少產品,開發工做量運維工做量多麼的巨大。運維

因而一些團隊不得已把這些共用組件源碼拿過來,搞個目錄本身管了,今後分道揚鑣,再不用標準版了。兩年過去,新人成爲老人,鐵打的公司流水的團隊人員來了又走,只留下一堆代碼倉庫和外面好多不知道來歷的二進制包。哪一個項目組要是使用了這些祖傳組件,開發的人都頭疼。明明是一件好事,卻作成了這個樣子。測試

可是共用需求畢竟存在,每隔兩年又會有一批新人雄心勃勃的開始下一個新的共用組件。因而一代代循環下去,每一代人都作不長、作不大。咱們一次一次的搭建二層小樓,卻建不起來高樓大廈。設計

這就是我爲何要寫版本的故事。開發大型軟件必定要解決跨時空、跨團隊的信息溝通問題。「版本」是一個很是重要的信息,它標誌了軟件產品的型號。若是研發團隊沒有把版本管好,極可能致使多年以後、另外一個工序產生麻煩,產生諸如:「某個二進制包找不到代碼基線,因此沒法修復這個缺陷」、「某個產品版本搞不清依賴關係,很差升級部署」,此類問題。這件事情是爲將來打算、爲他人打算,因此常常得不到重視。開發

技術當然重要,沒有技術,產品作不出來,作出來跑的不快。可是版本管的很差麻煩也很大。就比如一家工廠,設計人員和技術工人確定是很是重要的,可是若是不在設計圖紙和零部件包裝盒貼上型號標籤(這個型號標籤就等同於軟件的版本號),以致於設計師常常找不到某個型號的圖紙在哪裏,生產線上出了缺陷也沒法判斷影響哪些批次的零件,生產過程就容易出現返工和浪費,也很難生產出複雜的產品。部署

版本管理對技術發展也有很大的促進做用。跟蹤和記錄組件版本能夠幫助咱們理清產品的依賴關係,好比「某個組件在哪些產品中使用,若是咱們再也不維護這個組件的 1.x 版本會影響哪些產品」、「某個產品從什麼版本開始引入了某項技術,在哪些環境中部署過」。這些信息對技術演進有很是重要的做用。若是沒有這些數據,咱們就沒法判斷技術升級的影響範圍。一處更改會形成大範圍的錯誤,因而只能放棄升級,產品被鎖死在陳舊的技術上。行業在變,產品年年不變,限制企業的技術競爭力。源碼

這是一個系列的寫做,我會結合代碼管理、構建管理、集成測試、產品發佈、部署這些過程,詳細說明版本管理過程。一個組件、一個產品應該怎樣編制版本號,把這個版本號烙印在二進制包裏,在開發、測試、發佈的過程當中管理某個版本的狀態。最後部署這個軟件的時候,怎樣分析依賴關係,找到合適的版本。六個月以後,當產品經理要求在某個老版本上更新一個功能的時候,應該怎樣作。產品

相關文章
相關標籤/搜索