谷歌講述從Goobuntu轉向gLinux內部桌面發行版的心路歷程
位於加州山景城的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 桌面發行版。