持续交付2.0 读书笔记(持续更新中...)

一、持续交付2.0

1.1软件工程发展:

瀑布开发 -> 敏捷开发

相比瀑布的线性模型,只有在项目交付后期才能看到可运行的软件,敏捷开发将一个交付计划划分为多个迭代,每个迭代结束都可以得到对应可运行软件。

1.2 DevOps:

是运维与研发参与整个软件生命周期的一组实践,它倡导对构建软件的所有环节(从集成、测试、发布、到部署和基础架构管理)进行全面的自动化和监控,从而达到更快、更频繁地交付更稳定的软件的目的。

1.3 持续交付1.0

可持续地快速发布软件服务。

持续交付1.0
1.4持续交付2.0
持续交付2.0双环模型

探索环:定需求。
验证环:落地功能。

以业务为导向,拆解细化业务问题,快速通过双环进行探索和验证,减少浪费的同时,快速找到业务前进方向。

二、价值探索环

目的:持续识别和定义有价值的假设,借助价值验证环得到数据反馈,快速把握业务前进方向。

4个关键环节:

  • 提问:找出业务目标
  • 锚定:收集信息量化指标,描述期望的结果。
  • 共创:讨论出所有可行的解决方案。
  • 精练:评估出合适方案作为验证环的输入。

为了加快探索环的速度,提出三点工作原则:

  • 分解并快速试错
  • 一次只验证一点
  • 允许失败

共创与精练环节常用的方法:

  • 装饰窗方法: 设计一个用户能看到但并没有实现的新功能入口,快速且低成本地验证用户是否喜欢某个功能及紧迫程度。
  • 最小可行特性法: 产品的从1到N的过程。拆解任务,优先实现用户最迫切的需求。
  • 特区法:在特定小范围用户群内验证某个新功能是否有效,减少无效或者效果不好带来的损失。
  • 定向探索法:对具有特定行为的特定用户群,针对性设计调查方案,探索其行为动机,得出功能的定位或者改进方向。
  • 稻草人法:不开发真实功能,但是先向用户提供该功能等价的真实效果。
  • 最小可行产品法:产品从0到1的过程。以尽可能少的成本开发出产品核心功能,获取用户,并收集真实数据,不断锚定产品的方向和形态。

三、快速验证环

目的:借助各种方法与工具,让质量可靠的解决方案快速到达客户手指,进而收集并分析真实反馈。

4个关键环节:

  • 构建:解决方案落地。
  • 运行:交付产品,为用户提供服务。
  • 监测:收集数据,并对系统进行监控。
  • 决策:将收集的信息与探索环的期望目标进行对比,做出决策,确定下一步方向。

工作原则:

  • 质量内建:生产过程中的每个环节都开展质量保障,而非到后期统一一次大规模检查。
  • 消除等待:提升各环节效率,减少浪费。
  • 重复事物自动化:重复性工作通过优化流程和自动化措施,降低成本。
  • 监测一切:应用健康监测、业务健康监测。

对持续交付2.0双环模型理解:
价值探索环持续高效产出有价值的业务方案,作为输入给到快速验证环。
快速验证环快速高质量完成业务落地,交付用户,并收集有效反馈给到加载探索环。
价值探索环根据反馈信息与之前期望进行对比,做出决策,确认下一步方向。
这个大框架过程中,通过一切手段来保证更快的速度和更好的质量。

四、持续交付2.0的组织文化

企业采纳持续交付需要的文化氛围:安全、信任与持续改善。

五、持续交付的软件系统架构

持续交付2.0能力对系统架构的要求:

  • 可测试性
  • 易部署性
  • 易监测性
  • 易扩展性
  • 对可能失败的处理

常见架构模式:

  • 微核架构:插件化,常用于客户端软件
  • 微服务架构:后台服务软件
  • 巨石架构:单一结构体组成的软件应用

架构改造实施模式:

  • 拆迁者模式:重写一套新框架。
  • 绞杀者模式:通过增加新服务来不断替代遗留系统功能。
  • 修缮者模式:通过迭代,对原有遗留系统进行逐步改造,同时开发新的功能。

六、业务需求协作管理

产品版本周期主要分为:准备期和交付期。分别对应持续交付2.0双环模型的探索环和验证环。
重点讨论如何通过需求拆分带来更好收益,降低固定成本。

传统瀑布软件开发方式是按开发阶段来拆分的,该方案只有等到项目进入全面测试阶段才能得到可运行的软件包。我们应该尽可能从业务视角出发进行需求拆分,将需求按用户故事进行拆分,一批用户故事构成一个可交付的软件,不断迭代为完整用户故事构成的最终软件包。

因此合理拆分显得尤为重要,这里需要遵守INVEST原则:
*independent 用户故事独立

  • negotiable 可协商
  • valuable 用户故事必须是有价值的
  • estimable 必现可估算创建用户故事的工作量
  • small 用户故事必须足够小
  • testable 用户故事必须是可被验证的

常用5大拆分方法:

  • 按路径拆分法: 根据用户使用场景中的不同路径进行拆分,比如:支付场景的微信支付、支付宝支付可以拆分为两个用户故事分别实现。
  • 按接触的拆分法:根据用户与系统间的交互通道进行拆分。比如:移动端、pc端。
  • 按数据类型或格式来拆分:比如统计工具,实现文件上传。这里可以拆分为csv、xml、excel分别为三个上传功能来实现。
  • 按规则拆分:业务规则或技术规则。基础需求->完善需求 递进。
  • 按探索路径拆分:将对陌生事物的实验性探索逐步拆分为不同的探索故事。

团队协作管理工具:

  • 团队共享日历: 团队时间管理。
  • 团队回顾:定期复盘。
  • 可视化故事墙:团队工作状态可视化(todo、doing、done)。
  • 明确完成的定义:明确好交付的标准。
  • 持续集成:团队多人并行开展工作,及时交阶段性交付成果持续集成。
  • 故事验证:测试验收标准。

整体这一套团队协作管理方案其实就是敏捷开发。

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

部署流水线:它是对软件交付过程的一种可视化呈现方式,展现了从代码提交、构建、部署、测试到发布的整个过程,为团队提供状态可视化和及时反馈。

八、利于集成的分支策略

版本控制目的,回答4个W

  • when 什么时间
  • what 修改了什么内容
  • who 谁修改的
  • why 为什么要修改

主流版本管理系统:

  • 集中式:单一的版本管理服务器。
  • 分布式:对个服务器共存,每个人的节点都是一个代码仓库,所有节点都平等。

版本控制系统基本概念:

  • codebase 代码仓库。
  • branch 分支,选定代码基线创建的副本。
  • master/trunk 主干。
  • revision 对应某个分支的一次提交操作。
  • tag 标签,某个分支的某个版本号的一个别名。
  • head 某个分支最新一次提交。
  • merge 合并分支内容。
  • conflict 合入操作引发的冲突

常见分支开发模式:

  • 主干开发,主干发布 基于主干开发,向主干提代码,主干持续作为功能交付分支。
  • 主干开发,分支发布 基于主干开发,向主干提代码,从主干拉出交付功能分支,集成测试并修复bug,发布分支。
  • 分支开发,主干发布 从主干拉出分支进行开发,开发完成对外交付版本时才合入主干分支。

分支模式的演化:

  • "三驾马车”分支模式 开发分支->预发布分支->发布分支
  • Gitflow分支模式 feature->dev->release->master/hotfix
  • GitHubFlow分支模式 checkout feature branch from master -> dev on feature branch -> PR -> merge master

版本发布模式:
项目制发布模式 固定了版本特性数量和质量要求。
发布火车模式 大型项目,多条产品线,各团队对齐交付时间节点。
城际快线模式 固定时间和质量,满足发布条件的特性有多少就上多少。

选择分支模式原则:

  • 分支越少越好,最好只有一条主干。
  • 分支生命周期越短越好,最好在3天内。
  • 在业务允许的前提下,发布周期越短越好。

九、持续集成

持续集成是一种软件开发实践,团队成员频繁地将他们的工作成果集成在一起,每次提交后,自动触发运行一次包含自动化验证集的构建任务,以便能尽早发现集成问题。

持续集成属于一种质量反馈机制。

持续集成过程

六步提交法:

  • 检出最近成功的代码 checkout last build success branch
  • 修改代码 do feature
  • 第一次个人构建 build feature
  • 第二次个人构建 pull origin branch ,merge code ,build again
  • 提交代码到团队主干 PR
  • 提交构建 server build

持续集成获得最大收益,做到如下六点:

  • 主干开发,频繁提交代码。
  • 每次提交都是完整有意义的工作。
  • 提交构建阶段在10分钟内完成。
  • 提交构建失败后,立即修复;且其他人不得在修复之前提交代码。
  • 应该在10分钟内修复失败,否则回滚引起失败的代码。
  • 自动化构建成功后,团队对软件质量比较有信心。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354