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

Delphi解决 openssl DLL 与 Indy 的SSL/TLS 连接问题 ​ 使用 SSL 连接时出错。错误 1409442E:SSL 例程:ssl3_read_bytes:tlsv1 警报协议版本 由于我使用的是最新版本的Indy,根据Delphi Praxis 上的此线程,这种情况不应该发生。事实证明,不知何故,一个非常旧版本的 openssl DLLlibeay32.dll和ssleay32.dll已被放置在我计算机上的 sarch 路径中(版本 1.0.0e)。 阅读详情
  • 发布工程师通常对源代码管理、编译器、构建配置语言、自动化构建工具、包管理器和安装器等非常了解(甚至是这方面的专家)。
    技能横跨很多领域:开发、配置管理、测试集成、系统管理,甚至用户支持。
     
  • 发布工程哲学:
    (a)自服务模型:发布过程是真正的自动化的,工程师仅仅在发生问题时才会进行干预。
    (b)追求速度:“测试通过即发布”(Push OnGreen)发布模型
    (c)密闭性:构建过程都是密闭的(hermetic),意味着它们不受构建机器上安装的第三方类库或者其他软件工具所影响。构建过程使用指定版本的构建工具(编译器),同时使用指定版本的依赖库(第三方类库)。编译过程是自包含的,不依赖于编译环境之外的其他服务
    (d)强调策略和流程:多层安全和访问控制机制可以确保在发布过程中只有指定的人才能执行指定的操作。主要关注的操作有如下几项:
    • 批准源代码改动—通过源代码仓库中的配置文件决定。
    • 指定发布流程中需要执行的具体动作。
    • 创建新的发布版本。
    • 批准初始的集成请求(也就是一个以某个源代码仓库版本为基础的构建请求),以及后续的cherry picking请求。
    • 实际部署某个发布版本。
    • 修改某个项目的构建配置文件。
       
  • 持续构建与交付
    (a)构建:定义构建目标,即构建的输出结果,同时给每个目标指定依赖关系。当进行具体构建时,自动构建目标的全部依赖
    (b)分支:所有的代码都默认提交到主分支上(mainline)。然而,大部分的项目都不会直接从主分支上进行直接发布。我们会基于主分支的某一个版本创建新分支,新分支的内容永远不会再合并入主分支。Bug修复先提交到主分支,再cherry picking到发布分支上。这种方式可以避免在第一次构建之后,再引入主分支上的其他的无关改动。利用这种分支与cherry picking的方法,可以明确每个发布版本中包含的全部改动。这块有点意思
    (c)测试:一个持续测试系统会在每个主分支改动提交之后运行单元测试,这样可以快速检测构建错误和测试错误。
    (d)打包:构建MPM(Midas Package Manager)包,加标签
    (e)部署:利用build标签来指定究竟使用哪个MPM版本进行部署。
     
  • Google 自动化发布系统:Rapid
    简化版Rapid架构,展示了系统的主要组件

典型的发布流程按如下顺序进行:
(a)Rapid使用集成版本号(通常自动从持续测试系统获取)创建新的发布分支。
(b)Rapid利用Blaze编译所有的二进制文件,同时执行所有的单元测试,这两个过程通常是并发进行的。编译和测试各自在独立的环境中进行,而非Rapid工作流运行的环境中。这种隔离使得并发更容易一些。
(c)构建结果随后可以用来运行系统级集成测试,同时进行测试部署。典型的测试部署过程是在系统测试完成之后,在生产环境中启动一系列Borg任务。
(d)每一步的结果都有日志记录。另外产生一份与上次发布对比包含的所有新的改动列表的报告。

  • 每个Rapid项目都有一些工作流,定义了发布流程中的具体动作。工作流可以线性或者并发执行,某个工作流也可以启动另外一个工作流。Rapid将工作请求分发给运行在Borg系统上的生产服务器。因为Rapid使用Google的生产基础设施,我们可以同时处理几千个发布请求。
  • Blaze是Google的构建工具,它支持多种编程语言,如Google内部标准的 C++、Java、Python、Go 以及JavaScript。

 

  • 几种配置管理模型:
    (a)主分支版本配置文件:二进制文件的发布与配置文件的修改是异步进行的
    (b)将配置文件与二进制文件打包在同一个MPM包中:对没有多少配置文件的项目来说,或者那些每次发布都会改变文件的项目来说,简化了部署
    (c)将配置文件打包成MPM配置文件包
    (d)从外部存储服务中读取配置文件:适用于配置文件需要经常改变,或者动态改变(在二进制文件运行时)
     
  • 发布工程问题:
    (a)如何管理包的版本?
    (b)应该采用持续构建和部署的模型,还是应该定期构建?
    (c)发布的频率应该怎样?
    (d)应该使用什么策略管理配置文件?
    (e)哪些发布过程的指标比较有用?
Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹) 大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。 阅读详情

相关推荐

国密证书实战:在CentOS 7上构建GmSSL私有CA与完整证书链

本文详细介绍了在CentOS 7操作系统上,使用GmSSL工具构建私有国密证书颁发机构(CA)与完整证书链的实战指南。内容涵盖从部署GmSSL、创建国密根CA、签发服务器与客户端证书,到生产环境安全加固与最佳实践的全流程,旨在帮助系统管理员和安全工程师建立统一、可控的内部国密安全通信体系。

jenkins8butler的博客 502

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

第8章 发布工程 发布工程与产品研发部门的软件工程师,以及SRE一起定义发布软件的过程的全部步骤——包括软件是如何存储于源代码仓库中,构建时如何进行测试,打包,最终部署的 发布工程师角色 开发软件,为Google 提供各种数据(代码修改提交部署到生产环境一共需要多长时间)。定义最佳实践保障软件项目可以一致的,可重复的进行发布。 发布工程哲学 自服务模型 每个团队可以决定多久或者什...

Hcode4的博客 718

PX4实战指南:通过遥控器通道直连实现舵机PWM控制

本文详细介绍了如何通过PX4飞控实现遥控器通道直连控制舵机PWM输出的完整流程。从硬件准备、遥控器配对到PX4参数配置和硬件连接,提供了实战技巧和常见问题解决方案,帮助无人机爱好者快速掌握舵机控制技术。重点讲解了AUX Passthrough模式设置和PWM参数调整等关键步骤。

weixin_29195217的博客 154

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

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

weixin_46959162的博客 1776

【QT】QtCreator卸载与安装(非正常状态)

QtCreator卸载与安装(非正常状态)

Cappuccino Blog 1万+

OpenClaw Browser Relay Extension 鉴权失败与 invalid handshake 问题的终极解决方案

在使用 OpenClaw 浏览器插件 (Browser Relay Extension) 时,许多用户可能会遇到两个主要问题:一是配置端口错误导致的连接失败,二是鉴权失败 (Gateway token rejected)。本文将详细解析这两个问题并提供解决方案。

gerryke的blog 5561

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

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

weixin_33894992的博客 683

树冠体积计算之体元累加法

因为是自己之前研究的一个方向,就复现了一下论文中的这个方法,在此正好记录一下。 文章目录一、简介二、代码实现(MATLAB)三、小结 一、简介 简而言之,其实就是一句话,即以固定大小的体元模拟不规则的树冠形状。按照论文中的思路主要就是将树冠沿树高方向以 k 为步长进行等距离分段,把每一段树冠的点投影到垂直于树高方向的平面上,再对该平面划分成大小为 k × k 的像元,根据投影到各个像元内点的数量,判断该像元的有效性,统计有效像元的数量 T,则树冠体积为 T 个 k × k × k 的体元之和。如下图所示:

dayuhaitang1的博客 2609

C. Google SRE 实践 - 产品发布

C. Google SRE 实践 - 产品发布 组织结构:发布协调工程师 工作内容 审核新产品和内容服务,确保它们和Google的可靠性标准以及最佳实践一致,同时提供一些具体的建议来提升可靠性 在发布过城中为多个团队之间的联系人 跟进发布所需任务的进度,负责发布过程中所有技术相关的问题 ...

micklongen的专栏 568

手把手教你学Simulink——基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

MHD0815的博客 1万+

Uniapp微信小程序:详解根据角色权限动态展示底部tabbar,支持不同身份显示不同底部导航+灵活权限组合完整源码,菜单切换不闪烁、秒加载不卡(提供动态原生Tabbar配置+自定义组件形式2种方案)

uni-app微信小程序实现根据用户不同角色显示不同的tabBar,uniapp微信小程序原生tabbar实现动态菜单导航,微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色,动态pages,uni-app微信小程序动态tabBar,根据不同用户展示不同的tabBar,uni-app微信小程序动态切换tabBar,根据不同用户角色展示不同的tabBar,微信小程序自定义底部tabbar动态修改,Uniapp小程序根据权限(角色)不同动态展示底部tabbar,解决tabbar闪烁卡顿问题,小

✅ 精选推荐文章 4285

SRE(站点可靠性工程)介绍

概述 站点可靠性工程(SRE)是 IT 运维的软件工程方案。SRE 团队使用软件作为工具,来管理系统、解决问题并实现运维任务自动化。 SRE 执行的任务以前通常由运维团队手动执行,或者交给使用软件和自动化来解决问题和管理生产系统的工程师或运维团队来执行。 在创建可扩展和高度可靠的软件系统时,SRE 是宝贵的实践。它可帮助您通过代码管理大型系统,对于管理成千上万台机器的系统管理员来说,代码更具可扩展性和可持续性。 站点可靠性工程的概念由 Google 工程团队的 Ben Treynor Sloss..

帝上无天的博客 5033

基于STM32+Qt上位机设计的智慧停车场管理系统(207)

本项目设计了一套基于STM32+Qt上位机的智慧停车场管理系统。该系统融合了先进的嵌入式技术、图像识别技术、数据库技术和移动互联网技术,通过STM32硬件端实时采集车库现场信息,包括车牌识别、车位占用状态监测等,并将数据上传至Qt上位机进行处理与展示。利用MySQL数据库存储车辆出入库记录及车位使用情况,确保数据的安全性和可追溯性;通过Android手机APP为用户提供查询、支付等功能,实现远程交互与便捷服务。

3942

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

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

1871

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

1908

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

2330

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

1578

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

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

1560

《SRE:Google 运维解密》读书笔记31: 通过嵌入SRE的方式帮助团队从运维过载中恢复 - 当SRE团队陷入“运维漩涡”

嵌入SRE = 一名临时顾问,不是替团队清空票单,而是帮助团队建立SLO、区分琐事、识别“火种”,让团队从内部打破“50%规则失效”的恶性循环。关键点一句话概括问题背景票单量持续增长导致50%规则被长期打破,团队精疲力竭嵌入SRE的定位临时顾问,职责是改进团队的实践,而非直接处理票单一人原则一个嵌入SRE比两个更有效,两个可能触发团队防御性反应第一阶段了解服务与背景,区分“核心但很小”与“快速增长”的服务第二阶段找出最大压力源,关注中断数量而非处理速度第三阶段。

2139

《SRE:Google 运维解密》读书笔记35: 结论 - 从Google的实践到行业的启示

SRE不是一套工具,而是一场文化变革——它通过拥抱风险、消除琐事、从失败中学习、数据驱动决策,将软件工程思维注入运维,让可靠性成为可量化的、可持续的核心竞争力。关键点一句话概括SRE的本质用软件工程方法解决运维问题,是文化变革而非工具集五大核心理念拥抱风险、消除琐事、简单化、从失败中学习、数据驱动决策50%规则SRE必须将至少一半时间投入开发工作,防止退化为纯运维错误预算用“1-SLO”定义可接受的故障额度,平衡创新与稳定无指责文化事故后分析系统缺陷而非追究个人,是坦诚复盘的基础。

2361

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

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

1652

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

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

1742

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

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

2733

《SRE:Google 运维解密》读书笔记11: 基于时间序列数据进行有效报警 - 新型的监控

在正式进入第10章之前,有必要对“具体实践”这一部分的整体结构有所了解。章节主题核心内容第10章基于时间序列数据进行有效报警Borgmon、时间序列数据库、报警规则设计第11章on-call 轮值多地团队、轮值频率与生产环境熟悉度第12章有效的故障排查手段假设-排除法、常见陷阱第13-14章应急事件管理降低影响范围、管理事故响应第15-16章事后总结与根源分析无指责文化、事故跟踪系统第17章测试避免已知类型问题重复发生第18-22章容量规划与负载均衡Auxon、GSLB、BwE、连锁故障。

1933

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

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

1694

读书笔记(SRE:Google运维解密):第17章 测试可靠性

对服务质量的自信可以用过去的系统可靠度和未来的系统可靠度来衡量。前者可以通过抓取和分析历史性监控信息来获得,后者可以用基于历史数据的预测来量化。为了让这些预测信息足够准确,必须满足下列条件中之一: (a)在这段时间内,该系统完全没有改变。包括没有任何软件更新以及服务器数量变化,这意味着未来的行为方式应该与过去的行为方式类似。 (b)可以充分描述整个系统的所有改变,这样可以针对每个系统变化引入的不确定性进行分析。   软件测试的类型:传统测试和生产测试 (a)传统测试: 1)单元测试:单元测试(.

lo_ong的博客 716
上一篇: 读书笔记(SRE:Google运维解密):第7章 Google 的自动化系统的演进
下一篇: 读书笔记(SRE:Google运维解密):第9章 简单化
github_37320188
博客等级 码龄10年 24粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值