A. 运维体系 — SLA理论体系

概述:SLA,是服务供应商与客户之间的服务等级协议,它定义了服务供应商应保证的服务质量,以及在服务不达标情况下的服务赔偿。SLA在定义上又细分为SLI、SLO与SLA。

  • SLI,服务质量指标,服务的某项质量的一个具体的量化指标。
  • SLO,服务质量目标,服务的某项SLI的具体目标值,或者目标范围。
  • SLA,服务质量协议,描述在服务不达SLO情况下的后果。

SLA的收益

  • 3.1 增强运行态的确定性:SLA可以帮助构建线上运行态的确定性,让产品从“能够正常对外提供服务”跨度到“能主动控制服务状态”

    • 在服务能力明确的基础上,产品能明确自身的短板,能以最优的资源投入产出比提升服务质量。一个简单的例子就是:某服务可用性从99.9%提升到99.99%所需的资源和带来的收益之比,是决定该服务是否应该提供4个9的重要依据。
    • 在服务能力明确的基础上,产品能增强对突发情况的应对能力。合适的SLI指标能帮助产品在故障发生时进行更好的决策,产品有能力在资源不足时去选择舍弃哪些服务。
    • 在服务能力明确的基础上,产品能给用户提供差异化的服务,进而节省成本。Google SRE认为,基础设施服务运维的关键战略就是明确划分服务水平,从而让客户在构建系统时能够进行正确的风险和成本权衡。
  • 3.2 建立用户预期:从用户的视角来看,SLA可以帮助用户建立对服务质量的预期。这可以避免用户对某项服务的过度依赖,甚至会左右用户的技术方案和架构设计。
    • 为了避免用户对服务的过度依赖,Google SRE会保证服务能达到预定义的SLO,但也确保不会大幅超出该SLO,在SLO的可控范围内,SRE甚至会安排计划内的停机,以找出不合理的服务过度依赖,因此我们建议每个产品在周期内试图用光错误预算。
  • 3.3 错误预算
    • 错误预算,可以用来平衡稳定性与创新迭代速度之间的关系。错误预算定义了某个服务在一段时间内的稳定性目标,错误预算是通过1-SLO得出来,对于某个99.99%可用性目标的服务具有0.01%的错误预算。错误预算在Google内部帮助了产品研发部门与SRE之间建立了良好的合作关系,只有该产品在本周期内没有用光这错误预算,才允许进行变更或发布。

SLA实践

  • 4.1 如何描述服务质量?

    • 基于时间的SLO计算

      • 可用性 = 系统正常运行时间 / 统计周期内的总时间
      • 可用性 = 系统达标时间 / 统计周期内的总时间
        • 关键问题就在于如何定义产品不可用。比如ECS在对外的可用性承诺中,不可用包含三种场景:宕机、磁盘不可用、网络不可用。对于服务型的不可用,一个很容易想到的点是请求成功率,这是一个基于产量的指标,这类指标一般通过滚动时间窗口来计算,
        • 比如一天内成功请求的比率。但这个时间窗口越长,越能起到平滑的作用,比如某接口在某天的成功率是99.99%,这一天调用了1亿次,失败了1万次,乍一看99.99%的成功率很高,但可能1万次失败集中在某半小时内,而这半小时确实影响到了用户。因此我们希望这个时间窗口能缩小到秒级或分钟级,我们定义在每个小时间片内的成功率要求,如果达标则认为该时间片可用,
  • 4.2 如何梳理产品的服务指标?
    • LESS IS MORE:指标要少而精
    • 客户视角/系统边界:一个平台常常拥有比较清晰的客户界面或系统边界,可以屏蔽掉内部的复杂逻辑。
      • 对于一个WEB应用,最值得关注的是UI界面。比如页面的完整度,加载延迟,ajax请求成功率等等;
      • 对于一个后端服务,最值得关注的就是API服务。比如搜索业务域,内部系统错综复杂,但是搜索对外提供的服务,比如给导购,主搜提供的服务,都集中在tisplus与tpp应用中,因此首先需要关注tisplus与tpp的服务能力。
    • 故障视角:从故障视角,我们能理出业务域内最核心的服务。集团每个BU都有严格的故障等级定义,我们需要知道哪些服务不可用会引发自身BU或其他关联BU的故障。
    • 依赖视角:在分布式环境下,整个系统被拆分成越来越多的子系统,每个子系统又被其他若干子系统依赖或依赖于其他子系统。在这种环境下,依赖的服务能力会直接或间接的影响到产品自身对外的服务能力,因此产品需要去关心依赖对自身的服务能力,强依赖也往往需要保证更高的SLO。
  • 4.3 有哪些常见的服务指标?
    • 黄金指标-延迟/成功率

      • 延迟:延迟是常见的一项性能指标,可以针对延迟设置SLO,比如99.9%的延迟在10ms内,这是对用户的直观感受,非常有意义。
      • 流量:QPS也是经常关注的一项监控指标,但是QPS是由用户行为决定的,我们不能针对QPS设置一个SLO,但是QPS跟延迟是有相关性的,QPS的升高很大程度上也会引起延迟的升高。
      • 错误:错误是一项常用的可用性指标,错误又可以分为显式失败(例如HTTP的500),或隐式失败(例如业务侧的错误码),产品可以细分不同的错误码建立不同的SLO目标。
      • 饱和度:饱和度用以描述服务的容量水位,比如CPU利用率。但是从用户侧来看,饱和度是服务端行为,并不能直接通过饱和度描述服务对用户的影响,同时与QPS类似,饱和度的升高也会体现在延迟上。
    • 性能:SLA相比于传统监控的不同点,在于更关注指标长期的变化。性能SLO,能帮助我们对比服务更新前后的状态变化,比如新的版本或架构升级,是不是让系统运行更快更稳定了?每个产品都可以根据自身特性来定义性能SLO,常见的性能指标有:
      • 响应时间。比如ConfigServer 99.9%的客户端查询响应时间;
      • 容量。容量是服务端的服务能力,测量可能需要依靠压测等手段,比如MQ Broker 支持100万并发链接请求;
      • 实效性。比如Diamond 99.9%配置推送延迟,比如ConfigServer 99.9%数据变更推送延迟;
    • 可用性:可用性是最常提及的服务指标,常见的是成功率/错误率,与运行时间。
      • 成功率/错误率。成功率/错误率在上文黄金指标中已有讲述;
      • 可用时间。在基于时间的SLO计算模型下,实际上SLO就是按照可用时间运算的,因此产品只需要关心什么情况下产品不可用,可用时间这项数据会在周期性计算SLO时自动聚合得出。
    • 可靠性:可靠性常常是针对存储一类产品而说的,更细致的又可以分为数据准确性、数据完整性、数据一致性、数据可访问性等等。
  • 4.4 如何选择指标数据源?
    • 客户端:SLA是对客户承诺的服务能力,因此从客户端获取指标数据是最有意义的。由于接入成本大,一般采用采样的方法
    • 服务端:服务端的指标数据是必不可少的,也是产品负责人最关心的一部分数据,当服务端数据异常时,很大可能性就是产品服务出问题了。
    • 巡检/探针:巡检/探针既可以直接探测前端,又可以探测后端的服务,完全模拟用户侧的请求。
  • 4.5 如何度量指标?
    • 监控SLI的要求

      • 实时性。监控数据的实时性,是秒级延迟,还是分钟级?
      • 准确性。数据度量的精度,精确到几位小数?是精确值还是数据拟合?指标数据能否真实反映服务能力?
      • 完整性。数据完整度如何,有无数据缺失?异常数据如何处理?
      • 稳定性。在灾难场景下,监控自身能否正常工作?
    • 使用AliMetrics:常见的监控方式有三类:Metrics、Log以及Tracing
    • 自定义监控
  • 4.6 如何设置度量的精度?
    • 服务的不同SLO目标要求,应该以不同的精度去度量。比如对于月可用性要求99.99%的服务来说,不可用时长4.32min,如果按照1min的采样周期,则只要出现5个坏点就达不到SLO,这样的采样精度是明显不够的。又比如对于要求99.9%的服务,如果按照5s的采样周期,又会过于频繁而增加计算及存储的成本。在集团内我们一般要求有四个九的可用性,同时考虑到太长的采样周期可能会错失一些峰值现象或毛刺,因此我们推荐使用5s、15s、30s、60s这几类周期,具体视产品情况而定。
  • 4.7 如何设置服务质量的目标?
    • 软件系统不需要一味追求100%的可用性,如果以按月的SLO周期计算,99.999%与100%的可用性只相差25.9秒,对于最终用户来说,99.999%与100%的可用性可能并没有实际的区别,过于追求可用性,可能会带来成本的急剧上升,同时也会限制产品的创新速度。那么设置多少的可行性目标呢,这其实并不是一个技术问题,而是一个产品问题,产品需要回答好以下几个问题:

      • 基于用户的使用习惯,服务可用性要达到什么程度才能让用户满意?
      • 如果这项服务的可用性不够,用户是否有其他替代的选择?
      • 服务的可用性高低,会不会影响用户对这项服务的使用模式?
  • 4.8 如何以SLO驱动服务质量提升?
    • SLA不是静态文档,不是一成不变的。实际生产过程中,业务需求、技术环境、工具流程等都在不断更新迭代,因此实际应用中,SLA应该包括一个修改框架,定期审查更新SLA,并长期追踪SLA的变化。
    • 在明确上述问题的基础上,我们就能总结出一套SLA的常规玩法:
      • 梳理平台架构,理清系统架构与边界;
      • 确定平台的服务能力指标,透传指标;
      • 度量指标,形成当前服务能力基线;
      • 为每项SLI定义目标SLO,监控跟踪SLO;
      • 记录并公示SLI与SLO;
      • 迭代不断优化,不断微调提升SLO;

A. 运维体系 --- SLA理论体系相关推荐

  1. 云智慧陆兴海:统一运维体系为数字政府建设保驾护航

    2023年4月6日至7日,由长春市人民政府.吉林省政务服务和数字化建设管理局主办的<2023长春数字经济发展论坛>在长春隆重举行. 本次论坛旨在探讨数字经济的理论创新.实践探索和发展路径, ...

  2. 阿里云周宇:神龙计算平台智能运维体系建设

    嘉宾 | 周宇   整理 | 吴林锋 出品 | CSDN云原生 2022年4月12日,在CSDN云原生系列在线峰会第1期"SRE与智能运维峰会"上,阿里云高级技术专家.神龙计算平台 ...

  3. 金融业运维体系指南-嘉为蓝鲸

    为加快数字经济建设,推动金融高质量发展,金融行业正大力推进数字化转型.IT运维管理作为企业运营中的环节,在数字化浪潮下,应主动出击,进行数字化能力升级,发挥自己独特的价值. 银保监会下发的<关于 ...

  4. 大搜车面向复杂业务场景的研发运维体系治理实践

    图:大搜车基础设施部负责人李同刚 2021年12月10日,在云上架构与运维峰会上,大搜车集团基础设施部负责人李同刚分享了大搜车在研发运维体系治理的一些实践.以下是他的演讲实录: 一.业务介绍 1.汽车 ...

  5. 蚂蚁金服互联网IT运维体系实践

    摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本 ...

  6. 【转载】拿来即用的企业级安全运维体系搭建指南

    拿来即用的企业级安全运维体系搭建指南 本文我们将针对如何解决问题来进行详细说明,从问题入手,通过纠正或者培养良好的运维安全习惯,搭建完整的运维安全技术体系. 作者:林伟壕来源:DBAplus社群| 本 ...

  7. 阿里巴巴超大规模 Kubernetes 基础设施运维体系介绍

    简介:ASI 作为阿里集团.阿里云基础设施底座,为越来越多的云产品提供更多专业服务,托管底层 K8s 集群,屏蔽复杂的 K8s 门槛.透明几乎所有的基础设施复杂度,并用专业的产品技术能力兜底稳定性,让 ...

  8. 阿里巴巴超大规模Kubernetes基础设施运维体系解读

    简介:ASI:Alibaba Serverless infrastructure,阿里巴巴针对云原生应用设计的统一基础设施.ASI 基于阿里云公共云容器服务 ACK之上,支撑集团应用云原生化和云产品的 ...

  9. 高效研发运维体系构建的流程和方法论

    简介: 云计算产品大多都会与云原生发生关联,云原生正在重塑整个软件的生命周期.但到底什么是云原生?云原生带来的最大技术创新和未来机会是什么?围绕云原生,是否可以构建出一套云上的开发&运维体系, ...

  10. 阿里巴巴研究员刘国华:阿里巴巴智能运维体系建设

    导语:在2018年开放数据中心峰会(Open Data Center Summit 2018)开幕式上阿里巴巴研究员刘国华发表了<阿里巴巴智能运维体系建设>的主题演讲.演讲中,刘国华介绍了 ...

最新文章

  1. 函数指针(就做个笔记)
  2. openstack-Mitaka Glance上传镜像报错
  3. linux重启查看日志及历史记录 查询原因
  4. 总分 Score Inflation
  5. 对mysql进行压力测试_mysqlslap对mysql进行压力测试
  6. Mysql语句改成Oracle语句的区别
  7. 五、Mysql中JSON类型
  8. CRM运维工程师主要职责
  9. Mobileye/博世/大陆智驾份额「持续下滑」,本土供应商「起势」
  10. 推荐一款比较不错实用的在线文本比较工具
  11. 【大话设计模式】模式二 :工厂模式
  12. 用这几款软件轻松自动识别图片文字,快码住
  13. 麒麟3.2安装微软雅黑字体
  14. 单点登录(java)
  15. 如何用python爬视频_如何使用python网络爬虫抓取视频?
  16. printf用法之打印二进制,八进制,十进制,十六进制
  17. ipad触摸测试软件,平板电脑屏幕灵敏度测试:iPad系列最出色
  18. 怎么用燃尽图高效搞定项目进度监控?看老原这一篇就够了!
  19. 为什么很多人开始反对996了?
  20. JS时间戳、日期互相转换

热门文章

  1. 网口压线顺序_水晶头压线顺序
  2. PicGo+Github图床配置
  3. tplink错误代码51215_TPLINK路由器设置后访问受限
  4. 秋天下载中心统计系统 入门安装
  5. Kaldi中文语音识别:各种开源的已经训练好的语音识别模型
  6. 规则三度体磁力异常 matlab,三维强磁性体的勘探方法及勘探系统与流程
  7. 查看alexa世界排名
  8. 搜索引擎背后的经典数据结构和算法
  9. 2021-09-20 Process finished with exit code -1073741515 (0xC0000135) QT Clion
  10. ubuntu20安装google拼音