SRE Google 运维解密--管理
推荐的培训方式
|
错误的培训方式
|
设计一个具体的、有延续性的学习体验,以便学员跟进 | 通过给学员安排一些烦琐的工作(处理警报/工单)来培训 |
鼓励反向工程,利用统计学来思考问题,以及多思考问题的本质 | 要求严格按照现有的操作过程,检查列表,或者手册来执行命令进行训练 |
鼓励学员分析失败的案例,分享好的事后总结来阅读 | 将故障掩盖起来,以便躲避指责 |
创造一些受控的,但是逼真的场景让学员利用真实的监控环境和工具来修复 | 在学员加入on-call之后,第一次遇到问题时才会去尝试修复 |
在团队内以角色扮演的形式学习理论上可能发生的问题,让大家在这个过程中交流彼此的解决问题的方式 | 在团队中将知识隔离起来,创造出一些只在某个领域内的专家 |
给学员创造条件让他们参与见习on-call,和实际轮值的on-call工程师交流经验 | 在学员还没有对服务有全在认识的情况下,就要求他们成为主on-call |
让学员与SRE老手一志共同修订培训计划中的某个部分 | 认为on-call培训素材是静态的,非专家不可更改 |
帮学员一起找到一个具有一定复杂度的项目,帮助他们在整个技术栈内建立自己的地位 | 将新项目全部分配给SRE老手,新手SRE只能做一些零工 |
- X轴代表工作类型的范围,从抽象的,一直到具体的工作。
- Y轴代表时间,从上至下,新加入的SRE逐步学习和掌握加入on-call轮值必备的知识和技能。
- 请求是如何进入系统中的
- 前端服务
- 中层服务
- 基础设施
- 整体
- 在服务技术栈中增加一个小的,但是用户可见的功能修改,接下来跟随这个修改一直到发布到生产环境中。了解开发环境的配置和二进制文件的发布流程可以确保他们和开发团队联系密切。
- 针对现有的服务监控盲点增加新的监控,新手需要了解监控逻辑,同时将这些异常情况与系统知识相结合。
- 选择一个还没有被自动化的痛点进行自动化,使得新的SRE可以给团队成员减轻一些负担,从而受到团队的欣赏。
- 在日常工作中,他们会遇到从未见过的系统,必须要具有很强的“反向工程能力”;
- 在海量规模下,很多异常情况都很难检测,他们必须具有统计学知识,用统计学而不是流程化的方式去发现问题;
- 当标准的流程不工作时,他们必须能够随机应变,解决问题;
- 学员会经过一系列交互性的、目的性很强的练习,在Google基础设施中跟踪他们浏览器发出的某个请求。
- 在整个过程中的每一段,我们强调学习利用多种方式来发现生产服务之间的连接关系的重要性。这样可以防止某些连接关系被遗漏。
- 我们还会让学员跟踪另外一个来源请求,这会展示出我们一些最初的假设范围太窄,产生的是错误的结果。
- 接着还会让学员学习通过其他方式了解服务原理。
- 在课程末尾会给每个学员分配一项任务,每个学员需要和自己团队的资深SRE共同选择未来on-call系统的一部分。利用课程中学到的知识,该学员需要自行构建出整个技术栈的组件图,同时与资深SRE讨论。
- 对事故的渴望:事后总结的阅读和书写,定期举办事后总结的阅读活动,可以潜移默化地构建起SRE的知识库,培养他们理解生产环境的能力和应对问题的能力。事后总结同时也是未来进行抽象化故障演习时的良好材料。
- 故障处理分角色演习:这个活动同时也被称为“命运之轮”,是成员每周共同学习的好机会。具体过程类似桌游RPG游戏,设定一个主持人,再选择2个团队成员作为主on-call和副on-call。主持人宣布某个警报发生了,这个on-call团队需要进行调查和现场处理报警。主持人事先准备好了一个场景,很可能是以前发生过的故障,但新成员没经历过,老成员也忘了的事故。主持人需要随着问题的展开而提供更多的信息,甚至要扮演成其他团队成员来回签问题。因为虚构的场景不一定是完善的,所以主持人需要对过程中的干扰因素进行说明、干预。
- 破坏真的东西,并修复它们。
- 当有多数据中心部署的系统时,可以将流量从一个系统中切走,将该实例作为练习使用。
- 或者搭建一个小型、但是功能齐全的QA实例,用作培训。
- “一起来摧毁一个搜索集群”:从系统的某一个正常状态出发,慢慢将环境中某个组件逼近瓶颈,通过监控系统观察对上下游的影响。
- 作为一个团队,我们讨论哪些性能特点可能会在过程中受到影响。
- 在实际操作之前,我们进行一次调查,让所有参会的人都提出一个针对系统行为变化的假想和背后的逻辑。
- 具体执行操作,验证之前的假设,并且从罗中说明为什么系统会出现这样的现象。
- 这个团体活动,每个季度会进行一次,有助于在生产环境中发现存在的Bug——有时系统并不像我们想象的那样优雅降级。
- 维护文档是学徒任务的一部分。很多SRE团队要维护一个"on-call学习检查列表"。该列表中包含一系列阅读材料,以及关于系统的各种技术和知识的完整列表。学员必须充分掌握该列表才能进行见习on-call。该学习检查列表对不同的人来说作用也不同:
- 对学员来说
- 这个文档可帮助学员了解运维系统的边界
- 通过学习这个文档,学员可以了解系统的重要组件,以及背后的原因。
- 对导师和管理者来说
- 学员的学习进度可以通过检查列表来反映。
- 学员今天学习的是哪一节
- 哪一节是最让人困惑的。
- 对其他团队成员来说
- 文档成为一种社会契约,只有掌握这个文档的员工才能加入on-call。这个学习检查列表成为一个知识的标准,所有的团队成员都必须符合这个标准。
- 尽快、尽早见习on-call
- 开始时可以安排学员只接收工作时间的警报信息,让他们利用自己的好奇心驱动自己去熟悉警报背后的系统逻辑。
- 在一个警报发生时,学员并不是问题解决的负责人,他们可以亲眼观察故障发展,而不是在事后学习,在故障解决后的某个时机,on-call可以和学员一起讨论背后的处理逻辑和过程。
- 反向见习学员,安排学员成为主on-call,但是资深的on-call成员会在一边观察,让学员独立检查问题,资深SRE可以提供积极的帮助但不能做任何修改操作。
- 紧急警报
- 工单
- 日常运维任务
- 中断任务的SLO,即预期的响应时间
- 排除的中断性任务有多少
- 中断性任务的严重性程度
- 中断性任务的发生频率
- 可以处理某种中断性任务的人有多少
- 什么是“流状态”? flow state是一个软件工程行业内被普遍接受、人尽皆知的理念。“在状态里”可以提升生产力,也可以提升创造性,进入这个状态可以鼓励员工真正地掌握和优化某个他们负责的任务和项目。但是如果有其它事情打断他们,他们就会失去这个状态。所以我们的目标是尽可能让员工工作在这个状态下。
- 认知流状态:富有创造性和参与感。最大化某个成员在这个状态下的时间是非常好的,这个员工将会产生出很强的创造力,成果丰硕。同时这个员工也会更满意自己的工作。不幸的是,很多SRE成员花费了很多时间进入这个状态,但是被各种事情所打断而无法持续导致很沮丧。又或者,这些人没有试着去进入这种状态,而是一直处于不停被打断的模式中。
- 认知流状态:愤怒的小鸟。在SRE环境下,员工在项目工作和中断性工作模式下找到某种平衡一般是更好的。
- 有些工程师把on-call当作是一段时间之内的专职工作,他们追寻问题原因,与其他人协作,在可以明显改善系统整体健康程度的过程中感到极大的满足;
- 有些工程师把on-call当作是中断性任务,紧急警报给他们造成了很大压力,他们可能是在进行项目工作的同时兼职on-call,处理中断任务,这使得他们处于一种不停被打断的工作环境中,压力巨大;
- 当某个SRE去全职处理中断性任务时,中断性任务就不再是中断性的了,处理工单、系统改进、修复问题等突然有了明确的目标、界限,以及清晰的反馈:修复了某个bug,或者是紧急警报不报发生了。之前的项目工作反而是分心的事情了。
- Fred的团队使用随机工单分配系统,某个需要今天处理的工单被分配给了他。
- Fred的同事目前负责on-call,收到了一个紧急警报。发出警报的组件Fred最熟悉,所以这个同事过来咨询。
- 某个用户将某个工单的优先级提高了,这个工单是上周Fred轮值时就在处理的。
- 某个已经持续了三四周的发布到Fred的时候突然出现了问题,Fred需要停下手中的事情检查发布的状态,回滚这个发布等。
- 某个用户过来咨询一个问题,因为Fred为人和善。
- 等等。
- 一般性建议,如果中断性任务的量对一个人来说太高,那么应该增加一个人负责。这个概念同样适用于工单,以及紧急警报。
- on-call,主on-call工程师应该专注于on-call工作,如果他负责一周on-call工作,那么他在这一周应该完全被排除在项目进度之外。如果某个项目非常重要,不能等待一周,那这个人就不应该参与on-call。管理人员不能期望员工在on-call的同时还能在项目上有所进展。
- 工单,如果目前你是随机分配工单给团队成员,请立刻停止。这样做对团队的时间非常不尊重,也和让员工尽可能不被打扰的目标背道而驰。工单应该有全职人员负责,同时保证占用合理的时间。
- 持续性的运维工作,例如变更发布、配置文件修改等,尽可能地让整个团队共同负责这件事。定义一个发布管理者的角色来由on-call和其他中断性任务处理者来承担。
- 负责中断性事务,或者不负责。理想情况下,应完全由on-call工程师负责处理那些中断性事务,非轮值的工程师不应该被搅入其中。
- 实际分析工单。如果工单的根源问题没有人去修复,整个团队不会有任何进展,每个人都会不停地被同样的问题不停地打扰。我们应该定期进行工单与紧急警报的整理会议,在这个会议上应该讨论出现的每一类中断性问题,看是否能够找到根本原因。如果该问题是可以在合理时间范围内修复的,应该暂停临时处理措施,对警报做临时的静音处理,然后去从根源上修复它。
- 尊重自己,也尊重用户。这条格言主要适用于用户产生的中断性任务。如果工单很多,解决方法繁琐,我们可以使用一些策略来缓解这些问题。
- 团队应该为自己的服务设置合理的服务水平。
- 将某些事务推回给客户解决是可以的。
- 第一阶段:了解服务,了解上下文。在嵌入团队的过程中,你的主要工作是清楚地表达团队目前的流程和工任务习惯对于该服务的可扩展性有利或有弊的原因。提醒该团队,日益增加的工单不应该由更多的SRE来处理,只有在系统复杂度上升的时候才会增加新人。寻找该服务可以继续自动化或进一步简化的空间。随着服务规模的扩大,Ops模式下的团队通过增加更多的管理员来解决运维问题,而SRE则相反,他们通过编写软件系统或消除系统瓶颈的方法来解决这个问题。这样,运维一个服务所需的人数不会与服务的负载同步增加。
- 确定最大的压力来源。在你对服务了解足够深刻、可以讨论设计和部署问题之后,应该花一些时间来根据历史上各种服务中断造成团队压力的程度将其排序。需要留意的的,可能存在一些很小的问题,但由于团队的历史和视角问题,却正在给团队带来很大负担。
- 找到导火索。在你确定了该团队现有的最大问题后,下一步就应该关注那些即将要发生的紧急情况。大部分时候,即将发生的紧急情况是以一个新的、没有被设计成自我管理的子系统的形式出现的。其它的来源还包括:
- 知识代沟
- SRE直接参与开发的功能变得越来越重要
- 对“未来的一件大事”的过度依赖,团队成员有时会忽略某种问题长达几个月时间,因为他们相信“马上上线”的新解决方案能够解决该问题。
- 开发团队和SRE都视而不见的警报
- 任何有客户投诉,并且缺乏一个正式的SLI/SLO/SLA的服务
- 任何一个容量规划都是“增加更多的服务器”的服务
- 事后总结中的待办事项仅仅只有“回滚导致服务故障的变更”的服务
- 现有的SRE以“我们什么也不知道,开发者才明白”来应对的关键组件
- 第二阶段:分享背景知识。在了解团队内部动态和找到痛点之后,你应该通过建立一些最佳实践来为改善状况做准备。例如,建立书写事后总结的机制,辨别琐事的来源,确定每个琐事的最佳解决方案等。
- 书写一个好的事后总结作为示范。事后总结体现了团队的集体推理能力,不健康的团队进行的事后总结往往是无效的。一些团队成员可能把书写事后总结看作是一种惩罚,甚至是无用的。在你嵌入一个团队提供指导时,不要去回顾之前的事后总结,并一一评论,这样做对团队没有帮助,还可能推动团队进入防御模式。你应该亲自负责下一次事后总结的书写。你应该与on-call工程师合作写一个非常好的、对事不对人的事后总结。这个文档可以用来向团队解释他们是如何通过永久性修复根源问题而受益的。永久性地修复根源问题长期来看可以减少事故对团队成员的时间的影响。
- 将紧急事件按类型排序。在我们简化的模型中有两种紧急事件:
- 不应该存在的紧急事件,这些紧急事件会导致Ops工作或琐事的发生。
- 其他的紧急事件可能会让on-call成员感到压力巨大,又或者使他愤怒地敲击键盘。这类紧急事件实际上是日常工作的一部分,团队需要通过构建对应的工具来控制压力。
- 你应该将团队遇一以的紧急事件分为琐事的和非琐事的。将这个列表提交给团队并且清晰地解释哪些紧急事件应该被自动化,而其他的紧急事件则是运维服务必须承担的工作。
- 第三阶段:主导改变。为了确保团队在未来可以自我调节,我们需要帮助他们建立一个良好的SRE心理模型。
- 从基础开始。你的第一个目标应该是为团队制定一个服务等级目标SLO。SLO非常重要,因为它对于事故的后果提供了量化分析的依据,同时它也提供了某个流程改变的重要性依据。
- 获取团队成员的帮助。请克制住自己急切的心情,按下面去做:
- 找到一个可以由某个团队成员完成的有价值的工作。
- 清晰地解释这项工作是如何以一个永久的方式解决事后总结中出现的问题的。
- 自己亲自作为代码更改和文档修订的评审者。
- 在两到三个问题上重复这个过程。
- 解释你的逻辑推理过程。随着团队逐渐复原,你需要将注意力放到解决那些造成运维过载的日常决策中去。这个过程中会遇到团队成员的反对,你需要对你的决策进行充分的解释。如果你不解释逻辑推理过程,或者解释得不够充分,就可能会造成团队也形成这种懒惰的风气。所以一定要避免。
- 提出引导性问题。一定要是提出引导性问题,而非指责性的问题。以鼓励别人思考基本理念的方式来提出问题。
- 从技术角度,最好是量化的角度指出团队需要改变的原因。
- 提供一个详细、具体的“改变”作为例子。
- 解释SRE经常采用的“常识”背后的逻辑推理过程。
- 提供可伸缩的方式来解决崭新情况所必需的核心理念。
- 在会议结束后,每个参会者对服务的状态了解程度达到一致。
- 通过将在生产中获取的知识应用到服务中来以便改善服务。
- 详细讨论服务的运维表现
- 将服务的性能与设计、配置或者实现结合起来讨论
- 对于如何解决问题提供建议
- 某某大型事故造成错误预算耗尽
- xxxx事项
- 某某大型事故
- 主要过程与处理措施
- vpn线路丢包率监控:本周报警1次,由上海电信至北京移动机房侧的ipsec vpn丢包,而公网线路并无故障
- 用时约50分钟,手动将ipsec vpn改为gre vpn
- 已经安排对在用ipsec vpn,都预先准备一条gre vpn作为备用,发生故障时采取手动应急切换,以缩短处理时间
- 没有
- 主机AA、主机BB的网卡进、出口流量报警逻辑与阀值进行了调优
- 集群AA预计在下周三实施XXXX维护
- 需要预先切走流量
- 已经有至少2个集群的数据库主机,在每周会触发几次cpu负载高的报警了,目前的cpu利用率均值为50%
- 主机CCC的磁盘空间使用率增加偏快,近一周已经增长了30%
- 指标A
- 指标B
- 新项目DDD下周发布
- SRE团队成员
- 主要的产品负责人
- 有合作关系的产品研发团队
- 那些忙碌却重要的参会者可以通过事先提供个人反馈和引导的方式参加,或者使用事先填写的议程的方式参加
- 项目负责人非常重要,他们要为项目提供一个长期愿景,确保所有的工作都与这个愿景有关,设置正确的工作优先级。
- 标准的“分而治之”的策略很适合用于跨地域项目,将项目拆分成尽可能多的合理大小的部分,努力确保每一个组件都可以被分配给一个小组。
- 只有当团队的目标是提供某个功能或解决某个问题时,才是最高效的。这样确保了团队中的每个人都知道整个团队对他们的期望,并且知道只有该组件完全集成并使用在主项目中,他们的工作才算完成。
- 执行软件工程最佳实践,每一个组件都应该有设计文档并应该在团队内部评审。标准化是很重要的。例如编码风格指南。随着时间推移逐步建立一个最佳实践的集合。
- 当面交流,让项目的领导者亲自与其他成员会面,如果时间和预算都允许,应该组织一个团队会议进行互动。
- 采用一个适合当前项目状态的项目管理方式。不管多么雄心壮志的项目也要从小规模开始,所以项目管理成本应该相应保持较低的水平。随着项目的发展逐渐改变项目的管理方式。如果增长迅速,那么也有必要开展更全面的项目管理。
- 系统的体系结构和跨服务依赖
- 指标的选择、度量和监控
- 紧急事件处理
- 容量规划
- 变更管理
- 性能:可用性、延迟和资源效率
- 许多服务不需要高可靠性和高可用性,可以通过其他方式支持该服务。
- 开发团队的数量总是会超过SRE团队的可支持的数量。
- 文档,SRE对内部的技术与那些被广泛使用的系统提供了开发指南,记录了生产运维中的最佳实践。开发者可以通过遵循这些建议,实现其中描述的方案来提高他们的服务质量。
- 咨询工作,SRE的发布协调工程团队LCE的大部分时间都是与开发团队进行咨询工作。
- 验证该服务符合公认的标准的生产部署方式和运维方式,同时该服务负责人已经准备好与SRE一起工作,利用SRE的知识改进服务。
- 提升服务生产环境的可靠性,并最小化可预见的故障的数量和严重程序。PRR会关注SRE所关注的生产环境的所有方面。
- 参与。SRE管理层首先需要决定具体由哪个SRE团队接管服务,并选择1~3名SRE成立一个临时性的服务接管小组。该小组负责与研发团队对以下事项进行讨论,并就PRR流程、最终目标以及结果达成一致:
- 为该服务建立一个SLO/SLA 。
- 为可能的、为了提高可靠性的破坏性设计变更制定计划。
- 制定交接计划和培训计划。
- 分析。这是一个工作量比较大的阶段。SRE评审者将仔细学习该服务的一切知识,开始对其生产方面的缺陷进行分析。SRE的目标是度量该服务自身的成熟程度,以及SRE最关注的运维方面的情况。他们还会审阅服务的设计文档以及具体实现,以确保遵循生产环境的最佳实践。这个评估过程可以评估该服务对紧急事件响应的需求程度,以及是否具有良好的运维操控性。通常,SRE会在这个阶段专门建立和维护一个PRR检查列表,该列表是基于领域专业知识而专门建立的。检查列表中的项目可能包括:
- 对于服务进行的更新是否立刻影响到系统中大比例的部分?是否合理?
- 服务的依赖是否合理?
- 该服务在连接关键的远程服务时,是否需要较高的网络服务质量?
- 该服务是否会将错误日志发送到中央日志记录系统进行分析?该服务是否报告所有的会造成降级回复,或者会造成最终用户请求失败的特殊情况?
- 所有用户可见的请求失败情况都有度量和监控吗?报警策略是否合适?
- 该检查列表可能还会包括该SRE团队所遵循的运维标准和最佳实践,即使一个功能完善的但是没有遵循该SRE团队的“黄金标准”的服务配置,可能需要重构。
- SRE也会查看最近事故与对应的事故总结,以及列出的待办事项。
- 改进和重构。上一步中的分析工作会形成一系列对于该服务改进的建议,如下:
- 将每个改进建议按照其对服务可靠度的影响而排序,制定一个优先级顺序。
- 与研发团队讨论和协商这些建议,达成一个共识。
- SRE和产品研发团队同时参与,协助对方进行重构,或者实现额外的功能。
- 培训。生产运维的责任通常是由整个SRE团队共同承担的。为了确保整个团队都有所准备,领导PRR的SRE评审者负责对团队的培训,这也包括整理运维服务所必需的文档。
- 设计概述
- 对系统中各种请求的处理流进行深入探讨
- 生产环境部署模式的描述
- 对系统运维各个方面的手动练习
- “接手”服务。该阶段将涉及将各种生产运维职责和所有权逐步转移给SRE,其中包括部分的运维操作、变更管理流程以及访问权限控制等。
- 持续改进。SRE团队必须在面对服务的持续改进的同时维护服务的可靠性标准。随着平时的生产运维,新变更的评审,紧急事件的处理,特别是书写事后总结,以及对于根源问题的分析,该SRE团队逐步加深对系统的了解。这些运维经验会形成一系列的最佳实践,并记录在“生产指南”和其他文档中。
- 设计阶段。越是在服务生命周期的后期,设计决策的纠正成本越高。在设计阶段与SRE合作可以预防未来很多类型的问题或事故的发生。
- 构建和实现。构建阶段涉及生产中的很多方面,例如指标选择和度量,运维和紧急事件中的控制功能,资源的使用率和效率等。在这个阶段,SRE可以通过建议使用现存的类库和组件来影响和优化具体实现,或者直接帮助构建某些控制系统。SRE在这个阶段的参与有助与未运维操作更便利,同时允许SRE在发布之前就获得运维经验。
- 发布。SRE可以帮助实现广泛使用的发布模式和控制系统。发布过程中的平稳有助于保持运维负载很低,同时可以维持在发布之后的发展势头。
- 发布之后。发布时的系统稳定性一般来说可以减少研发团队的优先级冲突问题。研发团队不需要提高服务的可靠性与增加新功能之间进行抉择。
- 从服务脱离。有时候一个服务最终不值得SRE全职管理,这很可能是在发布之后决定的,或者SRE可能曾经参与服务但从未正式接管。因为该服务不能达到预测的使用规模,在这种情况下,SRE早期参与的努力与成果成为该新项目发展失败的整风险的一部分。SRE团队将被重新指派,之前所吸取的经验教训可以纳入新的参与过程中。
- “接手”每个项目需要2~3个SRE,该过程通常持续两到三个季度。
- 由于各个服务中软件实践的不同,每个生产功能的实现方式都不同。为了达到PRR标准,部分新功能通常需要重新实现。
- 虽然通过对常见的服务问题和故障的评审揭示了一定的模式,但并没有办法容易得在其他服务中复制这些修复和改进。如服务过载的处理和数据热点的处理。
- SRE软件工程对于服务的贡献往往是本地的,建立能够通用的解决方案有很多困难。
- 跟随行业趋势,Google内部也在逐步向微服务转变。于是,需要SRE提供支持的数目和SRE需要负责的服务数量都增加了。因为每项服务都有一个基础固定的运维成本,就算是很简单的服务也需要更多的人手。微服务同时意味着部署时间应该较短,这是以前的PRR模型所不可能满足的。
- 招聘合格的SRE很困难,代价也很高。我们一直没有足够的SRE来支持全部服务,且在SRE入职后,他们的培训时间相比一般的研发工程师也更长。
- 最后,SRE这个组织有义务满足数量庞大且不断增长的目前没有SRE支持的开发团队的需求。这个义务促使SRE支持模型的扩展,使其远远超出了原有的概念和模式。
- 最佳实践代码化,将生产环境中运行良好的最佳实践代码化,这样服务可以通过简单地使用这些代码,自然而然地成为“生产就绪”。
- 可重复使用的解决方案,常见并易于共享的技术实现,用于改善可扩展性和可靠性的问题。
- 带有通用控制界面的通用生产操作平台,生产设备的统一接口,统一的运维控制机制,以及统一的监控、日志以及服务配置。
- 更简易的自动化和更智能的系统,通用的控制接口使自动化和智能化达到一个以前不可能达到的水平。例如,SRE可以用一个统一的视图查看关于一次故障的全部相关信息,不用收集和分析来自不同数据源的原始数据。
- 性能指标的度量和选择
- 请求日志记录
- 流量和负载管理的控制系统
- 将商业逻辑用一系列完善定义的语义组件进行组织,可以用标准术语来引用。
- 标准监控维度。
- 请求调试日志的标准格式。
- 管理负载抛弃的标准配置格式。
- 描述一个单一的软件服务器的容量,以及如何判断“过载”的方式,这样可以以一致的方式将度量结果反馈给控制系统。
- 它支持代码结构、依赖关系、测试、编码样式指南等的强合规性测试。这个功能还提高了用户数据的隐私度、测试和安全性的合规性。
- 它个有内置的服务部署、监控和自动化服务。
- 它使得管理大量的服务更容易,特虽是数目暴增的微服务。
- 部署更快:一个想法在数天之内在SRE级别支持的生产环境中全面部署。
- 作为框架实现的一部分内置服务功能。
- “接手”服务更快(通常由一个SRE在一个季度内完成)。
- SRE在管理采用框架构建的服务时的认知负担降低了。
- 灾难预案与演习
- 书写事后总结的文化
- 自动化与降低日常运维负载
- 结构化的、理智的决策
- 确保系统按我们预想的方式应对故障
- 寻找系统中未预料到的弱点
- 寻找其他提高系统鲁棒性的方式来避免事故发生
- 从组织架构层面坚持不懈地对安全进行关注
- 关注任何细节,如果海军的大型潜艇维护
- 冗余容量,如通信行业的移动通信平台
- 模拟以及进行线上灾难演习,如航空业
- 培训与考核,如救生员
- 超乎寻常地关注对细节要求的收集与系统的设计,如军工行业
- 纵深防御,如核工业
SRE Google 运维解密--管理相关推荐
- SRE Google运维解密pdf
下载地址:网盘下载 自动化对Google SRE 的价值 62 自动化的应用案例 63 Google SRE 的自动化使用案例 63 自动化分类的层次结构 64 让自己脱离工作:自动化所有的东西 66 ...
- 《SRE Google运维解密》读书笔记
SRE团队职责: 确保服务可以正常运转,主要方向包括: 可用性改进 延迟优化 性能优化 效率优化 变更管理 (渐进式发布) 监控 紧急事务处理 容量规则与管理 (N+2 模式,google--> ...
- 读SRE Google运维解密有感(一)
第一章读后感 SRE之道的理解:创建软件系统来运行和替换传统的人工操作. 在实际工作中: 1.我们执行重复性的工作,流程话,新建项目需要那些资源,那些账号,那些权限,制作成流程,一个项目来了相关同事按 ...
- 《SRE:Google运维解密》
2019独角兽企业重金招聘Python工程师标准>>> 前言 问世近一年以来,<SRE: Google 运维解密>一书销量累计已两万余册.我想首先感谢各位读者对本书的支持 ...
- 读书笔记(SRE:Google运维解密):第22章 处理连锁故障
连锁故障是由于正反馈循环(positivefeedback)导致的不断扩大规模的故障. 连锁故障可能由于整个系统的一小部分出现故障而引发,进而导致系统其他部分也出现故障.例如,某个服务的一个实例由于过 ...
- 读书笔记(SRE:Google运维解密):第27章 可靠地进行产品的大规模发布
发布协调工程师(Launch CoordinationEngineering,LCE),LCE (a)广泛的经验 (b)跨职能的视角 (c)客观性 好的发布流程具有的一些特征: 轻量级:占用很少的开发 ...
- SRE(运维工程师)成长路上的十本书籍推荐
今天来整理一下自己在SRE成长路线上一些对自己帮助很大的书籍. 更多内容可以关注微信公众号"SRE说" 运维了解和入门的两本书 书籍一:<网站运维:保持数据实时的秘技> ...
- 网络运维与管理2013超值精华本
<网络运维与管理2013超值精华本> 基本信息 作者: <网络运维与管理>杂志社 出版社:电子工业出版社 ISBN:9787121155499 上架时间:2013-8-26 出 ...
- 一文讲透研发,SRE,运维,DevOps 的区别
研发,SRE ,运维是工种,而 DevOps 是体系.如果拿足球来打比方,研发,SRE ,运维对应的就是前锋,中场,后卫这样的位置,而 DevOps 则是诸如 4-3-3 这样的阵型. 研发 也叫研发 ...
最新文章
- 某电力企业数据备份方案解析
- java 技能鉴定_JAVA试题-技能鉴定
- 第二篇 Python图片处理模块PIL(pillow)
- ZYNQ PS端输出不准确时钟供PL使用
- python tkinter计算器实例_Python+tkinter使用80行代码实现一个计算器实例
- 跨链项目Cosmos主网升级提案已开启投票 目前投票率为19.10%
- html js 读取资源文件,使用HTML5和JQuery读取CSV(Text)文件的实例
- 创建loop15设备挂载镜像文件(.img)
- 由MindManager命令构成的实用导图
- 大型网络整体安装与配置解决方案
- 我的世界android制作教程,《我的世界手机版》怎么制作mod制作JS教程图文攻略
- wget 网页爬虫,网页抓取工具
- 机器学习实验——回归预测算法
- 第2章:知识表示--实践:Protégé本体构建
- 【Share Backup】FreeCrawl
- 一次Nginx 502问题解决
- matlab实现简单图形的识别二
- T4 如何去掉图片背景色变成透明
- C语言常用库函数实现(一)_内存拷贝
- 解决客户 IE 浏览器“兼容性视图“设置带来的问题
热门文章
- 掉价最快的手机排行榜_目前掉价最快的三款华为麒麟980旗舰机,最低仅2799元...
- C#利用Invoke和委托实现子线程更新UI(方式1)
- 【English】5.14
- 在Linux0.11实现信号量
- Fremi problem费米问题如何解决
- 证券交易的基本知识-证券交易
- LLVM+Clang编译安装卸载
- MS Enterprise Library 与 Log4Net的比较
- python接收邮件内容启动程序_如何使用Python脚本来处理电子邮件?
- 3500x架构_为什么锐龙5 3500X被称为神U,3大优势当之无愧