1.为什么有流程
项目的开发并不是想象中那么简单,如果没有阶段的明确划分,项目很难有条理地进行
项目阶段一般分为:需求、开发、测试、发布和运维
1.1 瀑布模型
最传统的开发模型,各阶段按顺序进行
需求 → 开发 → 测试 → 发布 → 运维
尽管瀑布模型是最为典型的开发模型,但是它的不足也十分明显,项目流程按部就班执行,意味着每个阶段都不能出错(因为不会再返回此阶段),且下阶段必须等到上阶段执行结束后才能开始执行,效率低
1.2 敏捷开发
不是具体的开发模型,而是一种以人为本的开发思想
特点:快速迭代,团队成员之间合作更紧密
2. 有哪些流程
2.1 需求阶段
MVP,Minimum Viable Product(最小化可行产品)思想
站在用户角度思考,收集用户反馈,快速迭代
四象限法
2.2 开发阶段
- 团队分支策略
- 代码规范
- 良好的注释习惯
- 重复的逻辑抽象成方法,减少代码冗余
- 变量、方法命名规范
- 自测
- 单元测试
- 功能环境测试
- 测试数据构造
- 文档 编写、维护好接口文档,方便与前端进行沟通
2.3 测试阶段
测试伴随开发进行,尽可能早地发现bug
不同环境下进行测试
- 功能环境
- 模拟线上环境
- 环境之间能够隔离,不影响其他功能开发和测试
- 集成环境
- 不同人开发的功能合并在一起测试,可能产生缺陷
- 迭代发布的功能合并在一起测试,确保发布的所有不能之间不会产生缺陷
- 回归环境
- 确保新功能不会对老功能产生影响
- 回归测试一般借助自动化测试脚本
2.4 发布阶段
发布模式
- 蛮力发布——
简单粗暴,直接用新版本覆盖老版本
- 优点:简单、成本低
- 缺点:发布过程中服务中断、一旦出问题会影响所有用户
- 适用场景:测试环境部署、非核心业务服务
- 金丝雀发布
- 优点:用少量用户验证新版本功能
- 缺点:发布过程中服务中断,有些问题可能在用户量增大时才会出现
- 适用场景:测试环境部署、非核心业务服务
- 滚动发布——每个实例通过金丝雀方式发布,逐步放大流量
- 优点:发布过程中服务不会中断,充分验证服务功能
- 缺点:流程复杂、对发布系统有较高要求;发布速度慢;新老版本不兼容时不能使用
- 适用场景:发布系统能力较强,自动化程度高
- 蓝绿发布——把服务分成蓝绿两组,先停止蓝组流量进行升级,只用绿组提供服务;然后只用蓝组提供服务,绿组进行升级,最终两组全部升级
- 优点:发布速度快、流程简单
- 缺点:需要一半机器承担所有用户的能力;出问题影响全部用户
- 适用场景:服务器资源丰富;新老版本不能兼容时,一次性升级到新版
2.5 运维阶段
关键动作:止损、周知、定位、修复
3. 流程怎样优化
将质量保障融入到流程中,将流程自动化 DevOps 代码管理、自动化测试、持续集成、持续交付
全流程自动化
-
通过效能平台串联各个阶段
-
减少无价值等待:分析整个流程耗时,计算真正产生价值的时间。不断优化流程,提升有价值时间的占比