第六篇:稳定性之提升团队潜意识【减少人工操作、敬畏之心】

本文主要是介绍第六篇:稳定性之提升团队潜意识【减少人工操作、敬畏之心】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

减少人工操作

减少人工干预是对系统的配置变更、测试、部署等等,对线上的所有的操作尽可能减少人工操作,这里说的人工操作是不建议直接对线上操作,可以通过平台、工具、自动化等可视化的方式操作,这样可以降低操作失误的风险,因为人工操作时掺杂太多不可控因素等等,而这些因素都可能导致操作失误,出现风险,造成事故。

配置变更

对线上配置进行变更,配置包括基础配置(数据库配置、缓存配置)、各种功能开关、其他文案的配置、服务通信地址配置等等。

传统的做法是配置变更可以通过git代码库方式进行管理包括版本,便于旧版版本对比回滚等,传统的做法显然是可行的方法,随着业务的发展,架构不断升级,分布式演化,服务数据量不断增多,那么传统做法的缺点也就是很凸显了,缺点如下:

    ■ 每次配置变更都需要发版部署。
    ■ 时效性不够,原因是发布和部署不是随时可以操作的,需要等窗口期。
    ■ 局限性:无法支持动态调整,例如开关这类配置。
    ■ 容易出错、无法快速回滚。

为了解决上述问题,配置变更演进成了分布式配置中心,其实将手动操作这类东西,做成平台化,平台化的好处是可以通过权限、版本对比、提升时效性,随时可以变更,审核机制,完全吊打传统的方式,这种方式简直太舒服了。同时也降低了人为操作风险的可能性,还可及时回滚,版本比对等等。

业界流行的平台有:Apollo、Nacos、Spring Cloud Config等等

CICD

测试的全流程覆盖最好能做到全自动化,很多测试用例可以沉淀下来,用来做全流程回归,当然这需要系统支持。我也见过太多犹豫QA没精力进行全流程回归而导致问题没有提前发现而产生的事故,所以测试的原则是尽可能自动化和全流程覆盖,让宝贵的人力资源投入到只能人工测试的环节。

部署也是如此,如果所有的部署都需要人工干预,那么整个过程很不爽,成本非常高,并友好,失误概率也很高,一旦操作失误也无法快速回滚,整个部署严重影响线上的稳定性,为了解决这种问题,演进至今的CICD持续集成持续部署,CI有助于降低风险,通过自动处理项目不同开发人员的代码变更实现生产均等化。另一方面,CD使开发人员能够无缝地将集成代码交付给生产,从而提供快速有效的自动化流程,以便在不费工夫的情况下向客户发布新功能和更新。好处如下:

    ■ 卓越的代码质量
    ■ 减少变更和审核时间
    ■ 加速发布周期
    ■ 故障检测和隔离
    ■ 增强测试可靠性
    ■ 减少任务堆积
    ■ 改善平均解决时间

业界流行的平台有:GoCD、GitLab CI、Jenkins等等

举例:很多奶茶店或连锁店,可以快速扩张的原因是将自己餐饮标准化、流程化之后,可以将这些东西下发到各个分店,分店按照配比调料搭配即可,举这个例子是想说明:在架构设计或者变更之类操作,尽可能减少人工操作,将操作的动作标准化、流程化,这样一方面可以降低失误的概率,另外可以降低人力成本,可以去做更多需要人的事情。

小结

减少人工操作是因为人工操作,掺杂太多不可控因素,操作也非标准化,更不提流程化了,这样操作失误的概率大大增加,只有将操作和标准化、流程化这样才能减少操作失误的概率,从而提升稳定性,整体的演进目标是简单化、标准化、流程化、平台化、自动化,基于是标准化和流程化的操作,可以大大降低操作的失误概率。​

敬畏之心

心有敬畏者,方能行有所止,进而行之高远。对于稳定性建设也是如此,而敬畏之心,就是谨言慎行,遵守规章,就像一根底线时刻在警示我们,所谓“千里之堤,溃于蚁穴”,意味着失去敬畏,便有随时面临巨大损失的风险,不论是架构设计、还是做业务、稳定性建设,线上变更都要心存敬畏。

例如:线上环境是运行用户正在使用的系统环境,如果我们粗心的进行变更操作,或意识不到线上环境的重要性,或变更操作可能存在的风险,或可能带来其他的风险,也有可能导致线上机器宕机,出现重大生产事故,让用户受到重大损失,带来不好的体验,敬畏说的是对线上变更操作需要慎重,考虑周全,对所变更的操作合理评估,及可能存在的风险,及预案都考虑到位,应不断回顾检查、梳理反思。

可参考,变更操作的checklist,自我拷问:
  ○ 变更内容是什么?可能带来哪些影响?影响范围?影响用户群体?
  ○ 变更操作路径是否合乎流程规范?
  ○ 变更操作是否需要double-check?
  ○ 变更操作失败是否可以快速回滚?
  ○ 变更操作操作是否可以小范围验证?
  ○ 变更操作内容是否需要先后顺序?
  ○ 变更操作可能需要哪些业务方关注?

再例如:在架构设计使用某些技术或者中间件,如果对该技术不深入了解,包括应用场景、特性、有什么优缺点,或者了解一点,对很多默认的参数配置,不去针对参数了解,直接使用的话,必然将会带来风险,敬畏是就像一根底线时刻在警示我们,通过不断自查、分析、总结,我们能更审慎地控制风险,自我约束,不怕繁琐。

为什么会没有敬畏之心?我认为有以下原因:

  • 不知道自己不知道
  • 知道自己不知道或者不确定,但有试错的资本
  • 人生太顺,没有体验过失败或者挫折

小结

敬畏是一种态度,在架构设计或稳定性建设,我们也要心存敬畏,就像一根底线时刻在警示、不断鞭策我们,通过各种手段和方法,避免风险。海因里希法则告诉我们,一次重大事故的背后必然有一百次未遂事件和几十次轻度损失。这个法则对于我们有两个启示:一是事故的发生必然有其关联起因和先发信号;二是事故发生前一定有足够的提示,我们要及时遏制苗头,防患于未然。

关于稳定性建设之道大纲速览

目录:关于【稳定性建设之道】大纲速览_jackl-CSDN博客从理论、方法、实践多维度阐述稳定性、从全局视野出发、由内到外、从组织到文化,从风险识别到风险预防、从面向失败到主动失败多个阶段,多维度去描述如何打造一个高可用的系统。https://blog.csdn.net/liu_dudu/article/details/122333724?spm=1001.2014.3001.5501

这篇关于第六篇:稳定性之提升团队潜意识【减少人工操作、敬畏之心】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298857

相关文章

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Java操作Word文档的全面指南

《Java操作Word文档的全面指南》在Java开发中,操作Word文档是常见的业务需求,广泛应用于合同生成、报表输出、通知发布、法律文书生成、病历模板填写等场景,本文将全面介绍Java操作Word文... 目录简介段落页头与页脚页码表格图片批注文本框目录图表简介Word编程最重要的类是org.apach

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用