[devops]持续交付2.0学习笔记

学习笔记

Posted by Ethan on December 17, 2020

持续交付中的“新常态”,VUCA特性

VUCA是Volatility(易变性)、Uncertainty(不确定性)、Complexity(复杂性)、Ambiguity(模糊性)

持续交付

4个核心原则

Do it wrong quickly ,快速试错,获得反馈,调整产品策略

  1. 坚持少做
  2. 持续分解问题
  3. 坚持快速反馈
  4. 持续改进并衡量

价值探索环

探索环的4个关键环节

  1. 提问:通过针对性的提问与讨论,找出团队期望达成的业务目标或者希望解决的业务本质问题。
  2. 锚定:针对该问题进行信息收集,经过分析,去除干扰信息,得到适当的指标项。
  3. 共创:通过深入讨论,找到所有可能的解决方案。他是一个深入理解和验证问题的环节。
  4. 精炼:结合实际情况,进行评估,筛选出最小可行性解决方案或者方案的集合,以作为验证环的输入,等待他的真实反馈,在做价值判断。

对应理解:

  1. 用户故事

  2. 细化目标指标

  3. 目标->方案

  4. 选择,择优

快速验证环

  1. 构建:是指根据非数字化的描述,将解决方案准确的变成达到质量要求且可运行的软件包。
  2. 运行:是指将达到质量要求的软件包部署到生产环境或者交到用户手中,并使之为用户提供服务。
  3. 检测:是指收集生产系统中产生的数据,对系统进行监控,确保其正常运行。同时将业务数据以适当的形式及时呈现出来。
  4. 决策:是指将收集到的数据信息与探索换得出对应的目标进行对比分析,做出决策。确定下一步的方向。

重复的事务自动化

没有什么问题是别人的问题

企业文化,建立这种观念:“没有什么问题是别人的问题”。

价值导向,快速验证,持续学习,度量,改进!

部署流水线原则与工具设计

平台应当具备的基本能力

部署流水线示意图

mermaid 复杂的图还是支持的不好

基础支撑服务协作过程示意图

mermaid 复杂的图还是支持的不好

编译构建管理服务示意图

自动化测试管理服务架构示意图

基础环境管理服务示意图

多组件聚合的部署流水线

个人部署流水线

复杂流水线设计

facebook 分支发布策略 城际快线模式

城际快线模式是指在发布模式三要素中,固定其中的时间质量两个维度,且时间周期相对较短(如一周,甚至一天或更少),针对那些在发布时间点已经达到固定质量标准的特性进行一次发布。

  1. 发布周期间隔短,通常在两周以内。
  2. 负责特性开发的团队可以自己选择搭乘哪列城际快线,不用提前很长时间确定。

这种模式常见于提供互联网服务或saas服务的软件公司。好处在于减少了团队及角色之间的协调成本

每个周日从主干拉取一个发布分支,自动化测试验证通过后,及在内部开放(内网DNS重定向到内部测试)。

运行发现Bug,在主干上修复然后分捡到(cherryPick)发布分支上。发布分支上的代码更新至内部环境,如使用稳定,就向外部发布。

看看就好,别去改现有的分支策略!!!

CICD 速度与质量的权衡

多人同时提交的构建

多人触发构建,代码检查完成,在周期内的中间构建可以取消。

自动化测试策略

可以通过selenium实现页面自动化测试

lint测试、sonar测试,书中缺少

软件配置管理

将一切纳入配置管理

4类制品库

  1. 需求仓库
  2. 代码仓库
  3. 程序包仓库
  4. 环境仓库

不可变的基础设施

当然是容器、K8S啦

灰度发布

金丝雀发布(canary release)。现阶段使用最多的发布方式。

逐步扩展使用比例,例如1%、5%,可以在用户中得到反馈,及时验证该次发布的效果,方便及时修复bug或产品策略。

基本通过功能开关实现。

某一类标签的用户,或者用户的百分比进入灰度。

后端可以根据k8s istio流量管控切换不同的svc。

混沌工程

这个也很重要,书里只有概念,核心就是搞事情!测试生产环境的稳定性。

结尾

书中有价值的内容就这些,大部分都了解,也就不对书籍进行总结了,内容留着后期工作中review自己。