更新时间:2024-11-01 14:37:30
几年前,Google完成了从基于Ubuntu的Linux桌面到Debian的转换。现在谷歌详细介绍了这一变化如何导致Linux桌面的滚动发布,升级速度更快、更流畅,安全补丁也更快。
在使用Ubuntu作为谷歌内部设备的基础超过15年后,该公司转向Debian以避免每两年进行一次重大操作系统升级,并随着时间的推移分散升级工作量。
正如ZDNet当时报道的那样,谷歌宣布已于2018年完成此举。谷歌工程师MargaritaManterola解释说,它正在从Ubuntu的谷歌版本Goobuntu转移到gLinux,这是一个基于DebianTesting的滚动版本,它是Debian下一个稳定版本的测试版。
考虑到从Goobuntu迁移所涉及的设备数量,这是一个很大的变化,但也不足为奇,因为Ubuntu基于Debian,使得包更新过程的某些方面相似。
Manterola和其他Google工程师KordianBruck和SvenMueller现在已经在一篇博文中解释了公司如何为台式机推出滚动Linux版本,详细介绍了其他大公司如何为台式机实施相同的升级系统。
正如他们所指出的,在切换到滚动发布之前,每个操作系统周期都会在“主要软件包中产生相当大的版本跳转,这可能需要对软件配置进行重大更改”。谷歌自动化了大部分但不是所有的升级过程。
升级Goobuntu舰队花费了一年的大部分时间,操作系统周期的时间意味着升级后“接近精疲力尽”的核心团队的大爆炸过程永无止境。
“有了两年的支持窗口,只剩下一年了,我们不得不为下一个LTS重新经历同样的过程。整个过程对我们的团队来说是一个巨大的压力因素,因为我们遇到了数百个错误请求帮助解决极端情况,”他们写道。
“一旦完成一次升级,团队就会有一种‘接近倦怠’的普遍感觉,直到下一轮更新到来之前,我们几乎无法从中恢复过来。运行LTS版本也意味着用户遇到的一些错误我们的发行版可能已经在上游得到修复,但这些改进可能从未向后移植到LTS版本。”
谷歌设计gLinuxRodete(滚动Debian测试)的目的是终止两年的升级周期,并随着时间的推移逐步推出,以减轻工程师的负担。
正如他们所指出的,软件行业向CI/CD(持续集成/持续开发)的普遍转变表明,较小的增量更改更容易控制和回滚。出于类似的原因,ArchLinux和NixOS等Linux发行版也实现了滚动发布。滚动发布的Linux不断更新,其理念是在创建时为用户和开发人员提供最新的更新和补丁,从而为他们提供最好的服务。
Google选择Debian是因为软件包的可用性、庞大的社区以及现有的Debian格式的内部软件包和工具。Google解释了为什么选择Debian的beta而不是Stable。
“虽然Debian稳定轨道在发布之间经历了大约两年的跳跃,但Debian测试轨道作为滚动发布运行,因为它是从上游摄取和构建的所有软件包的池,等待下一个稳定版本的发布,”谷歌工程师写道。
谷歌最终决定每周发布一次操作系统更新,但最初打算让它们更频繁地发布。
当它今天开始发布新版本时,更新团队会拍摄当时从Debian中提取的软件包的快照。谷歌然后运行、接受、测试,然后“谨慎地”将更新推出专门的测试和1%的舰队范围的“金丝雀”。金丝雀给它几天时间来检测Debian软件包或Google内部软件包的问题,然后再将其推广到整个团队。
Google还构建了一个名为Sieve的工作流系统来管理从源代码构建上游包。如果构建过程和测试失败,Sieve具有重试构建的工具。
谷歌获得的安全优势之一是它在上游Debian中放置的“信任信封”减少了。
“例如,在发生安全事件期间,我们能够快速重建并对使用临时补丁的构建工作充满信心,因为我们之前一直在构建所有软件包,这些软件包已登陆我们的发行版。
“此外,我们还减少了我们必须放入上游Debian及其基础设施生成的二进制构建工件的信任信封。相反,一旦源代码被摄取并可验证地构建二进制文件,我们就可以通过密码证明正在运行的二进制文件来自正是那个源代码。”
谷歌表示,它还“通过让我们的车队更接近上游发布,大大改善了我们的安全立场。”
“虽然Debian为稳定版和旧版稳定版提供了良好的安全补丁来源,但我们意识到并非每个获得补丁的安全漏洞都必然具有Debian安全公告(DSA)或CVE编号,”工程师指出。
“我们的滚动发布时间表确保我们在不影响稳定性的情况下快速修补整个机队的安全漏洞,而以前的安全工程师必须仔细审查每个DSA并确保修复程序已应用于我们的机队。”
谷歌表示,它确实计划与上游Debian更紧密地合作,并贡献更多的内部补丁来维护Debian软件包生态系统。
该公司还敦促其他人考虑实施滚动发布,以“平衡公司的需求与升级灵活性”。谷歌的变化已经证实,增量变化胜过大爆炸式发布。
“每当我们遇到太多问题并破坏我们的团队[服务水平目标]时,控制我们自己的移动目标和基线有助于放慢速度。我们的旅程最终强化了我们的信念,即增量变化比大爆炸更易于管理发布。”