从需求到上线全流程 | 青训营笔记

141 阅读3分钟

1.为什么有流程

项目的开发并不是想象中那么简单,如果没有阶段的明确划分,项目很难有条理地进行

项目阶段一般分为:需求、开发、测试、发布和运维

1.1 瀑布模型

最传统的开发模型,各阶段按顺序进行

需求 → 开发 → 测试 → 发布 → 运维

尽管瀑布模型是最为典型的开发模型,但是它的不足也十分明显,项目流程按部就班执行,意味着每个阶段都不能出错(因为不会再返回此阶段),且下阶段必须等到上阶段执行结束后才能开始执行,效率低

1.2 敏捷开发

不是具体的开发模型,而是一种以人为本的开发思想

特点:快速迭代,团队成员之间合作更紧密

IMG_2560(20220517-165828).PNG

2. 有哪些流程

2.1 需求阶段

MVP,Minimum Viable Product(最小化可行产品)思想

站在用户角度思考,收集用户反馈,快速迭代

四象限法

IMG_2564(20220517-172648).PNG

2.2 开发阶段

  • 团队分支策略
  • 代码规范
    1. 良好的注释习惯
    2. 重复的逻辑抽象成方法,减少代码冗余
    3. 变量、方法命名规范
  • 自测
    1. 单元测试
    2. 功能环境测试
    3. 测试数据构造
  • 文档 编写、维护好接口文档,方便与前端进行沟通

2.3 测试阶段

测试伴随开发进行,尽可能早地发现bug

IMG_2565(20220517-173825).PNG

不同环境下进行测试

  • 功能环境
    1. 模拟线上环境
    2. 环境之间能够隔离,不影响其他功能开发和测试
  • 集成环境
    1. 不同人开发的功能合并在一起测试,可能产生缺陷
    2. 迭代发布的功能合并在一起测试,确保发布的所有不能之间不会产生缺陷
  • 回归环境
    1. 确保新功能不会对老功能产生影响
    2. 回归测试一般借助自动化测试脚本

2.4 发布阶段

发布模式

  1. 蛮力发布—— 简单粗暴,直接用新版本覆盖老版本
    • 优点:简单、成本低
    • 缺点:发布过程中服务中断、一旦出问题会影响所有用户
    • 适用场景:测试环境部署、非核心业务服务
  2. 金丝雀发布
    • 优点:用少量用户验证新版本功能
    • 缺点:发布过程中服务中断,有些问题可能在用户量增大时才会出现
    • 适用场景:测试环境部署、非核心业务服务
  3. 滚动发布——每个实例通过金丝雀方式发布,逐步放大流量
    • 优点:发布过程中服务不会中断,充分验证服务功能
    • 缺点:流程复杂、对发布系统有较高要求;发布速度慢;新老版本不兼容时不能使用
    • 适用场景:发布系统能力较强,自动化程度高
  4. 蓝绿发布——把服务分成蓝绿两组,先停止蓝组流量进行升级,只用绿组提供服务;然后只用蓝组提供服务,绿组进行升级,最终两组全部升级
    • 优点:发布速度快、流程简单
    • 缺点:需要一半机器承担所有用户的能力;出问题影响全部用户
    • 适用场景:服务器资源丰富;新老版本不能兼容时,一次性升级到新版

2.5 运维阶段

关键动作:止损、周知、定位、修复

3. 流程怎样优化

将质量保障融入到流程中,将流程自动化 DevOps 代码管理、自动化测试、持续集成、持续交付

IMG_2566(20220518-154129).PNG 全流程自动化

  • 通过效能平台串联各个阶段

  • 减少无价值等待:分析整个流程耗时,计算真正产生价值的时间。不断优化流程,提升有价值时间的占比