《软件效能提升之美》读书笔记(一)——DevOps落地
1. DevOps核心解读
1.1. DevOps六大武器
1.1.1. 标准化作业
1.1.2. 快速失败
1.1.3. 快速反应
1.1.4. 高质量高效率
1.1.5. 降低成本
1.1.6. 团队合作
1.2. 自动化
1.3. DevOps生命周期
1.3.1. 持续开发
工作
• 计划
• 编码
工具
• 甘特图
• 燃尽图
其他
• 分支管理
• 单元测试
1.3.2. 持续集成
1.3.3. 持续测试
1.3.4. 持续监控
1.3.5. 持续反馈
1.3.6. 持续部署
1.3.7. 持续运营
1.4. DevOps不适合场景
1.4.1. 传统行业
1.4.2. 政府机关
1.4.3. 金融领域
2. 代码、分支与流水线
2.1. 代码质量
2.1.1. 三要素
范围
成本
时间
2.1.2. 测试驱动开发
测试驱动开发TDD(UTDD)
验收测试驱动开发ATDD
行为驱动开发(BDD)
测试人员与开发人员结对工作
2.2.3 静态扫描
工具
• FindBug
• Sonar
• PMD
代码规约
• Java编码规范
• MISRA C/C++
2.1.4. 代码评审
2.2. 分支与工作流
2.2.1. 环节
版本管理
发布管理
缺陷修复
2.2.2. 工具
Git Flow
• master
• develope
• feature
• release
• hotfix
GitHub Flow
• master
• feature
GitLab Flow
• Master:主分支
• 多Feature:多Feature并行操作
• Test:测试环境
• Production:生产环境
• Pre-Production:预发环境
2.2.3. 使用
小规模团队<=3人 主干开发模式
大团队 APP产品 固定发布时间 GitLab Flow
大团队 基础设施产品 发布时间自由 质量要求高 GitHub Flow
大团队支持多版本 周期长 Git Flow
2.3. 流水线
2.3.1. Jenkins Pipline Job
3. 持续集成与持续交付
3.1. 概念
3.1.1. 集成:部分向整体
3.1.2. 交付:开发->质量、评审
3.1.3. 持续
3.2. 持续集成与持续交付的轻量级实施
3.3. 持续集成与持续交付的误区
3.3.1. DevOps就是CI/CD
3.3.2. 坚守固定的CI/CD
3.3.3. 盲目权威
4. 容器技术在DevOps中的应用
4.1. 无容器化管理
4.2. 持续集成的容器化
4.3. 持续交付的容器化
4.4. 测试环境的容器化
5. 混沌工程
5.1. Chaos Monkey
5.2. 混沌工程的实施要点
5.2.1. 在生产中进行实验
5.2.2. 最小化爆炸半径
5.2.3. 攻防演练
5.3. 混沌工程实施
5.3.1. 建立一个围绕稳定状态行为的假说(Build a Hypothesis around Steady State Behavior)
5.3.2. 多样化真实世界的事件(Vary Real-world Events)
5.3.3. 在生产环境中运行实验(Run Experiments in Production)
5.3.4. 持续自动化运行实验(Automate Experiments to Run Continuously)
5.3.5. 最小化爆炸半径(Minimize Blast Radius)
5.4. 混沌工程的相关工具
5.4.1. ChaosBlade
6. DevSecOps的由来与发展
6.1. 传统软件安全开发体系面临的挑战
6.1.1. 软件开发体系
软件保证成熟度模型(Software Assurance Maturity Model,SAMM)
安全开发生命周期模型(Security Development Lifecycle,SDL)
运维安全保障模型(Operational Security Assurance,OSA)
软件安全构建成熟度模型(Building Security In Maturity Mode,BSIMMl)
6.1.2. 危险
敏捷开发使安全无切入点
高速交付频率让安全无从下手
6.2. 新技术对软件安全开发提出的挑战
6.2.1. 微服务
6.2.2. Dock为首的容器技术
6.2.3. 云原生
6.3. DevSecOps概念的诞生与内涵
6.3.1. 左移交给开发人员
6.4. DevSecOps工具
6.4.1. 动态应用安全测试(Dynamic Application Security Testing,DAST)
开源的Zed Attack Proxy (ZAP)
Acunetix WVS
Burpsuite
OWASP ZAP
长亭科技X-Ray
w3af
6.4.2. 静态应用安全测试(Static Application Security Testing ,SAST)
Klocwork
Helix QAC
HCL AppScan
国内的腾讯xcheck
Wukong(悟空)
Coverity
Checkmark FindBugs,
CodeQL
ShiftLeft inspect
CodeSec
6.4.3. 交互式应用安全测试(Interactive Application Security Testing,IAST)
CodeDx
Checkmarx CxIAST
Contrast Secutity
默安LAST
玄镜
VulHunter
6.4.4. 软件成分分析(Software Composition Analysis,SCA)
Synopsys Black Duck
RedRocket-SCA
X-ray
SonatypeIQServer
Dependencies Check
SourceCheck
6.5 典型DevSecOps流程的解读
7. AIOps的行业实践
7.1. AIOps的知识体系
7.1.1. 运维领域知识
行业领域知识
机器学习
7.2. AIOps实施的关键技术
7.2.1. 要素
数据源
大数据平台
计算与分析
算法
机器学习
7.2.2. 数据采集
7.2.3. 数据处理
7.2.4. 数据存储
7.2.5. 数据分析
7.3. AIOps的应用场景
7.3.1. AIOps在运营保障中的应用
异常检测
• 数据源异常检测
• 指标异常检测
• 文本异常检测
故障诊断
• 基于人工故障库故障诊断
• 基于数据挖掘故障诊断
故障预测
故障自愈
7.3.2. AIOps在成本优化中的应用
资源优化
容量规划
性能优化
7.3.3. AIOps在效率提升中的应用
智能预测
智能变更
智能问答
智能决策
8. DevPerfOps初探
8.1. 全链路压测的局限性
8.1.1. 技术难度高
8.1.2. 压测与真实流区分难
8.1.3. 发现问题定位难
8.2. DevPerfOps全流程解读
8.2.1. 代码本地开发测试阶段的DevPerfOps的实践
函数级别并发
• 时间复杂度
• 常数阶O(1)
• 对数阶O(logN)
• 线性阶O(n)
• 线性对数阶(nlogN)
• 平方阶O(n^2)
• 立方阶O(n^3)
• K次方阶O(n^k)
• 指数阶O(2^n)
• 空间复杂度
• 常数阶O(1)
• 线性阶O(n)
• 平方阶O(n^2
接口级别并发
慢SQL
8.2.2. 低码递交阶段的DevPerfOps的实践
单元测试阶段性能测试
接口测试阶段性能测试
8.2.3. 持续集成阶段的DevPerfOps的实践
模块级别的测试性能测试
模块级别的扩缩容测试
模块级别的压力测试
系统集成的性能测试
模块级别的容量测试
模块级别的基准性能测试
8.2.4. 持续发布阶段的DevPerfOps的实践
系统级别的基准性能测试
系统级别的压力测试
系统级别的容量规划
系统级别的扩缩容测试
系统级别故障迁移测试
系统级别的稳定性测试
全链路压测
9. 软件产品的可测试性和可运维性
9.1. 可测试性的例子
9.1.1. 图形验证码
9.1.2. 短信验证码
9.2. 可运维性的例子
顾翔老师的新书《全栈软件测试工程师宝典》,