01 为什么要有流程
1.1 团队规模和流程的关系
1.2 传统的瀑布模型
- 优点:重视流程的公司,不能出现严重问题
- 缺点:流程低效,很多时间都是在等待
1.3 敏捷开发
- 以小团队快速迭代
- 团队之间合作更加紧密
- 以人为本,和用户沟通
1.4 The Scaled Agile Framework(SAFe)
是一套管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
02 有哪些流程
需求阶段
评估需求:
-
MVP(minimum viable product,最小化可行产品)思想
大部分时间做重要但不紧急的事
开发阶段
-
云原生下的开发:
- 容器化技术
- 微服务技术
- WebIDE
测试阶段
-
功能环境
- 需要一个能模拟线上的环境进行开发和测试
- 环境和环境之间能够隔离,不影响其他功能的开发和测试
-
集成环境
- 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷
- 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷
-
回归环境
- 确保新的功能不对老的功能产生影响
- 回归测试一般会借助自动化测试脚本
发布阶段
-
各种发布模式
- 蛮力发布:简单粗暴,直接用新版本覆盖老版本。
- 金丝雀发布:由于金丝雀对瓦斯极其敏感,因此以前矿工开矿下矿洞前,先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来,金丝雀发布由此得名。
- ✔(常用)滚动发布:每个实例都通过金丝雀的方式逐步放大流量,对用户影响小,体验平滑
- 蓝绿发布:常备两个集群,先把流量全部切换到Group 1,升级Group2,然后再把流量全部切换到Group 2,升级Group 1。最终恢复流量。
- 红黑发布:与蓝绿发布类似,但是日常只有一个集群工作,发布时扩容一个集群升级新版本,切换流量后下掉老版本的集群。
运维阶段
- 止损
- 周知
- 定位
- 修复
03 流程怎样优化
DevOps
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
全流程自动化
- 通过效能平台串联各个阶段
- 减少无价值的等待