第二方法:反馈原则

立即解锁
发布时间: 2025-08-31 00:34:05 阅读量: 22 订阅数: 20 AIGC
PDF

DevOps实践与三步工作法

### 第二方法:反馈原则 在复杂系统的工作中,快速且持续的反馈至关重要,它能帮助我们创建更安全、更具弹性的工作系统。接下来,我们将深入探讨如何在复杂系统中实现安全工作以及反馈原则的具体应用。 #### 1. 复杂系统中的安全工作 复杂系统具有一些显著特征,这使得在其中安全工作面临挑战。 - **难以整体理解**:复杂系统难以被单个人全面理解,其组件紧密相连,系统行为不能仅通过组件行为来解释。例如,Dr. Charles Perrow研究三哩岛部分核熔毁事件时发现,没人能完全理解反应堆在所有情况下的行为或可能的故障模式。当一个组件出现问题时,很难将其与其他组件隔离开,故障会以不可预测的方式迅速蔓延。 - **结果不可预测**:Dr. Sidney Dekker指出,在复杂系统中,重复做同一件事不一定会得到相同的结果。这意味着静态的检查表和最佳实践虽有价值,但不足以有效预防和管理灾难。 由于复杂系统中失败不可避免,我们需要设计安全的工作系统。Dr. Steven Spear提出,满足以下四个条件可以让在复杂系统中的工作更安全: 1. 管理复杂工作,揭示设计和运营中的问题。 2. 集中解决问题,快速构建新知识。 3. 在整个组织内推广新的局部知识。 4. 领导者培养其他领导者,不断提升这些能力。 #### 2. 及时发现问题 在安全的工作系统中,我们要不断测试设计和操作假设,增加信息流动,以更快、更清晰地发现和解决问题。 - **反馈和前馈循环的重要性**:通过在工作系统中创建反馈和前馈循环,我们可以实现这一目标。反馈循环是学习型组织和系统思维的关键部分,它能使系统内的效果相互增强或抵消。 - **制造业的案例**:在制造业中,缺乏有效反馈会导致严重的质量和安全问题。例如,通用汽车弗里蒙特工厂在组装过程中缺乏问题检测和处理程序,导致发动机安装错误、零部件缺失等问题。而高性能的制造运营则具有快速、频繁且高质量的信息流动,能及时发现和处理缺陷。 - **技术领域的应用**:在技术价值流中,缺乏快速反馈也会导致不良结果。例如,瀑布式软件开发项目可能在开发一年后才进行质量反馈,这显然无法及时预防问题。我们的目标是在技术价值流的各个阶段创建快速反馈和前馈循环,包括产品管理、开发、质量保证、信息安全和运营等环节。具体操作包括创建自动化的构建、集成和测试流程,以及使用遥测技术实时监控系统组件的运行情况。 反馈类型和周期时间各不相同,Elisabeth Hendrickson在2015年的DevOps企业峰会上提出,软件开发中有六种反馈类型: | 反馈类型 | 描述 | | ---- | ---- | | 开发测试 | 程序员是否编写了预期的代码 | | 持续集成和测试 | 编写的代码是否违反现有代码预期 | | 探索性测试 | 是否引入了意外后果 | | 验收测试 | 是否获得了所需的功能 | | 利益相关者反馈 | 团队是否朝着正确方向前进 | | 用户反馈 | 是否生产出用户喜爱的产品 | 这些反馈类型的周期时间呈同心圆状,开发者端的反馈循环最快,而客户或用户反馈周期最长。 以下是反馈循环的简单流程图: ```mermaid graph LR A[开发测试] --> B[持续集成和测试] B --> C[探索性测试] C --> D[验收测试] D --> E[利益相关者反馈] E --> F[用户反馈] ``` #### 3. 集中解决问题以构建新知识 仅仅检测到意外情况是不够的,当问题出现时,我们必须集中资源解决问题。 - **丰田安灯系统的启示**:丰田的安灯绳是这一原则的典范。在丰田制造工厂,每个工作中心上方都有一根安灯绳,当出现问题时,工人和经理会拉动它。团队领导会立即响应解决问题,如果在规定时间内无法解决,生产线将停止,整个组织会共同参与解决问题,直到找到成功的对策。 - **安灯系统的必要性**:集中解决问题能防止问题向下游蔓延,避免工作中心引入新错误,以及防止同一问题反复出现。虽然这种做法与常见管理实践相悖,但它能促进学习,防止关键信息丢失,尤其在复杂系统中至关重要。 - **技术领域的应用**:在技术价值流中,我们需要创建类似安灯绳的机制和相应的响应文化。例如,Excella公司使用Slack机器人作为隐喻的安灯绳,当有人输入“andon”时,机器人会通知团队。他们还通过“if/this/then/that”集成在办公室触发红灯、彩灯和跳舞“管”人等,以增强效果。 在Excella公司的案例中,他们通过安灯绳实验取得了显著效果: - 最初,周期时间约为三天,随着安灯绳的使用,周期时间有所下降。但停止使用后,周期时间上升至近十一天。 - 调整安灯绳的触发条件后,安灯绳拉动次数大幅增加,周期时间相应减少。最终,他们将安灯绳实验推广到整个产品,并使用“安灯:红色代码”报告重大问题。 此外,安灯绳还促进了心理安全,团队成员更愿意发言并提供创造性解决方案。这表明集中解决问题能有效防止局部问题演变为全局问题,降低周期时间并提高协作效率。 以下是安灯系统解决问题的流程图: ```mermaid graph LR A[问题出现] --> B[拉动安灯绳] B --> C[团队停止工作] C --> D[确定解决路径] D --> E[解决问题] E --> F[恢复工作] ``` 通过以上方法,我们可以在复杂系统中更好地实现安全工作,利用反馈原则及时发现和解决问题,提升工作质量和效率。后续我们还将探讨如何将质量控制更靠近源头以及优化下游工作中心等内容。 ### 第二方法:反馈原则 #### 4. 推动质量控制靠近源头 在应对事故和事件时,我们的处理方式可能会无意中导致不安全的工作系统持续存在。在复杂系统中,增加更多的检查步骤和审批流程实际上会增加未来失败的可能性。因为将决策制定推离工作执行地,不仅会降低决策质量,还会增加周期时间,削弱因果之间的反馈强度,降低从成功和失败中学习的能力。这种情况在较小和不太复杂的系统中也能看到,当自上而下、官僚化的命令控制式系统失效时,通常是因为“应该做事的人”和“实际做事的人”之间的差异过大,缺乏足够的清晰度和及时性。 以下是一些无效质量控制的例子: - **手动任务自动化不足**:要求其他团队完成繁琐、易出错的手动任务,而这些任务本可以由需要执行工作的团队轻松自动化并按需运行。 - **远程审批不合理**:要求远离工作的忙碌人员进行审批,使他们在缺乏对工作或潜在影响的充分了解的情况下做出决策,或者只是进行橡皮图章式的批准。 - **文档管理低效**:创建大量细节存疑的文档,这些文档在编写后不久就会过时。 - **批量审批延误**:将大量工作推给团队和特别委员会进行审批和处理,然后等待回复。 为了解决这些问题,我们需要让价值流中的每个人在日常工作中发现并解决自己控制范围内的问题。具体操作如下: 1. **强化质量责任**:将质量和安全责任以及决策制定推向工作执行地,而不是依赖远方高管的批准。 2. **利用同行评审**:对提议的变更进行同行评审,以确保变更能按设计运行。 3. **自动化质量检查**:尽可能自动化通常由质量保证或信息安全部门执行的质量检查。让开发人员能够按需进行测试,而无需请求或安排测试运行,使开发人员能够快速测试自己的代码并将变更部署到生产环境中。 通过这些措施,我们真正使质量成为每个人的责任,而不是某个单独部门的责任。信息安全不仅仅是信息安全部门的工作,可用性也不仅仅是运营部门的工作。让开发人员分担他们所构建系统的质量责任,不仅能改善结果,还能加速学习,这对通常离客户最远的开发人员来说尤为重要。 #### 5. 优化下游工作中心 在20世纪80年代,可制造性设计原则旨在设计零件和流程,以便以最低成本、最高质量和最快流程创建成品。例如,设计形状不对称的零件以防止装反,设计螺丝紧固件以防止过度拧紧。这与以往只关注外部客户而忽视内部利益相关者(如制造人员)的设计方式有所不同。 精益定义了两种我们必须为之设计的客户: | 客户类型 | 描述 | | ---- | ---- | | 外部客户 | 最有可能为我们提供的服务付费的人 | | 内部客户 | 紧随我们之后接收和处理工作的人 | 根据精益理念,我们最重要的客户是下游的下一个环节。为他们优化工作需要我们体谅他们的问题,以便更好地识别阻碍快速顺畅流程的设计问题。 在技术价值流中,我们通过为运营而设计来优化下游工作中心,将运营的非功能需求(如架构、性能、稳定性、可测试性、可配置性和安全性)与用户功能置于同等重要的地位。通过这样做,我们在源头创建质量,形成一套可编码的非功能需求,并将其主动集成到我们构建的每个服务中。 以下是优化下游工作中心的流程图: ```mermaid graph LR A[明确外部和内部客户需求] --> B[设计考虑运营非功能需求] B --> C[将非功能需求集成到服务] C --> D[创建源头质量] ``` #### 6. 总结 创建快速反馈对于在技术价值流中实现质量、可靠性和安全性至关重要。我们可以通过以下几个方面来实现: 1. **及时发现问题**:不断测试设计和操作假设,在技术价值流各阶段创建快速反馈和前馈循环,利用自动化流程和遥测技术。 2. **集中解决问题**:当问题出现时,立即集中资源解决,防止问题恶化和蔓延,促进学习和协作。 3. **推动质量靠近源头**:让价值流中的每个人承担质量责任,自动化质量检查,减少无效审批流程。 4. **优化下游工作中心**:为运营设计,将非功能需求与用户功能同等对待,在源头创建质量。 通过遵循这些反馈原则,我们能够更好地应对复杂系统中的挑战,提高工作效率和质量,创建更安全、更具弹性的工作系统。在实际工作中,我们可以根据这些原则,结合具体情况,灵活运用各种方法和工具,不断优化我们的工作流程和系统。
corwn 最低0.47元/天 解锁专栏
买1年送3月
点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

史东来

安全技术专家
复旦大学计算机硕士,资深安全技术专家,曾在知名的大型科技公司担任安全技术工程师,负责公司整体安全架构设计和实施。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看

最新推荐

应用性能分析与加速指南

### 应用性能分析与加速指南 在开发应用程序时,我们常常会遇到应用运行缓慢的问题。这时,我们首先需要找出代码中哪些部分占用了大量的处理时间,这些部分被称为瓶颈。下面将介绍如何对应用进行性能分析和加速。 #### 1. 应用性能分析 当应用运行缓慢时,我们可以通过性能分析(Profiling)来找出代码中的瓶颈。`pyinstrument` 是一个不错的性能分析工具,它可以在不修改应用代码的情况下对应用进行分析。以下是使用 `pyinstrument` 对应用进行分析的步骤: 1. 执行以下命令对应用进行性能分析: ```bash $ pyinstrument -o profile.htm

基于TensorFlow的聊天机器人序列到序列模型实现

### 基于TensorFlow的聊天机器人序列到序列模型实现 在自然语言处理领域,聊天机器人的构建是一个极具挑战性和趣味性的任务。TensorFlow为我们提供了强大的工具来实现序列到序列(seq2seq)模型,用于处理自然语言输入并生成相应的输出。本文将详细介绍如何使用TensorFlow构建一个聊天机器人的seq2seq模型,包括符号的向量表示、模型的构建、训练以及数据的准备等方面。 #### 1. 符号的向量表示 在TensorFlow中,将符号(如单词和字母)转换为数值是很容易的。我们可以通过不同的方式来表示符号,例如将符号映射到标量、向量或张量。 假设我们的词汇表中有四个单词

Podman容器构建与卷管理实战

### Podman 容器构建与卷管理实战 #### 1. Podman 构建容器镜像 当 `podman build` 完成对 `Containerfile` 的处理后,它会提交镜像。这使用的代码与 `podman commit` 相同。Podman 会将根文件系统中的新内容与 `FROM` 指令拉取的基础镜像之间的所有差异打包成 TAR 文件,同时提交 JSON 文件,并将其作为镜像保存在容器存储中。 **提示**:使用 `--tag` 选项为 `podman build` 创建的新镜像命名,这与 `podman tag` 命令的作用相同。 以下是自动化构建应用程序的步骤: 1. *

机器人学习中的效用景观与图像排序

# 机器人学习中的效用景观与图像排序 ## 1. 引言 在机器人的应用场景中,让机器人学习新技能是一个重要的研究方向。以扫地机器人为例,房间里的家具布局可能每天都在变化,这就要求机器人能够适应这种混乱的环境。再比如,拥有一个未来女仆机器人,它具备一些基本技能,还能通过人类的示范学习新技能,像学习折叠衣服。但教机器人完成新任务并非易事,会面临一些问题,比如机器人是否应简单模仿人类的动作序列(模仿学习),以及机器人的手臂和关节如何与人类的姿势匹配(对应问题)。本文将介绍一种避免模仿学习和对应问题的方法,通过效用函数对世界状态进行排序,实现机器人对新技能的学习。 ## 2. 效用函数与偏好模型

机器学习技术要点与应用解析

# 机器学习技术要点与应用解析 ## 1. 机器学习基础概念 ### 1.1 数据类型与表示 在编程中,数据类型起着关键作用。Python 具有动态类型特性,允许变量在运行时改变类型。常见的数据类型转换函数包括 `bool()`、`int()`、`str()` 等。例如,`bool()` 函数可将值转换为布尔类型,`int()` 用于将值转换为整数类型。数据类型还包括列表(`lists`)、字典(`dictionaries`)、元组(`tuples`)等集合类型,其中列表使用方括号 `[]` 表示,字典使用花括号 `{}` 表示,元组使用圆括号 `()` 表示。 ### 1.2 变量与命名

ABP多租户基础设施使用指南

### ABP多租户基础设施使用指南 在当今的软件应用开发中,多租户架构越来越受到青睐,它允许一个软件应用同时服务多个租户,每个租户可以有自己独立的数据和配置。ABP框架为开发者提供了强大的多租户基础设施,让开发者能够轻松实现多租户应用。本文将详细介绍如何使用ABP的多租户基础设施,包括启用和禁用多租户、确定当前租户、切换租户、设计多租户实体以及使用功能系统等方面。 #### 1. 启用和禁用多租户 ABP启动解决方案模板默认启用多租户功能。要启用或禁用多租户,只需修改一个常量值即可。在`.Domain.Shared`项目中找到`MultiTenancyConsts`类: ```cshar

工程师招聘:从面试到评估的全面指南

# 工程师招聘:从面试到评估的全面指南 ## 1. 招聘工程师的重要策略 在招聘工程师的过程中,有许多策略和方法可以帮助我们找到最合适的人才。首先,合理利用新老工程师的优势是非常重要的。 ### 1.1 新老工程师的优势互补 - **初级工程师的价值**:初级工程师能够降低完成某些任务的成本。虽然我们通常不会以小时为单位衡量工程师的工作,但这样的思考方式是有价值的。高级工程师去做初级工程师能完成的工作,会使组织失去高级工程师本可以做出的更有价值的贡献。就像餐厅的主厨不应该去为顾客点餐一样,因为这会减少主厨在厨房的时间,而厨房才是他们时间更有价值的地方。初级工程师可以承担一些不太复杂但仍然有

人工智能服务实现:从框架搭建到AI模型部署

# 人工智能服务实现:从框架搭建到AI模型部署 在当今的技术领域,微服务架构和人工智能模型的结合正变得越来越重要。本文将介绍如何搭建基于Spring Cloud的微服务架构,并将训练好的TensorFlow深度学习算法模型部署到Java微服务中。 ## 1. 相关技术简介 ### 1.1 Apache Dubbo和Dropwizard Apache Dubbo最初在阿里巴巴的电子商务平台中进行探索和演进,已被证明具备处理复杂业务高并发挑战的能力。2016年12月15日,Dubbo进入Apache孵化器,并更名为Apache Dubbo。目前,许多中国领先的移动互联网公司,如阿里巴巴、京东、

Dynamo+Python进阶秘籍:自定义节点开发技巧,自动化效率翻倍秘诀

![基于Dynamo的点云BIM自动化建模.rar](https://media.licdn.com/dms/image/C4E12AQFqv5IrT4_sSg/article-cover_image-shrink_600_2000/0/1638549971486?e=2147483647&v=beta&t=YPJ-r3jaoW0dMpcpA9yDu8PYakbEAhA07niW1kpxC-o) # 摘要 本文系统探讨了Dynamo与Python集成开发的核心机制与实践方法,涵盖从基础编程原理到高级自动化任务的全流程。文章详细解析了Python脚本节点的执行流程、数据模型映射机制及异常调

Salesforce性能与应用架构解析

### Salesforce 性能与应用架构解析 #### 1. Apex 面向对象编程 Apex 是一门功能完备的面向对象编程语言,它让开发者能够运用继承、多态、抽象和封装等特性来开发易于管理、扩展和测试的应用程序。很多开发者最初是通过触发器接触到 Apex 的,而触发器本质上是一种线性的代码组织结构。它会按顺序从第一行执行到最后一行,不具备标准的面向对象编程能力,既不能实现接口,也不能继承类。尽管将触发器中的逻辑提取到一组类和方法中是最佳实践,但这并非强制要求,仍有许多触发器代码未遵循此最佳实践。 许多开发者直到遇到更复杂的场景时,才开始使用 Apex 的面向对象功能。运用这些功能有助