zoukankan      html  css  js  c++  java
  • 我对 SRE 的理解

    前言

    面试的时候经常问到的一个点就是怎么保障线上的稳定性。这里就按照我的经历结合看过的一些书总结一下。

    SRE 的定义

    SRE 本身就是要用软件工程的方法论来解决运维领域的问题。我觉得作为一个职场人,很多时候我们不能把自己局限在自己职位的视角,要以更多的角度去看问题,才能更好的解决问题。我对自己的定位就一个软件工程从业者。就 SRE 来说,要能从整个软件生命周期来看待运维所面临的问题。
    下面就来说说保障稳定性,主要从以下的方面入手:

    软件生命周期管理

    • SRE 在项目初期就参与进去,在设计阶段就应该把高可用,可扩张性等非功能性需求考虑进去
    • 产品的不同阶段对可用性要求不同,不能一概而论,我们工作的首要目标是辅助业务成功

    CICD

    问题越早发现,解决的成本就越低

    • 做好 CI,并且严格执行,比如单元测试通过率,代码重复率等必须明确标准
    • 将部署和发布解耦,比如金丝雀,灰度,蓝绿等
    • 功能开关

    请求的全生命周期

    也可以称之为端到端的请求监控

    • 客户端打点的监控
    • 后端全链路的服务治理
      • 服务分级,不能太多,google 之前是 4 级,最近看的是 6 级,不是越多越好
      • 防止连锁故障
        • 限流,降级
        • 超时,重试
        • 各级缓存,区分容量缓存和延迟缓存

    标准化

    因为我做的运维工作大部分是从 0 到 1 或者从 1 到 10 的这种,所以对标准化的体会很深。标准先行,是一个很重要的原则,标准定义的对不对、好不好其实不太重要,关键是一定要有,并且要能落地,符合这两点就可以开始做了。然后要尽量符合精益的原则,有问题可以用改。

    监控和告警

    这里说几个点吧

    • 过度追求 100% 的可用性是没有实际价值的,要定义一个产品、研发等所有利益干系人都认可的 SLO
    • 告警要分级,我比较推崇 Google SRE workbook 中的做法。这里面把告警分了三级
    • 所有的告警都应该有人跟进,做得好的话,对应的告警要有工作手册

    还有就是监控分为:

    • 基础设施监控,CPU,内存等
    • 应用监控,流量,延迟,负载,错误四个黄金指标
    • 业务监控

    变更管理

    • 管控规范流程定义,所有变更可监控、可灰度、可回滚
    • 所有变更可追溯、可评审
    • 变更自动化

    自动化

    我觉得对自动化总结的比较好的就是,事情做第一遍的时候手动就搞了,第二遍的时候就开始发现重复性了,要开始想怎么自动化,第三次就要做的时候就要把这个事情自动化掉。

    简单性

    简单性,架构的稳定性一定是对简单性不断追求的结果。软件工程的第一要务就是控制其复杂度。

    事后总结

    无指责的回顾会议

    SRE 的道

    上面说的都是具体方法,也就是术的部分,有句话我印象比较深刻“有道无术,术尚可求也。有术无道,止于术。”就是做事情的时候不要只是去做,而是要明白我们这么做背后的原则,下面是我觉得比较重要的道:

    • 任何一个运维对象的添加,我们都应该谨慎
    • 胆大心细,做事情要敢做并且要思考全面
    • 取势明道优术,要弄清楚具体的背景,方案要能落地
    • 尽量给别人解决问题,不要给别人添加问题
    • 优先做重要的事情,识别出紧急但不重要的事情,想明白怎么做 20% 的事情,解决 80% 的问题。

    链接

    TOP 互联网公司都在用,为什么 SRE 比传统运维更抢手?
    Google SRE books

  • 相关阅读:
    元素定位不到的问题,Timeout,nosuch element,unable locate等
    webpack的安装
    Mysql修改表
    Mysq表的创建和l数据类型
    Mysql的库操作
    面向对象的序列化和反序列化
    类的关键字:final、const
    面向对象接口以及和继承的混合案例
    DOM创建移除替换元素
    抽象类
  • 原文地址:https://www.cnblogs.com/WisWang/p/15388766.html
Copyright © 2011-2022 走看看