读SRE Google运维解密有感(二)

前言

这是读“SRE Google运维解密”有感第二篇,第一篇参见

这本书最近又读了几章,结合自己的经历,有些地方真的能感同身受,有些地方也惊叹SRE充满辩证的思想,总之SRE是好一本好书,会给你很大的启发。

充满辩证的思想

本书主要是讲通过SRE思想进行运维体系的构建,除了技术层面以外,我更关注SRE内在充满辩证的思想。

一个辩证的思想是凡事都有两面性,这个道理很简单,大家一听就说“对啊,这不是废话么”,可是面对具体问题的时候,有时候往往做不到这一点。

服务太稳定不好

“什么?我有没有听错”,一直以来运维人员所追求的不就是稳定的服务么?可是谷歌认为“在内部程序质量没有达到一定标准,服务太稳定会产生盲目的依赖”

它举了一个例子,谷歌的chubby锁服务,它是一个基础服务,做为基础组件很多上层服务依赖于它,但是工程师们认为它还是有缺陷,有问题隐患,而在一段时间内它的表现还异常稳定,这样就给调用方一种错觉,这个服务很好,越来越多的服务依赖于它。
于是,谷歌干了一件“不可思议”的事情,对chubby计划内停止服务,捅破这种稳定的假象,让调用方感受到“原来没有那么稳定”,这样减少了对chubby的过度依赖。
这就是一种辩证的思想,我们一直以来都想追求绝对的稳定,没有辩证的看稳定的系统有好处,也会有坏处,它会被外界过度依赖,大家用的很开心,可是这个系统如果还有隐患,造成了稳定的假象,一旦出了问题,可能就是大地震。

琐事也有好处

工作中的琐事是指那么“无聊”,“无效率”,“流程化”的事情,很多人都很抵触,认为它把你的时间碎片化了,使工作没有效率。 SRE有很大篇幅讨论了琐事(toil)的问题,它认为琐事也有好处,比如可以适当的减压,因为做起来不用过多的思考,可以做为创造性工作的一种调剂,从中也能发现需要优化的问题。

当然SRE还是在尽量减少琐事,它的坏处还是多于好处。

少即是多

谷歌追求一种简单,有效的解决方案,比如监控项不是越多越好,它列出监控的4个黄金指标

  • 延迟
  • 流量
  • 错误
  • 饱和度

通过这四个指标,基本可涵盖大部分问题,设置监控项的时候,我们往往生怕漏掉某个项目,设置非常详细的监控策略,这些监控项不一定真的有意义,反而会带来大量的干扰报警。

在代码层面也遵循少即是多的原则,无用的代码,大量冗余的注释都要删除掉,提供简单的api入口,我们常常为了以后的扩展性,预先加入很多冗余功能代码,谷歌反其道而行,鼓励代码的精简。

每一行代码都是负担,所有代码都必须有存在的目的,软件工程少就是多!

自动化的坏处

“什么?我没有听错?自动化会有坏处“,是的,谷歌认为运维自动化是有坏处的。
在运维领域,自动化运维是很多公司的目标,我们认为运维自动化,减少人力,规范操作流程,我们恨不得完全自动化早一天到来,怎么还能有坏处?

自动化的坏处在于,对于一个运维工程师来讲,操作变成黑盒了,他不用明白一个脚本的原理,只要运行就好了,对于他来讲是一件很开心的事,可是带来的副作用是他对于线上的熟悉程度越来越少,他只会执行这个脚本,那么这个脚本一旦出问题,因为缺少对线上环境的了解,无法很快进行修复

体会到了自动化带来的负面作用,谷歌希望使用自洽的方案解决问题,这样才诞生了Borg系统。

故障演习

谷歌会定期举行故障演习,而且他们是真的在线上演练
书中的一个例子是随机的关闭一个数据库实例,看看会有什么问题,然后真的出现了一些问题,影响了业务的访问,通过这次演习他们发现了流程的问题,问题及时修复,避免了隐患。
所以谷歌的思想是:

你是希望系统在星期六凌晨2点,公司大部分同事还在参加黑森林中的团建时出现故障,还是希望和最可靠和最聪明的同事一起仔细监控着他们上周详细评审过的测试时出现故障呢?

结语

SRE不仅是一些运维的方法论,它的辩证看问题的思想值得我们学习。
先写这么多,我得去搬砖了。

本文链接:https://addops.cn/post/sre-read-and-think-2.html

时间: 2024-10-14 06:25:11

读SRE Google运维解密有感(二)的相关文章

读SRE Google运维解密有感(四)-聊聊问题排查

前言 这是读"SRE Google运维解密"有感第四篇,之前的文章可访问www.addops.cn来查看.今天我们来聊聊"问题排查"这个话题,本人到目前为止还在参与一线运维的工作,遇到过很多"稀奇古怪"的线上故障和问题,结合SRE中给出的一些方法,来说说"问题排查"那点事. 排查问题不是玄学 排查出线上问题,并找到根本原因加以解决,是一件很有成就感的事情,曾经有人问过我,"你是怎么想到问题出现在xxx的?又是怎么确认

读SRE Google运维解密有感(三)

前言 这是读"SRE Google运维解密"有感第三篇,之前的文章可访问www.addops.cn来查看.我们今天来聊聊"on call"也就是运维值班制度, 本人到目前为止也还在参与一线运维的值班,对运维值班体系也有一些感悟和心得,再参考SRE的"on call"中的方法来说说这个让运维同学"又爱又恨"的值班. 值班 因为运维人员的工作性质,要时刻保障线上服务的稳定可用,遇到事故问题要第一时间处理,所以很多运维团队的工作必须

读SRE Google运维解密有感(一)

前言 这几天打算利用碎片时间读了一下"SRE Google运维解密"这本书,目前读了前几章,感觉收获颇多,结合自己的工作经历和书中的要点,写一些感悟和思考 SRE 有关SRE我就不多介绍了,中文名字叫站点可靠性工程师,它的由来是google想通过软件工程师来解决复杂运维问题. 它里面有很多有意思的点,比如: 运维工作只能占比工作时间50% 另外50%要开发工具解决问题 SRE和开发工程师会轮岗 这些相关概念网上很多都介绍了,我就不赘述了,我说下一些我感兴趣的点 谷歌神话 谷歌一直在技术

google运维解密

1.运维团队与开发团队的矛盾: 运维追求业务的稳定.开发更关注新功能的添加与版本的快速迭代.但是由于业务更新,有很大可能导致故障.从本质上来说,两部门是矛盾的. deops应该是: 1.对重复性工作有天然排斥感 2.有足够能力快速开发软件系统来代替手工操作 sre团队职责:可用性改进.延迟优化.效率优化.性能优化.变更管理.监控.紧急事务处理.容量规划与管理 2.告警系统: 监控系统不应该要人来去分析告警信息,而是要告诉人要做 3.sre要密切关注系统的性能和资源利用率,进而改进资源利用率,降低

Linux运维 第二阶段 (二)vi编辑器

Linux运维第二阶段(二)vi编辑器 vi编辑器(全屏幕纯文本编辑器) 1.命令模式.插入模式.末行模式 2.   a       在光标所在字符后插入 A       在光标所在行行尾插入 i         在光标所在字符前插入 I       在光标所在行行首插入 o         在光标下插入新行 O       在光标上插入新行 :w       保存 :q        不保存退出 :wq     保存退出 :q!       强制退出 :w 文件名        另存为 3.H

双态运维分享之二: 服务型CMDB的消费场景

近年来,CMDB在IT运维管理中的价值逐步得到认可,使用CMDB的期望值也日益增长.然而,CMDB实施和维护的高成本却一直是建设者们的痛点.那么今天,我们来探讨一下如何通过消费来持续驱动CMDB的逐步完善. 消费驱动是指依托用户消费的收益,吸引研发者.销售者,逐步围绕该产业开展建设并延伸拓展其发展范畴.举例来说,网购的消费方式驱动了电商的蓬勃发展,新型的生活模式驱动了职能家居的研制.借鉴这一思路,我们不妨通过加强CMDB的消费落地,场景化其应用效益,来驱动管理者和使用者更加重视配置管理,从而投入

优云敏捷运维分享之二: 服务型CMDB的消费场景

近年来,CMDB在IT运维管理中的价值逐步得到认可,使用CMDB的期望值也日益增长.然而,CMDB实施和维护的高成本却一直是建设者们的痛点.那么今天,我们来探讨一下如何通过消费来持续驱动CMDB的逐步完善. 消费驱动是指依托用户消费的收益,吸引研发者.销售者,逐步围绕该产业开展建设并延伸拓展其发展范畴.举例来说,网购的消费方式驱动了电商的蓬勃发展,新型的生活模式驱动了职能家居的研制.借鉴这一思路,我们不妨通过加强CMDB的消费落地,场景化其应用效益,来驱动管理者和使用者更加重视配置管理,从而投入

Hadoop运维记录系列(二十三)

最近做集群机房迁移,在旧机房和新机房之间接了根专线,做集群不停机搬迁,也就是跨机房,同时要新加百多台服务器,遇到几个问题,记录一下. 旧集群的机器是centos 6, 新机房加的机器是centos 7. 一.丢包问题 在跨机房的时候,datanode显示很多Slow BlockReceiver的日志 WARN  org.apache.hadoop.hdfs.server.datanode.DataNode: Slow BlockReceiver write packet to mirror to

saltstack 自动化运维神器(二)

文件同步: 其实在做openstack的运维对一些文件的同步其实是很繁琐.有一个配置项或者一行代码的源码文件进行同步.那么现在我们就开始介绍saltstack的文件同步功能 环境说明:操作系统版本:rhel6.5x64 1.master配置同步根目录 在开始saltstack的配置管理之前,要首先指定saltstack所有状态文件的根目录,在master上做如下操作 ## 首先修改master的配置文件,指定根目录,注意缩进全部使用两个空格来代替Tab(python规范)## 确定指定的目录是否