vlambda博客
学习文章列表

《软件效能提升之美》读书笔记(一)——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. 可运维性的例子


顾翔老师的新书《全栈软件测试工程师宝典》,