image from pixabay.com
SRE 工程师往往会负责一个具体组件,有时也称为服务或系统(下文都称之为组件)。 需要关注的有这个组件生命周期各类事项:运行状态、日常迭代、变更计划,以及在大促等活动中的筹备、预案等等, 有些组件是团队已经在长期持续维护着的,而有些则是要去新接入。 那么,当 SRE 接手(on-borading)这样组件时, 需要做哪些事项呢, 如何将「接手」这个行为做得有掌控力、顺畅且体面?
第一步永远是了解现状,孙子兵法谋攻篇说,知己知彼,百战不殆。 现状包含组件的当前运行状态、环境, 还包含当前 SRE 团队的能力、平台是否可以顺利衔接。
了解一个组件,可以先以用户角度进行切入。 去理解这个组件提供什么功能,服务对象是谁,服务的规模如何? 能否将组件进行归类?是属于普通业务系统,还是基础设施? 如果时间充裕的话,还可以跟这个组件的用户进行几次沟通,咨询,他们关于这个组件使用上的痛点。
近期和长期的规划也是需要重点关注的内容。 在组件设计和规划上面有没有什么计划和目标。根据规划我们可以推断出该组件处于何种生命周期。 生命早期的组件要多关注变更和基础能力建设; 成熟期组件往往承担了较为重要的角色,很可能承担了相当的生产流量,这时候变更、可观测性和应急方面就要花更多精力。 生命周期末期的组件则关注点是在维稳,优先考虑如何找到人,并且尽量低成本复用现有能力平台,甚至还要适当关注服务迁移和下线计划。
第二步是以技术的视角来切入, 分别从架构、依赖、部署、可伸缩能力、容量等角度切入,具体需要回答的问题如下:
结合 SRE 团队服务的其他组件,还要思考一下有哪些其他组件和当前组件类型一样,有什么差异点? 有没有特殊的部署要求?
对一个组件需要了解到什么程度才能接手? 这里我用几种程度来描述掌控力:
在经过一轮 PRR 完整流程之后,SRE 应当至少需要具备 L2 级别能力。 接管一段时间之后,随着对组件不断的了解,SRE 应当具备 L3 级别能力。
了解现状这个动作基本上是以静态的视角来看待组件。 完成之后,还要换成动态视角来看:有哪些日常操作(Operational)和紧急状态(Emergency)的操作?
需要关注的领域有可观测性、变更、应急预案:
在应急方面,还需要去了解过去历史上出现过哪些的问题。 翻看组件的故障复盘文档,了解历史上故障过程,故障原因,对应的 Action 是否落地? 尤其注意的是要关注 Action 工作机制是阻断式、检查式还是发现式? 老故障放到当下如果要避免是依赖系统、流程机制还是人工?
由于 SRE 日常工作主要构成是两类:能力建设和 On-Call。 在了解日常、应急场景事项时,还需要持续思考这些日常事项和应急动作能否基于 SRE 的工具平台、能力平台完成。 按照能力模型等级:手工 -> 工具 -> 自动化 -> 智能化来划分,当前日常、应急动作进入哪个环节了? SRE 也可以借事修物,借接收这个环节,重新审视自己的各类工具平台,是否满足这些日常、应急动作,能否更快更强更安全更准更好用?
为了保证接手过程的顺畅,以及日后合作的体面,服务范围必须要在接手环节明确清楚。
什么是服务范围?就是接手之后工作内容的边界和日常合作模式。
一个最常见的边界划分是。变更:SRE 团队负责 CI / CD 环境建设,而 SWE 团队使用 CI 环境完成日常的部署。 SRE 团队则使用自行建设的 CD 系统进行变更管理。 日常和应急:在日常 Operational 事项和应急中,SRE 会按预案进行处置并保障组件回到最理想状态。 SRE 还需要建设可观测性、应急相关的技术基础设施,对组件全生命周期监控和应急处理。 SRE 最终承诺的组件对外 SLA,并将 SLA 拆解为 SLO 跟 SWE 共背。 在接受过程中很重要的一个工作就是,理清楚组件的 SLI / SLO,并且根据现状跟 SWE 团队商榷出对外承诺的 SLA。
除了服务范围,SRE 和 SWE 还要建设任务协作机制和沟通机制。 有没有统一的任务记录和流转平台?遇到稳定性相关的反馈如何,如何将需求转化为任务并追踪完成? 故障相关的 Action 如何追踪落地?一些基础环境变化以及业务上活动变化,是否有统一场合进行同步? 比较理想的情况是,基于任务管理系统,一个需求/缺陷从提出,到设计,到实现,到变更,SRE 都参与其中。 考虑到成本,现实执行时候可以根据精力、理解成本、重要程度、组件生命阶段进行微调。 有一个简单低成本执行方式,将服务领域组件进行划分后,每个领域派遣一个 SRE 进入对口的 SWE 团队进行追踪: 参加 SWE 团队的周会和日会,并将信息带回 SRE 团队同步。
谨记,划分没有统一的标准,不同团队,不同技术成熟度,不同生命周期组件都会导致不一样的边界和合作模式。
「接手」是管理的第一步。 在了解现状、明确日常和应急事项、明确服务范围等一系列动作之后, 相信 SRE 已经具备初步掌控力了。有了方法论,还要持续精益求精,将掌控力从 L2 进步到 L4。 想把事情给真正做好,核心是持续学习思考在对应领域的基础技能,并且持续了解客户的需求变化。 保持一专多能,成为随时可以顶上去独当一面的 SRE,这才能避免成为一个工单人。🐶
image from Twitter
扩展阅读:
原文链接: 如何做好 PRR(Production Rediness Review)? | Log4D
3a1ff193cee606bd1e2ea554a16353ee
欢迎关注我的微信公众号:窥豹
image from pixabay.com
SRE 工程师往往会负责一个具体组件,有时也称为服务或系统(下文都称之为组件)。 需要关注的有这个组件生命周期各类事项:运行状态、日常迭代、变更计划,以及在大促等活动中的筹备、预案等等, 有些组件是团队已经在长期持续维护着的,而有些则是要去新接入。 那么,当 SRE 接手(on-borading)这样组件时, 需要做哪些事项呢, 如何将「接手」这个行为做得有掌控力、顺畅且体面?
第一步永远是了解现状,孙子兵法谋攻篇说,知己知彼,百战不殆。 现状包含组件的当前运行状态、环境, 还包含当前 SRE 团队的能力、平台是否可以顺利衔接。
了解一个组件,可以先以用户角度进行切入。 去理解这个组件提供什么功能,服务对象是谁,服务的规模如何? 能否将组件进行归类?是属于普通业务系统,还是基础设施? 如果时间充裕的话,还可以跟这个组件的用户进行几次沟通,咨询,他们关于这个组件使用上的痛点。
近期和长期的规划也是需要重点关注的内容。 在组件设计和规划上面有没有什么计划和目标。根据规划我们可以推断出该组件处于何种生命周期。 生命早期的组件要多关注变更和基础能力建设; 成熟期组件往往承担了较为重要的角色,很可能承担了相当的生产流量,这时候变更、可观测性和应急方面就要花更多精力。 生命周期末期的组件则关注点是在维稳,优先考虑如何找到人,并且尽量低成本复用现有能力平台,甚至还要适当关注服务迁移和下线计划。
第二步是以技术的视角来切入, 分别从架构、依赖、部署、可伸缩能力、容量等角度切入,具体需要回答的问题如下:
结合 SRE 团队服务的其他组件,还要思考一下有哪些其他组件和当前组件类型一样,有什么差异点? 有没有特殊的部署要求?
对一个组件需要了解到什么程度才能接手? 这里我用几种程度来描述掌控力:
在经过一轮 PRR 完整流程之后,SRE 应当至少需要具备 L2 级别能力。 接管一段时间之后,随着对组件不断的了解,SRE 应当具备 L3 级别能力。
了解现状这个动作基本上是以静态的视角来看待组件。 完成之后,还要换成动态视角来看:有哪些日常操作(Operational)和紧急状态(Emergency)的操作?
需要关注的领域有可观测性、变更、应急预案:
在应急方面,还需要去了解过去历史上出现过哪些的问题。 翻看组件的故障复盘文档,了解历史上故障过程,故障原因,对应的 Action 是否落地? 尤其注意的是要关注 Action 工作机制是阻断式、检查式还是发现式? 老故障放到当下如果要避免是依赖系统、流程机制还是人工?
由于 SRE 日常工作主要构成是两类:能力建设和 On-Call。 在了解日常、应急场景事项时,还需要持续思考这些日常事项和应急动作能否基于 SRE 的工具平台、能力平台完成。 按照能力模型等级:手工 -> 工具 -> 自动化 -> 智能化来划分,当前日常、应急动作进入哪个环节了? SRE 也可以借事修物,借接收这个环节,重新审视自己的各类工具平台,是否满足这些日常、应急动作,能否更快更强更安全更准更好用?
为了保证接手过程的顺畅,以及日后合作的体面,服务范围必须要在接手环节明确清楚。
什么是服务范围?就是接手之后工作内容的边界和日常合作模式。
一个最常见的边界划分是。变更:SRE 团队负责 CI / CD 环境建设,而 SWE 团队使用 CI 环境完成日常的部署。 SRE 团队则使用自行建设的 CD 系统进行变更管理。 日常和应急:在日常 Operational 事项和应急中,SRE 会按预案进行处置并保障组件回到最理想状态。 SRE 还需要建设可观测性、应急相关的技术基础设施,对组件全生命周期监控和应急处理。 SRE 最终承诺的组件对外 SLA,并将 SLA 拆解为 SLO 跟 SWE 共背。 在接受过程中很重要的一个工作就是,理清楚组件的 SLI / SLO,并且根据现状跟 SWE 团队商榷出对外承诺的 SLA。
除了服务范围,SRE 和 SWE 还要建设任务协作机制和沟通机制。 有没有统一的任务记录和流转平台?遇到稳定性相关的反馈如何,如何将需求转化为任务并追踪完成? 故障相关的 Action 如何追踪落地?一些基础环境变化以及业务上活动变化,是否有统一场合进行同步? 比较理想的情况是,基于任务管理系统,一个需求/缺陷从提出,到设计,到实现,到变更,SRE 都参与其中。 考虑到成本,现实执行时候可以根据精力、理解成本、重要程度、组件生命阶段进行微调。 有一个简单低成本执行方式,将服务领域组件进行划分后,每个领域派遣一个 SRE 进入对口的 SWE 团队进行追踪: 参加 SWE 团队的周会和日会,并将信息带回 SRE 团队同步。
谨记,划分没有统一的标准,不同团队,不同技术成熟度,不同生命周期组件都会导致不一样的边界和合作模式。
「接手」是管理的第一步。 在了解现状、明确日常和应急事项、明确服务范围等一系列动作之后, 相信 SRE 已经具备初步掌控力了。有了方法论,还要持续精益求精,将掌控力从 L2 进步到 L4。 想把事情给真正做好,核心是持续学习思考在对应领域的基础技能,并且持续了解客户的需求变化。 保持一专多能,成为随时可以顶上去独当一面的 SRE,这才能避免成为一个工单人。🐶
image from Twitter
扩展阅读:
原文链接: 如何做好 PRR(Production Rediness Review)? | Log4D
3a1ff193cee606bd1e2ea554a16353ee
欢迎关注我的微信公众号:窥豹