从需求到上线全流程
为什么要有流程
- 个人开发者是不需要流程
- 超过一个人的团队就需要协作
- 随着团队规模上升,会出现新的问题
团队规模和流程的关系
传统的瀑布模型
- 工作流程的直观表达
- 定义了标准的研发阶段
- 以流程为本,理想化模型
graph LR;
需求-->开发-->测试-->发布-->运维
敏捷开发
- 个体和互动 高于 流程和工具
- 工作的软件 高于 详尽的文档
- 客户合作 高于 合同谈判
- 响应变化 高于 遵循计划
- 以小团队快速迭代
- 团队成员之间的合作更加紧密
- 以人为本,和用户沟通
SAFe
(The Scaled Agile Framework)
管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
现代的Scrum:
- 敏捷教练
- 产品负责人
- 敏捷团队
- 敏捷发布火车
有哪些流程
需求阶段
MVP思想
- 站在用户的角度思考
- 收集用户反馈,快速迭代
开发阶段
云原生的发展,深刻改变了后端的工作
云原生下的开发
团队的分支策略:
代码规范、自测和文档:
测试阶段
发布阶段
各种发布模式:
蛮力发布
简单粗暴,直接用新版本覆盖老版本
优点:
- 简单
- 成本低
缺点:
- 发布过程中服务会中断
- 出了问题会影响全部用户
适用:
- 测试环境部署
- 小公司或者非核心的业务服务
金丝雀发布
滚动发布
蓝绿发布
把服务分成蓝绿两组,先把蓝组的流量摘掉然后升级,只用绿组提供服务,之后切换全部流量,只用蓝组提供服务,然后升级绿组服务,最终两组全部升级。
优点:
- 发布速度快
- 流程相对简单
缺点:
- 需要有一半机器承担所有流量的能力
- 出问题会影响全部用户
适用:
- 服务器资源丰富
- 新老版本不能兼容的情况,需要一次性升级到新版
红黑发布
总结:
- 没有强大发布系统和服务器资源不足的公司一般使用蛮力发布或者金丝雀发布
- 有强大的发布工具和服务器资源充足的公司一般使用滚动发布和蓝绿发布
运维阶段
流程怎样优化
怎样让生活更美好
在重视质量的团队,效率往往比较低
在重视效率的团队,事故往往比较多
- 技术的发展会带来质量和效率的同时提高
- 将质量保障融入到流程,将流程自动化
- 从需求到上线全流程自动化,同时提高质量和效率
DevOps
- 代码管理
- 自动化测试
- 持续集成
- 持续交付