这是我参与「第五届青训营」笔记创作活动的第十二天
一、为什么要有流程
1、团队规模和流程的关系
-
为什么要有流程
- 个人开发者是不需要流程的
- 超过一个人的团队就需要协作
- 随着团队规模上升,会出现全新的问题
-
复杂项目没有流程会有什么问题
- 需求阶段:每个人都有自己的想法,无法决策
- 开发阶段:每人有自己的安排,相互配合需要有一个流程
- 测试阶段:产物怎样交付、测试如何开展都需要流程
- 发布阶段:怎样确保发布过程平稳丝滑
- 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程
2、传统的瀑布流行
需求 → 开发 → 测试 → 发布 → 运维
- 工作流程的直观表达
- 定义了标准的研发阶段
- 以流程为本,理想化模型
3、敏捷开发
- 以小团队快速迭代
- 团队成员之间的合作更加紧密
- 以人为本,和用户沟通
4、the scaled agile framework(SAFe)
SAFe是一套管理框架:精益产品开发、敏捷软件开发、系统思考
现代的Scrum:
- 敏捷教练
- 产品负责人
- 敏捷团队
- 敏捷发布火车
二、有哪些流程
1、需求阶段
- 站在用户的角度思考
- 收集用户反馈,快速迭代
2、开发阶段
云原生下的开发
-
传统虚拟机
- 在物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
- 运维人员负责维护和交付虚拟机
- 每个虚拟机中都要安装相应的依赖环境
-
容器化
- 容器是在操作系统中虚拟出来的
- 通过cgroup,namespace和Union Mount等技术实现了容器之间的相互隔离,同时容器只有很低的开销
- 英勇和其依赖作为一个整体,打包成镜像交付
-
单体架构
- 多个模块共同组成一个服务,服务体量较大
- 模块之间直接调用,不需要RPC通信
- 服务整体扩缩容量
- 多人开发一个代码仓库,需要充分集成测试
-
微服务架构
- 各个功能在不同的服务中哦
- 不同模块需要进行RPC通信
- 不同模块可以独立扩缩容
- 每个服务的代码仓库仅有少部分人维护
3、测试阶段
- 功能环境
- 需要一个能模拟线上的环境进行开发和测试
- 环境和环境之间能够隔离,不影响其他功能的开发和测试
- 集成环境
- 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷
- 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷
- 回归环境
- 确保新的功能不对老的功能产生影响
- 回归测试一般会借助自动化测试脚本
4、发布阶段
- 发布负责人
- 负责按照计划执行发布
- 需要通知各个相关人员发布进展
- 观察各个服务的发布状态,及时处理异常
- 变更服务的相关RD
- 按照上线checklist检查服务的日志,监控,响应上线过程中的告警
- 对于自己负责的改动,在小流量或者是预览环境进行功能验证
- 执行发布计划中的其他操作
- 值班同学
- 发布过程中的监控和告警需要特别关注,如果有异常需要立刻判断是否由变更引起
5、运维阶段
关键动作:止损、周知、定位、修复