位於加州山景城的Google總部辦公室,遍佈著Windows、Chromebook、Mac等設備。但除依靠Linux服務器之外,這傢科技巨頭其實還擁有自己的Linux桌面發行版。盡管外界知之甚少,但Google一直在積極醞釀。而首個版本,就是基於Ubuntu改造出來的Goobuntu。
(來自:Google Cloud Blog)
2018 年,Google 又將其內部 Linux 桌面,從 Goobuntu 遷移到基於 Debian 的 gLinux 發行版。
該公司解釋稱:
Ubuntu LTS 的兩年期限,意味著我們必須在操作系統支持周期結束前,對超過 10 萬+的設備進行升級。
而 Goobuntu 艦隊的完整升級工作,需要耗費一年中的大部分時間,意味著窗口期隻剩下一年。
再加上對工程 PC 的完全定制所需的耗時,這麼做實在過於昂貴和痛苦。更難受的是,在下一個 LTS 輪回中,Goobuntu 團隊還得重新再過一遍。
整個過程對我們來說是一個巨大的壓力因素,除要搞定成百上千的問題,還得努力幫助解決各種極端狀況。
在受夠這一切之後,我們也不難理解為何 Google 要從 Ubuntu 轉向 Debian Linux 。
需要指出的是,該公司打造一個特殊的 Debian 滾動發行版 —— 它就是 GLinux Rolling Debian Testing(Rodete)。
其設想是為用戶和開發者帶來最佳體驗,在創建並認為已準備好投入生產環境時盡快為他們提供最新的補丁和更新。
同屬此類的發行版,還包括 Arch Linux、Debian Testing 和 openSUSE Tumbleweed 。
不過對於 Google 來說,此時最迫切的目標是擺脫兩年的升級周期限制。
正如向持續集成 / 部署(CI / CD)轉變所表明的那樣,這些增量更改運行很是良好。即便遇到問題,也能夠更加輕松地控制和回滾。
為讓所有這些工作不耗費大量時間和精力,Google 甚至打造一套全新的 Sieve 工作流系統。
每當發現一個新版 Debian 軟件包時,它就會開始一個新的構建。此外考慮到通常單獨的包必須一起升級,這些包也被成組放置。
接下來便是使用完整的系統安裝、引導和本地測試套件,分別對每組包進行測試 —— 包構建可在幾分鐘內完成,但測試可能需耗費一小時。
完成後,所有新軟件包都將與最新的 gLinux 軟件包池合並。然後當 Google 決定將其發佈到生產環境時,團隊就會啟用該池的快照。
最後才是向整個艦隊推送新版本,但不僅僅是將其轉儲給用戶,而是基於站點可靠性工程(SRE)原則來逐步推進(比如 incremental Canarying 增量嘗鮮),以避免遭遇重大失誤。
多年來,Google 在這方面一直做得很好。且得益於 Sieve,今天整個 gLinux 開發團隊,都由一個在成員之間輪值的發佈工程師來擔當。
即使想要對所有機器進行升級,也無需使出多大的力氣去推動 —— 因為它砍去從 alpha、beta 到通用發佈(GA)的多個階段。
更棒的是,由於采用滾動發佈計劃,Google 可以快速修補整個艦隊的安全漏洞、而不至於影響整體的穩定性。
而在此之前,安全工程師們必須仔細檢查每個 Debian 安全公告(DSA),以確保所有修復都已囊括其中。
此外 Google 改進測試套件和運行關鍵開發人員系統的關鍵集成測試,合作夥伴團隊會評估其最新 Linux 內核 / 發行版所提供的穩定體驗。
我們對自動化管道中的一切強烈渴望,已經顯著減少團隊的工作量和壓力。
現在還可上報錯誤、以及與其它庫版本的不兼容性,同時確保 Google 工具在 Linux 生態系統中更好地工作。
展望未來,Google 團隊還將通過與上遊 Debian 展開更緊密的合作、貢獻更多的內部補丁,來幫助維護 Debian 軟件包的生態系統。
這一切聽起來都很棒,但 Computer World 還是有兩點要指出:
首先,對於某些組織來說,LTS 長期支持版本仍有其存在的意義。如果你所在的企業並不需要最新、最閃耀的程序,Ubuntu 或 Red Hat LTS Linux 仍是個不錯的選擇。
其次,CW 並不認為 Google 已經發展到能夠讓整條滾動發行版的自動化生產管道,精進到隻需一名工程師便可維護超過 10 萬用戶的 Linux 桌面。
更重要的是,如果 Google 有足夠的自信,那不妨直接將 Sieve 代碼分享出來,以便大傢都可輕松上手滾動更新的 Linux 桌面發行版。