Files
devops/devopssummary.md
2025-09-17 16:08:16 +08:00

117 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# devops master summary
- 是什么?文化?
- devops实践
- devops工具
- 价值流具体化、可视化?
- 需求拆分技术?
- BA QA/Tester Dev - BDD技术
- 谁决定能不能上线?
# 要点
1. DevOps Mindset? **非谴责**, 高效, 亲和
1. Devops文化转变包含? 亲和, 协作, 信任, 同理心, 不谴责, **单件流** **Trust each OtherBlameless**
1. DevOps方法论: PDCAKAIZEN可视化控制&管理obeya作战室共享信息, 快速决策)
1. 聚焦软件交付的业务价值(持续、顺畅、高质量交付有效价值)
1. 创建一个**拉式部署流水线**
1. 质量内建 + 面向上游从Ops到Dev + **人人对质量负责**
1. 部署脚本:使用同样的部署脚本在不同环境中部署,确保部署流程幂等性
1. 尽早发现问题(编译错误,测试失败,环境问题让提交失败) **fail fast fail cheap**
1. 任何情况下,都不能破坏流程。紧急修复版本也要走 构建/部署/测试/发布的流程,与变更没区别
1. 发布:蓝绿发布,金丝雀发布, AB测试
1. 紧急修复 or 回滚
1. 基础设施重建Auto provisioning - auto maintainance
1. 创建**类生产环境**,环境配置变更应能够触发流水线
确保交付团队能得到应用程序在类生产环境上的不断反馈
1. 创建监控策略collect, store, dashboard, log, monitor
1. 企业治理:
- 符合度(conformance),合规性,关注遵从性,保障,监管,责任,透明管理
- 执行度(performance),绩效,关注业务和价值
1. 验收测试的最佳路径**happy path**
1. 交付过程中,缺陷被发现得越早,修复它的成本就越低 fail fast
1. **拉灯**
紧急变更不应该成为不走变更流程的理由
#### 精益8大浪费 DOWNTIME
| type | description | 解决 |
| ---- | ---- | ---- |
| defect | 缺陷 | poka-yake(防错设计) |
| overproduction | 过度生产 | 可视化,拉动生产 |
| waiting | 等待 | 识别约束,减少等待 |
| non-utilized people | 未充分利用人员 | kaizen学习型组织 |
| transportation | 搬运 | 单件流 |
| inventory | 库存 | 可视化,拉动生产 |
| motion | 动作 | |
| extra processing/feature | 镀金 | 5why |
#### 需求/用户故事原则 INVEST
type | x
-- | --
独立的Independent | 解耦
便于沟通Negotiable | 减少与客户等相关方的沟通成本
有价值的Valuable | 对客户有价值
可估计的Estimable | 开发者便于估计工作量
小的Small | 短小有代表性,敏捷迭代
可测试的Testable | 用户故事已完成的标准,或者说能够确认已完成
#### 个人实践
关于测试
1. 类生产环境作为beta测试环境可以是本地资源
2. 生产中把部署和发布解耦,发布采用金丝雀或蓝绿,蓝绿对资源要求太高,采用金丝雀发布,测试/支撑/业务人员对金丝雀做小批量验证只验证主流程做冒烟。用Prometheus做pod监控。
3. 验证有问题删除新版本Pod验证通过新版本Pod扩展到老版本资源。
```
约束点在哪里? --> 如何改善约束点? --> 突破约束点 -->
^ |
|__________________________________________________|
可能约束点
1. 环境搭建
2. 代码部署
3. 测试的准备和执行
监视缺陷和镀金
```
开发运维“三步工作法”,它旨在阐明指导开发运维的流程与实践的价值观与理念。
### 第一工作法
是关于从开发到IT运维再到客户的整个自左向右的工作流。**为了使流量最大化,我们需要小的批量规模和工作间隔,绝不让缺陷流向下游工作中心**,并且不断为了整体目标(相对于开发功能完成率、测试发现/修复比率或运维有效性指标等局部目标)进行优化。必要的做法包括持续构建、集成以及部署,按需创建环境,严控半成品,以及构建起能够顺利变更的安全系统和组织。
### 第二工作法
是关于价值流各阶段自右向左的快速持续反馈流,放大其效益以确保防止问题再次发生,或者更快地发现和修复问题。这样,我们就能在所需之处获取或嵌入知识,从源头上保证质量。
“必要的做法包括:在部署管道中的构建和测试失败时“停止生产线”;
日复一日地持续改进日常工作;创建快速的自动化测试套装软件,以确保代码总是处于可部署的状态;
在开发和IT运维之间建立共同的目标和共同解决问题的机制
建立普遍的产品遥测技术,让每个人都能知道,代码和环境是否在按照设定的运行,以及是否达到了客户的目标。
### 第三工作法
是关于创造公司文化,该文化可带动两种风气的形成:不断尝试,这需要承担风险并从成功和失败中吸取经验教训;理解重复和练习是熟练掌握的前提。”
“尝试和承担风险让我们能够不懈地改进工作系统,这经常要求我们去做一些与几十年来的做法大不相同的事。一旦出了问题,不断重复的日常操练赋予我们的技能和经验,令我们可以撤回至安全区域并恢复正常运作。
必要的做法包括营造一种勇于创新、敢于冒险相对于畏惧或盲目服从命令以及高信任度相对于低信任度和命令控制的文化把至少20%的开发和IT运维周期划拨给非功能性需求并且不断鼓励进行改进。
### references
- [使用Kubernetes演示金丝雀发布](https://www.cnblogs.com/rexcheny/p/10740536.html)
- [istio完成金丝雀、灰度发布](https://blog.csdn.net/qq_42150559/article/details/96136245)
- [使用原生k8s及helm完成灰度(金丝雀)发布](https://blog.csdn.net/qq_42150559/article/details/97143825)
- [Kubernetes的部署策略你常用哪种](https://www.sohu.com/a/318731931_100159565)
- [写给新人的BA工作说明书](https://www.jianshu.com/p/9efbf1233a7e)
- [DevOps实施从敏捷文化与配置文件的困惑说起](http://www.suphp.cn/yunweipai/35/23835.html)