从需求到上线全流程 | 青训营笔记

101 阅读3分钟

为什么要有流程?

  • 个人开发者是不需要流程的
  • 超过一个人的团队就需要协作
  • 随着团队规模上升,会出现全新的问题

团队规模和流程的关系:

复杂项目会有什么问题:

  • 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
  • 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程
  • 测试阶段:产物怎样交付,测试如何开展,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抢票)
  • 数据库表的数据量增长导致查询速度变慢
  • 内存/进程泄漏导致服务资源不足
  • 光缆被挖断