SRE Google运维解密——第8章 发布工程

googleSRE运维解密 SRE读书沉淀 阅读详情

第8章 发布工程

发布工程与产品研发部门的软件工程师,以及SRE一起定义发布软件的过程的全部步骤——包括软件是如何存储于源代码仓库中,构建时如何进行测试,打包,最终部署的


发布工程师角色

开发软件,为Google 提供各种数据(代码修改提交部署到生产环境一共需要多长时间)。定义最佳实践保障软件项目可以一致的,可重复的进行发布。

发布工程哲学

  • 自服务模型
  • 每个团队可以决定多久或者什么时候来发布产品的新版本
  • 发布过程自动化,工程师仅仅在发生问题时才会进行干预
  • 追求速度
    频繁的发布可以使每个版本之间的变更减少,这种方法使得测试和调试变得简单

部署通过所有测试的版本(在所有可用的构建版本中选择某个版本进行发布)

  • 密闭性

如果两个工程师试图在两台不同的机器上基于同一个源代码版本构建同一个产品,构建结果应该是相同的。

  • 强调策略和流程
  • 几乎所有对源代码修改都需要进行代码评审
  • 自动化发布系统可以提供每个发布中包含的所有改动报告。与其他的构建结果一起归档
  • SRE 可以了解每个发布中包含的具体改动,在发布问题时可以更改的进行在线调试

持续构建与部署

Rapid,Google自动化发布系统,利用一系列Google 内部技术执行可扩展,密闭性,以及可靠的发布流程

  • 构建
  • Blaze , Google 的构建工具,定义构建输出结构,如jar 文件,同时给每个目标的依赖关系。
  • 可以显示自身构建时间,构建源代码版本,构建标识符,可以将输出结果与构建过程对应起来
  • 分支
  • 提交代码到主分支上,在副分支上发布版本。
  • 提交Bug 到主分支,Cherry picking 到发布分支
  • 测试
  • 在每个主分支改动提交后运行单元测试(快速检测构建错误,测试错误)
  • 发布过程中,使用使用发布分支运行所有的单元测试,发布分支可能包含主分支上不存在的代码版本
  • 使用独立测试环境来打包好的构建结果运行一些系统级别的测试
  • 打包
  • 软件通过Midea Package Manager(MPM)系统分发到生产机器上。
  • MPM 基于Blaze 规则中列出的构建结果和权限结果构建MPM包。
  • 每个包有固定名称,记录构建结果的哈希值,加入签名以确保真实完整性
  • Rapid 系统
    Rapid 系统结构(简化)

由Blueprint配置语言写成的配置文件。定义构建目标,测试目标,部署规则以及一些管理用信息

典型的发布流程按如下进行

  1. Rapid 使用集成版本号(通常从持续测试系统获得)创建新的发布分支
  2. Rapid利用Balze编译所有二进制文件,同时执行所有单元测试,两个过程通常并发进行。编译和测试各自在独立的环境中运行,而非Rapid工作流运行环境中,隔离使得并发更容易一些。
  3. 构建结果随后可以用来运行系统级集成测试,同时进行测试部署。典型的测试部署过程在系统测试完成之后,在生产环境中启动一系列Borg 任务
  4. 每一步的记过都有日志记录,另外产生一份与上次发布对比包含所有新的改动列表的报告
    Rapid 可以管理发布分支与cheery picking. 每个具体的cheery picking 请求可以被单独批准和拒绝
  • 部署
  • Rapid 经常可以直接驱动简单的部署流程
  • Sisyphus ,SRE 开发的一个通用的发布自动化框架,执行复杂的部署任务。
  • Repid 在某个Sisyphus系统中创建一个新的发布,Rapid知道自己构建的MPM包的build标签,Sisphus 可以利用这个build 标签指定究竟使用那个MMP 版本进行部署。
  • 配置管理
    分发配置文件的模型
  1. 主分支版本配置文件
    1.1 开发者和SRE同时修改主分支上的配置文件,经过代码评审后应用到正在运行的系统上。可能会造成提交版本和实际运行配置文件不一致,任务必须要经过更新才能应用这些变更。
  2. 将配置文件与二进制文件打包在同一个MPM包中
    2.1 配置文件与二进制文件放在一个MPM 包中,虽然策略有一定限制,但是简化部署
  3. 将配置文件打包成MPM配置文件包
    3.1 一个二进制文件,一个配置文件,可以单独修改
  4. 从外部存储服务中读取配置文件
比亚迪开放平台接口实战:车身状态监测与智能车联应用开发 本文详细介绍了如何利用比亚迪开放平台的车身状态接口进行智能车联应用开发。通过核心类BYDAutoBodyworkDevice,开发者可以安全获取车辆VIN、车门车窗状态、蓄电池电压、方向盘转角等实时数据,并利用监听器实现状态实时响应。文章提供了从SDK集成、接口调用到典型应用场景(如远程车况检查、车队管理)的完整实战指南,助力开发者快速构建基于比亚迪车辆数据的创新应用。 阅读详情

相关推荐

深交所 vs 上交所:Level-2实时数据推送规则详解与策略适配指南

本文深度解析沪深Level-2实时数据推送规则的关键差异,包括逐笔成交、逐笔委托和10档行情接口的处理逻辑。针对高频交易策略,详细对比上交所与深交所在数据推送机制、时间戳处理及委托队列解析等方面的差异,并提供具体的策略适配方案和性能优化建议,帮助量化投资者提升跨市场交易稳定性。

weixin_27310417的博客 1166

读书笔记(SRE:Google运维解密):第8章 发布工程

发布工程师通常对源代码管理、编译器、构建配置语言、自动化构建工具、包管理器和安装器等非常了解(甚至是这方面的专家)。 技能横跨很多领域:开发、配置管理、测试集成、系统管理,甚至用户支持。   发布工程哲学: (a)自服务模型:发布过程是真正的自动化的,工程师仅仅在发生问题时才会进行干预。 (b)追求速度:“测试通过即发布”(Push OnGreen)发布模型 (c)密闭性:构建过程都是密闭的(hermetic),意味着它们不受构建机器上安装的第三方类库或者其他软件工具所影响。构建过程使用指定版本.

lo_ong的博客 397

基于WEB的报价管理系统的设计与实现

该系统采用B/S模式,后台运用SpringMVC和MyBatis搭建,利用MySQL数据库,来组织存储和管理数据,使用tomcat服务器向外提供服务。使用该系统对外有利于提高企业的综合竞争力,对内有利于提高成本管理和控制的水平,简化了报价流程、提高了工作效率、精简了报价机构,降低了成本。研究和掌握必要的信息采集和数据查询技术,是各个企业,事业单位信息化的一个重要标志。当前大多数企业采取的报价方式仍然是用EXCEL表格和人工的方式,这不仅不利于大量数据的总结,更不利于对销售利润的控制。

m0_60918862的博客 1000

高逼格运维指南:Google SRE是如何工作的?

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33894992的博客 683

写一个b站爬虫(思路)

part 0 安装 scrapy, requests part 1 信息获取 打开番剧索引链接(https://www.bilibili.com/anime/index/) F12控制台,选中NETWORK,来到xhr文件,我们可以找到了存放番剧json的地方

kou的博客 486

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 256

《Google SRE工作手册》系列读书分享之 B站SRE流程中心实践分享 (视频+文字版)

本期分享主题是B站SRE流程中心实践,本期分享内容为谈谈Google SRE工作手册、SRE业务流程化的挑战、流程中心设计与核心技术要素、B站流程中心实践,以及总结与展望。

weixin_46959162的博客 1776

ArcGISPro小白必看:5分钟搞定3D地形图制作(附免费数据源)

本文为ArcGISPro初学者提供5步制作专业3D地形图的完整指南,涵盖免费数据获取、项目初始化、数据预处理、3D场景构建和成果输出等关键步骤。特别推荐使用NASA的SRTM高程数据和吉林一号卫星影像,帮助用户快速掌握3D地形图制作技巧,适用于教学演示和科研分析。

weixin_28314575的博客 242

读书笔记(SRE:Google运维解密):第7章 Google 的自动化系统的演进

自动化是一种力量倍增器,但不是万能药。当然,对力量的倍增并不能改变力量用在哪的准确性:草率地进行自动化可能在解决问题的同时产生出其他问题。   自动化的价值究竟是什么? (a)一致性:一致性地执行范围明确、步骤已知的程序—是自动化的首要价值。 (b)平台性:一个平台可以暴露自身的性能指标,也可以帮助你发现流程中以前所不知道的细节,这些细节在平台范围内更容易衡量。 (c)修复速度更快:在产品生命周期中一个问题越晚被发现,修复代价越高; (d)行动速度更快: (e)节省时间:节省时间是一个经常被引用.

lo_ong的博客 365

保姆级教程:用QSTEM和DrProbe搞定你的第一张STEM模拟图(附Fe3O4实例文件)

本文提供了一份详细的STEM模拟图像生成教程,涵盖从晶体结构获取到最终图像模拟的全过程。通过QSTEM和DrProbe软件的操作指南,帮助材料科学研究者快速掌握STEM模拟技术,特别适合初学者。教程包含Fe3O4实例文件,详细解析参数设置、计算优化和结果分析等关键步骤。

weixin_33730836的博客 524

[DevExpress]GridControl拖拽行记录排序

DevExpress的GridControl拖拽行记录排序需求效果代码 需求 现在用户对按钮点击排序不满意了, 希望拖拽排序。 重载GridControl控件,对MouseMove、MouseDown、MouseUp事件修改一下。 效果 代码 using System; using System.Drawing; using System.Windows.Forms; using xiaoid.forms; using System.Data; using System.Collections.Gener

德仔 1563

《SRE Google 运维解密》笔记

文章目录1. 主旨2. 概览2.1 提出 SRE 的动力?2.2 SRE 聚焦问题点2.3 庖丁解牛2.3.1 你看到了什么?2.3.2 如何管理你看到的?2.3.3 能否站在全局视角上看问题?3. 指导思想3.1 学会拥抱风险3.1.1 如何度量服务的风险?3.1.2 判断服务风险的容忍度?3.1.2 设计合适的「错误预算」3.2 服务质量目标3.2.1 指标在实践中的应用3.2.2 目标在实...

phantom_111的博客 2523

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7726

《SRE:Google 运维解密》读书笔记19: SRE中的软件工程 - 当SRE从“运维”走向“开发”

SRE中的软件工程 = 将生产运维的知识和经验固化为可复用的内部产品,以团队规模的线性增长支撑服务规模的指数级增长,同时为SRE工程师提供职业发展的工程通道。关键点一句话概括隐形软件工程Google有大量消费者看不见的软件工程,很多在SRE内部完成三大开发优势生产知识深度 + 直接使用者 + 高质量反馈产品化思维SRE工具不是一次性脚本,而是有路线图的成熟项目核心原则团队规模不应随服务增长而线性扩展Auxon案例将容量规划从“预测驱动”升级为“意图驱动”职业发展双通道。

1871

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

《SRE:Google 运维解密》读书笔记28: 可靠地进行产品的大规模发布 - 当发布不再只是“发布”

可靠的大规模发布 = LCE(发布协调工程师)设计流程 + 发布检查列表系统把关 + 灰度发布降低风险 + 功能开关提供逃生舱,让正常发布变得“无聊”而安全。关键点一句话概括LCE的角色定位SRE内部的专门咨询团队,负责新功能/新产品发布的可靠性审查和多方协调LCE三项核心能力广泛的经验 + 跨职能的视角 + 客观性好流程五大特征轻量级、鲁棒性、完整性、可扩展性、适应性——存在内在冲突,需持续平衡流程冲突的解法简化(用“最糟糕的事”问题判断)、高度定制、保证通用路径快速完成发布检查列表。

1907

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

《SRE:Google 运维解密》读书笔记01: 为什么要学习Google SRE & Google SRE 可以带给我们什么?

SRE:Google 运维解密》是一本教你如何在高速迭代中保持系统稳定的工程圣经。掌握现代高可用系统的构建方法论;具备用工程思维解决运维问题的能力;成为团队中推动可靠性和效率提升的关键人物;在职业发展中拥有 DevOps/SRE/平台工程等热门方向的核心竞争力。建议搭配实践:读完一章后,尝试在你的项目中落地一个概念(比如定义一个 API 的 SLO,或写一个自动化脚本减少重复操作)。PS: 如果你正在构建或维护线上系统,这本书值得反复精读!!!

1560

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

《SRE:Google 运维解密》读书笔记29: 迅速培养SRE加入on-call - 培训, 是对人最重要的投资

SRE培训 = 系统性蓝图导航 + 目标性项目赋能 + 反向工程锻造思维——让新手在信任和安全感中快速成长为值得信赖的on-call工程师。关键点一句话概括信任是基石培训的目标是让团队可以相互信任——相信每个人在关键时刻都能靠得住三大核心问题除了“教什么”,还要考虑如何评估、如何双赢、如何让大家都喜欢培训蓝图X轴(抽象→具体) + Y轴(时间),正式on-call是重要里程碑新手三大焦虑“我在做什么”“进度如何”“何时能on-call”——培训需要回答这些问题系统性原则。

2330

《SRE Google运维解密》散文

文章目录SRE认识运维认识SRE避免琐事工程化自动化监控发布工程oncall团队管理K8S其它章节当前问题 SRE 《SRE Google运维解密》 读书笔记 引言:曾经,觉得写接口改Bug不好玩了,就此带着热情走进了运维世界,探索这奇妙的监控、容器、自动化…。幸得茅哥的引路,让自己在运维的世界越走越远。近些天,我确定了新的方向,再次燃起我眼睛里无限探索的渴望;今天结束或许就是自己人生中最后一个运维相关岗位的工作日。假使将来有时间,我将把这些年的运维笔记整理升华发布于此。 认识运维 软件的生命周期

IMPlove的博客 668

《SRE:Google 运维解密》读书笔记06: 少琐事 - SRE的隐形敌人

琐事就是运维服务中手动性的、重复性的、可以被自动化的、战术性的、没有持久价值的工作,而且,琐事与服务呈线性关系的增长。一个经典案例:运维人员收到"磁盘目录满"告警后,手动登录服务器清理日志文件。这件事手动、重复(下次磁盘还会满)、可以被自动化、没有持久价值(清理完服务状态没有任何改进),且随着服务器数量增长,这类工作的频次会线性增加。另一个琐事密集场景:周期性报表和周期性巡检。这类工作虽然看似"有必要",但如果每次都需要人工执行,就完全符合琐事的定义——重复、可自动化、缺乏持久价值。

1578

一个Google SRE工程师眼中的8点运维原则

我是 Google 一名 SRE (运维)工程师,在过去系列文章中对『SRE: Google 运维解密』一书提出了自己的见解。本文所有见解皆为个人观点,不代表 Google 公司立场。我们来看书中第一章的一些观点: Google 对运维的解决之道:网站可靠性工程(Site Reliability Engineering)[1]。虽然每个 SRE 团队都有自己的工作流程、优先级定义以及日常工作规范,...

weixin_34195546的博客 2644

《SRE:Google 运维解密》读书笔记03: SRE 理念 - 从“零故障”到“理性风险”

本文摘要:SRE(Site Reliability Engineering)是一种用软件工程方法解决运维问题的实践,核心是让软件工程师负责运维工作。与传统运维不同,SRE强调自动化、50%开发时间、拥抱风险(通过错误预算机制)和消除重复性工作。Google的SRE团队分为产品SRE、基础设施SRE和共享平台SRE三种形态,要求成员具备软件开发能力。SRE七大原则包括:拥抱风险、设定SLO目标、消除琐事、监控系统、自动化、发布工程和追求简单性。SRE与DevOps互为补充,前者提供具体方法论,后者提供文化框架

1650

SRE Google运维解密pdf

下载地址:网盘下载自动化对Google SRE 的价值 62自动化的应用案例 63Google SRE 的自动化使用案例 63自动化分类的层次结构 64让自己脱离工作:自动化所有的东西 66舒缓疼痛:将自动化应用到集群上线中 67使用Prodtest 检测不一致情况 68幂等地解决不一致情况 69专业化倾向 71以服务为导向的集群上线流程 72Borg :...

weixin_30945039的博客 2017

《SRE:Google 运维解密》读书笔记12: on-call轮值 - SRE的“生命线”

on-call 轮值是 SRE 保障服务可靠性的核心机制,通过主副值班制、多地团队、25%运维时间红线和12小时≤2事件的质量标准,让应急响应可持续。关键点一句话概括on-call 的核心目标服务可靠性(分钟级响应)+ 团队可持续性(避免疲劳战)主副值班制主 on-call 负责主要响应,副 on-call 作为备份和协助多地团队优势避免夜间值班损害健康 + 控制团队规模保障熟悉度数量平衡纯运维时间 ≤ 25%,至少 50% 投入研发质量平衡。

1742

《SRE:Google运维解密》读后有感

当我们进行体系化的思考的后,我们就会有新的收获,并且在解决方案上更加的完善。框架和SRE平台这种模式,提供了很多的益处,比如说显著的降低运维开销,因为它支持代码结构、依赖关系、测试、编码样式指南等的强合规性测试,内置服务部署、监控和自动化,设计中自带的通用性支持,这种在框架中把基于生产最佳实践的代码模式进行标准化封装,让SRE在管理时降低了认知的负担,同时仍然可以保持服务的质量,每一个标准框架都为问题所在的领域或者问题相关的基础设市以来提供了一个完整的解决方案。,其次SRE的关注焦点在于。...

学无止境 1073

《SRE:Google 运维解密》读书笔记38: 完结篇补充1 - 如何在实际工作中落地这些SRE理念

目的:用数据替代“感觉”,建立共同目标。怎么做选择一个核心用户场景(如“用户登录”或“API 查询”);定义SLI(服务质量指标),例如:成功率 = 成功请求数 / 总请求数延迟 P95 < 500ms设定SLO(建议从宽松开始):“过去 28 天,登录成功率 ≥ 99%”计算错误预算允许失败比例 = 1% → 每月约 7 小时可“不可用”工具建议使用 Prometheus + Grafana 监控 SLI;用简单脚本计算是否违反 SLO。SLO 不是 SLA(对外承诺)

2733

《SRE:Google 运维解密》读书笔记02: 介绍 - SRE的起源与核心理念

SRE(Site Reliability Engineering,站点可靠性工程)是 Google 于 2003 年首创的一种用软件工程方法解决运维问题的实践体系和组织文化。“SRE 就是让一群软件工程师去设计、构建和运行大规模分布式系统,并通过工程手段保障其可靠性。SRE 是用软件工程的方法,把运维从“人力密集型救火队”转变为“自动化、可度量、可持续”的工程学科;优秀的 SRE 是既能写代码又能扛故障的“全栈可靠性工程师”。工具会变,但工程思维、用户视角和简化原则永不过时。

1693
上一篇: SRE Google运维解密——第7章 Google的自动化系统的演进
下一篇: SRE Google运维解密——第9章 简单化
陌逸_逺
博客等级 码龄9年 13粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值