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

106 阅读7分钟

01为什么要有流程

团队规模和流程的关系——为什么要有流程?

个人开发者是不需要流程的,超过一个人的团队就需要协作,随着团队规模上升,会出现全新的问题

实际的例子

复杂项目没有流程会有什么问题:

  • 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
  • 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程
  • 测试阶段:产物怎样交付,测试如何开展,BUG怎么修都需要流程
  • 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
  • 运维阶段:线上问题如何应念响应,处理用户反馈和线上问题需要有流程

瀑布模型——一个最直观的流程模型

  • 工作流程的直观表达
  • 定义了标准的研发阶段
  • 以流程为本,理想化模型

敏捷开发——更现代的模型

  • 以小团队快速选代
  • 团队成员之间的合作更加紧密
  • 以人为本,和用户沟通

SAFe简介——是一套管理框架

  • 精益产品开发
  • 敏捷软件开发
  • 系统思考

现代的 Scrum

  • 敏捷教练 Scrum Master
  • 产品负责人Product Owner
  • 敏捷团队 Scrum Team
  • 敏捷发布火车 Agile Release Train

团队流程

名词解释

  • RD: 研发
  • PM: 产品经理
  • PRD: 需求文档
  • UED: 用户体检设计
  • QA: 测试
  • Scrum1 : 敏捷团队1
  • PO/P1: 优先级0/优先级1
  • Backlng: 规划列表

会议解释

  • 待办事项整理会议 (Backlog Grooming Meeting)产品负责人描述下个迭代希望实现的用户故事,PM 提出需求列表
  • 迭代计划会议(Sprint Planning Meeting)选择迭代的任务和估算工作量
  • 每日站会 (Standup Meeting. 昨天你做了什么? 今天你将要做什么? 你有需要帮助的地方吗?
  • 评审会 (Review Meeting) 小组向产品负责人展示迭代工作结果
  • 反思会(Retrospective Meeting)在每个迭代后召开简短的反思会,总结哪些事情做得好,哪些事情做得不好

02有哪些流程?

需求阶段

不要浪费时间讨论不应该存在的问题

MVP (minimum viable product,最小化可行产品) 思想

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

开发阶段

团队分支策略

  • 多个团队成员之问各自用什么分支开发?
  • 修改之间有冲突怎样解决?
  • 出了问题的代码如何回很到之前版本?

代码规范、自测和文档

代码规范

  • 养成良好的注释习惯,超过三个月的代码,自己都会忘了当时在想什么
  • 不要有魔法数学,魔法字符串
  • 重复的逻辑抽象成公共的方法,不要copy代码
  • 正确使用IDE的重构功能,防止修改错误

自测

  • 单元测试
  • 功能环境测试
  • 测试数据构造

文档

  • 大型改造需要有技术设计文档,方案评审
  • 好的接口文档能更方便的和前端进行沟通

测试阶段

功能环境

  • 需要一个能模拟线上的环境进行开发和测试环
  • 境和环境之问能够隔离,不影响其他功能的开发和测试

集成环境

  • 不同人开发的功能合并在一起测试,相互之问的影响可能产生缺陷
  • 送代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷

回归环境

  • 确保新的功能不对老的功能产生影响
  • 回归测试一般会借助自动化测试脚本

发布阶段

发布负责人

  • 负责按照计划执行发布
  • 需要通知各个相关人员发布进展
  • 观察各个服务的发布状态,及时处理异常

变更服务的相关 RD

  • 按照上线checklist检查服务的日志,监控,响应上线过程中的告警
  • 对于自己负责的改动,在小流量或者是预览环境进行功能验证
  • 执行发布计划中的其他操作 (如线上配置,数据处理等)

值班人员

  • 发布过程中的监控和告警需要特别关注,如爱有异常需要立刻判断是香由变更引起
  • 如果有变更引起的告警或者用户反馈,需要及时中止发布

各种发布模式

蛮力发布——简单粗暴,直接用新版本覆盖老版本

  • 优点 简单,成本低
  • 缺点 发布过程中服务会中断出了问题会影响全部用户
  • 适用 测试环境部著小公司或者非核心的业务眼务

金丝雀发布

优点 相对简单,能够用少量用户验证新版本功能

缺点 发布过程中服务会中断,发现不了随用户量增大才会暴露的问题

适用 测试环境部署,小公司或者非核心的业务服务

滚动发布

优点 发布过程中用户体验不会中断。 可以充分验证服务功能。

缺点 流程较复杂,对发布系统有比较高的要求。 发布速度较慢。 新老版本不兼容的情况不能使用。

适用 发布系统能力较强,可以平滑切换流量。 发布自动化程度高,可以自动滚动

蓝绿发布

优点 发布速度快,流程相对简单

缺点 需要有一半机器承担所有流量的能力,出问题会影响全部用户

适用 服务器资源丰富,新老版本不能兼容的情况,需要一次性升级到新版

红黑发布

优点 发布速度快, 流程相对简单

缺点 对机器数量仍然有要求,需要能扩容一倍,出问题会影响全部用 户

适用 服务器资源丰富,新老版本不能兼容的情况,需要一次性升级到新版

没有强大发布系统和服务器资源不足的公司一般使用蛮力发布或者金丝雀发布,有强大的发布工具和服务器资源充足的公司一般使用滚动发布和蓝绿发布

运维阶段

03 流程怎样优化

怎样让生活更美好

  • 在重视质量的团队,效率往往比较低。

  • 在重视效率的团队,事故往往比较多。

  • 技术的发展会带来质量和效率的同时提高

  • 将质量保障融入到流程,将流程自动化

  • 从需求到上线全流程自动化,同时提高质量和效率

DevOps方案

image.png

  • 代码管理
  • 自动化测试
  • 持续集成
  • 持续交付

效率竖井

  • 流程中实际产生价值的部分很短
  • 大量的时间用在等待和传递上
  • 人和人之间的沟通很慢

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

  • 需求发起研发流程的自动化
  • 写代码,测试环境部署的自动化
  • 自动化测试触发和报告分析
  • 发布过程可观测融入流程

减少无价值的等待

  • 分析整个流程的耗时,计算真正产生价值的时间
  • 不断优化流程,让有价值的流程时间占比上升

总结

√ WHY 瀑布模型 敏捷开发 SAFe

√ WHAT 需求 开发 测试 发布 运维

√ HOW 效率竖井 DevOps 全流程自动化