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

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

减少人工操作

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

配置变更

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

传统的做法是配置变更可以通过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

相关文章

Python使用Code2flow将代码转化为流程图的操作教程

《Python使用Code2flow将代码转化为流程图的操作教程》Code2flow是一款开源工具,能够将代码自动转换为流程图,该工具对于代码审查、调试和理解大型代码库非常有用,在这篇博客中,我们将深... 目录引言1nVflRA、为什么选择 Code2flow?2、安装 Code2flow3、基本功能演示

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

MySQL表空间结构详解表空间到段页操作

《MySQL表空间结构详解表空间到段页操作》在MySQL架构和存储引擎专题中介绍了使用不同存储引擎创建表时生成的表空间数据文件,在本章节主要介绍使用InnoDB存储引擎创建表时生成的表空间数据文件,对... 目录️‍一、什么是表空间结构1.1 表空间与表空间文件的关系是什么?️‍二、用户数据在表空间中是怎么

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

Mysql数据库中数据的操作CRUD详解

《Mysql数据库中数据的操作CRUD详解》:本文主要介绍Mysql数据库中数据的操作(CRUD),详细描述对Mysql数据库中数据的操作(CRUD),包括插入、修改、删除数据,还有查询数据,包括... 目录一、插入数据(insert)1.插入数据的语法2.注意事项二、修改数据(update)1.语法2.有

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

Java实现MinIO文件上传的加解密操作

《Java实现MinIO文件上传的加解密操作》在云存储场景中,数据安全是核心需求之一,MinIO作为高性能对象存储服务,支持通过客户端加密(CSE)在数据上传前完成加密,下面我们来看看如何通过Java... 目录一、背景与需求二、技术选型与原理1. 加密方案对比2. 核心算法选择三、完整代码实现1. 加密上

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结