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

34 阅读2分钟

从需求到上线全流程

为什么要有流程

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

团队规模和流程的关系

byteDance9-1.png

传统的瀑布模型

  • 工作流程的直观表达
  • 定义了标准的研发阶段
  • 以流程为本,理想化模型
graph LR;
需求-->开发-->测试-->发布-->运维

敏捷开发

  • 个体和互动 高于 流程和工具
  • 工作的软件 高于 详尽的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划
  1. 以小团队快速迭代
  2. 团队成员之间的合作更加紧密
  3. 以人为本,和用户沟通

byteDance9-2.png

SAFe

(The Scaled Agile Framework)

管理框架

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

byteDance9-3.png

现代的Scrum:

  • 敏捷教练
  • 产品负责人
  • 敏捷团队
  • 敏捷发布火车

byteDance9-4.png

有哪些流程

需求阶段

MVP思想

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

byteDance9-5.png

byteDance9-6.png

开发阶段

云原生的发展,深刻改变了后端的工作

byteDance9-7.png

云原生下的开发

byteDance9-8.png

byteDance9-9.png

byteDance9-10.png

团队的分支策略:

byteDance9--11.png

代码规范、自测和文档:

byteDance9-12.png

测试阶段

byteDance9-13.png

byteDance9-14.png

发布阶段

各种发布模式:

byteDance9-15.png

byteDance9-16.png

byteDance9-17.png

蛮力发布

简单粗暴,直接用新版本覆盖老版本

优点:

  • 简单
  • 成本低

缺点:

  • 发布过程中服务会中断
  • 出了问题会影响全部用户

适用:

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

金丝雀发布

byteDance9-18.png

滚动发布

byteDance9-20.png

蓝绿发布

把服务分成蓝绿两组,先把蓝组的流量摘掉然后升级,只用绿组提供服务,之后切换全部流量,只用蓝组提供服务,然后升级绿组服务,最终两组全部升级。

优点:

  • 发布速度快
  • 流程相对简单

缺点:

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

适用:

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

byteDance9-21.png

红黑发布

byteDance9-22.png

总结:

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

运维阶段

byteDance9-23.png

流程怎样优化

怎样让生活更美好

byteDance9-24.png

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

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

  • 技术的发展会带来质量和效率的同时提高
  • 将质量保障融入到流程,将流程自动化
  • 从需求到上线全流程自动化,同时提高质量和效率

DevOps

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

byteDance9-25.png

全流程自动化

byteDance9-26.png