团队规模和流程的关系
- 个人开发者不需要流程
- 超过一个人的团队就需要协作
- 随着团队规模上升,就需要团队合作
项目流程
传统的瀑布模型
- 需求阶段:每个人都有自己的想法,团队决策需要一个过程
- 开发阶段:多人/多端协作开发,每个人都有自己的安排,相互配合需要一个流程
- 测试阶段:产物怎么交付,测试怎么开展,BUG怎么修复都需要流程
- 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
- 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要流程 优点: 直观表达,定义了标准的研发阶段,以流程为本,理想化模型
敏捷开发

- 以小团队快速迭代
- 团队成员之间合作更加紧密
- 以人为本,和用户沟通
The Scaled Agile Framework(SAFe)简介
- SAFe是一套管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
现代的Srum
- 敏捷教练 Scrum Master
- 产品负责人 Scrum Owner
- 敏捷团队 Scrum Team
- 敏捷发布火车 Agile Release Train
团队的流程

流程详解
需求阶段
- 工作的起点
1. MVP(minimum viable product, 最小化可行产品思想)
- 站在用户的角度思考
- 收集用户反馈,快速迭代
2. 四象限法

开发阶段
1.后端开发发展方向
(1)云原生下的开发
- 传统虚拟机 在物理主机中虚拟出多个虚拟机,每个虚拟机有自己的操作系统,运维人员负责维护和交互,每个虚拟机中都要安装相应的依赖环境
- 容器化 容器是在操作系统中虚拟出来的 通过cgroup,namespace和UnionMount等技术来实现了容器之间的隔离,同时容器只有很低的开销 应用和其依赖作为一个整体,打包成镜像交付 (2)云原生下的架构
- 单体架构 多个模块之间共同组成一个服务,服务体量较大 多个模块之间直接调用,不需要RPC通信 服务整体扩缩容量 多人开发一个代码仓库,需要充分集成测试
- 微服务架构 各个功能在不同的服务中 不同模块之间需要进行RPC通信 不同模块可以独立扩缩容 每个服务的代码仓库仅由少部分人维护 (3) 云原生下的IDE
- 开发环境逐渐云原生化
- Faas, PaaS等等技术,让开发逐渐从本地IDE向线上转变
- 从入职到电脑搭建完一套完整的开发环境需要很久,通过WEB IDE等技术,环境未来将会开箱即用
2. 团队的分支策略
3. 代码规范、自测和文档
- 代码规范 养成良好的注释习惯,超过三个月的代码,自己都会忘记 不要有魔法数字,魔法字符串 重复的逻辑抽象成公共方法 正确使用IDE的重构功能,防止修改错误
- 自测 单元测试 功能环境测试 测试数据构造
- 文档 大型改造需要有技术设计文档,方案评审 好的接口文档能更方便的和前端进行沟通
测试阶段
测试金字塔
- 功能环境 需要一个能模拟线上环境进行开发和测试 环境之间能够隔离,不影响其他功能开发和测试
- 集成环境 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷
- 回归环境
确保新的功能不对老的功能产生影响
回归测试一般会借助自动化测试脚本

发布阶段

- 发布负责人 负责按照计划执行发布 需要通知各个相关人员发布进展 观察各个服务的发布状态,及时处理异常
- 变更服务的相关RD 按照上线checklist检查服务的日志,监控,响应上线过程中的告警 对于自己负责的改动,在小流量或是预览环境进行功能验证 执行发布计划中的其他操作(如线上配置,数据处理)
- 值班同学 发布过程中的监控和告警需要特别关注,如果有异常需要立即判断是否由变更引起 如果有变更引起的告警或者用户反馈,需要及时终止发布
各种发布模式
(1) 蛮力发布
(2) 金丝雀发布
(3) 滚动发布
(4) 蓝绿发布
(5) 红黑发布

- 没有强大发布系统和服务器资源不足的公司一般使用蛮力发布或者金丝雀发布
- 有强大发布工具和服务器资源充足的公司一般使用滚动发布和蓝绿发布
运维阶段
1. 关键动作
-
止损
-
修复
-
定位
-
周知
流程怎么优化

DevOps解决方案
- 代码管理
- 自动化测试
- 持续集成
- 持续交付
全流程自动化
- 通过效能平台串联各个阶段 需求发起研发流程的自动化 写代码,测试环境部署的自动化 自动化测试触发和报告分析 发布过程可观察融入流程
- 减少无价值的等待 分析整个流程的耗时,计算真正产生价值的时间 不断优化流程,让有价值的流程时间占比上升
总结
这节课的主要内容就是向我们阐述团队合作中项目开发的各个流程流程,首先为我们介绍了几种常见的开发流程模型,然后介绍到敏捷开发的思想,接下来就是介绍开发流程的各个阶段,以及实例分享,最后介绍了如何优化流程。