为什么要有流程?
- 个人开发者是不需要流程的
- 超过一个人的团队就需要协作
- 随着团队规模上升,会出现全新的问题
团队规模和流程的关系:
复杂项目会有什么问题:
- 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
- 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程
- 测试阶段:产物怎样交付,测试如何开展,BUG怎么修都需要流程
- 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
- 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程
更现代的流程模型:
- 以小团队快速迭代
- 团队成员之间的合作更加紧密
- 以人为本,和用户沟通
什么是SAFe:一套管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
现代的Scrum
- 敏捷教练Scrum Master
- 产品负责人Product Owner
- 敏捷团队Scrum Team
- 敏捷发布火车Agile Release Train
人员&名词解释
RD:研发
PM:产品经理
PRD:需求文档
UED:用户体验设计
QA:测试
Scrum1:敏捷团队1
PO/P1:优先级0/优先级1
Backlog:规划列表
会议解释
待办事项整理会议(Backlog Grooming Meeting)
产品负责人描述下个迭代希望实现的用户故事,PM提出需求列表
迭代计划会议(Sprint Planning Meeting)
选择迭代的任务和估算工作量
每日站会(Standup Meeting)
昨天你做了什么?
今天你将要做什么?
你有需要帮助的地方吗?
评审会(Review Meeting)
小组向产品负责人展示迭代工作结果
反思会(Retrospective Meeting)
在每个迭代后召开简短的反思会,总结哪些事情做得好,哪些事情做得不好
有哪些流程?
需求阶段
MVP (minimum viable product, 最小化可行产品)思想
- 站在用户的角度思考
- 收集用户反馈,快速迭代
开发阶段
测试阶段
功能环境
- 需要一个能模拟线上的环境进行开发和测试
- 环境和环境之间能够隔离,不影响其他功能的开发和测试
集成环境
- 不同人开发的功能合并在一起测试,相互之间的影
- 响可能产生缺陷
- 迭代发布的所有功能合并在一起测试, 确保发布的
- 所有功能之间的影响不产生缺陷
回归环境
- 确保新的功能不对老的功能产生影响
- 回归测试一般会借助自动化测试脚本
发布阶段
发布负责人
- 负责按照计划执行发布
- 需要通知各个相关人员发布进展
- 观察各个服务的发布状态,及时处理异常
变更服务的相关RD
- 按照.上线checklist检查服务的日志,监控,响应上线过程中的告警
- 对于自己负责的改动,在小流量或者是预览环境进行功能验证
- 执行发布计划中的其他操作(如线 上配置,数据处理等)
值班同学
- 发布过程中的监控和告警需要特别关注,如果有异常需要立刻判断
- 是否由变更引起
- 如果有变更引起的告警或者用户反馈,需要及时中止发布
各种发布模式-蛮力发布
简单粗暴,直接用新版本覆盖老版本。
优点
- 简单
- 成本低
缺点
- 发布过程中服务会中断
- 出了问题会影响全部用户
适用
- 测试环境部署
- 小公司或者非核心的业务服务
运维阶段
飞机平飞阶段也有可能发生事故
- 用户量增加引起流量洪峰(12306抢票)
- 数据库表的数据量增长导致查询速度变慢
- 内存/进程泄漏导致服务资源不足
- 光缆被挖断