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

190 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记

流程&工程化思想

超过一个人的团队就需要协作,随着团队规模上升会出现全新的问题。软件规模的上升,也上软件开发需要更加规范的流程

  • 需求阶段
  • 开发阶段
  • 测试阶段
  • 发布阶段
  • 运维阶段

瀑布模型就是将上述阶段顺序进行。 敏捷开发。 SATe The Scaled Agile Framework.把敏捷的理念扩展成管理的框架。

字节团队的流程

origin_img_v2_32bd6453-cf78-4f0d-b3d2-b29def0bd30g.jpg

  • PM 产品经理
  • RD 研发
  • PRD 需求文档
  • UED 用户体验设计
  • QA 测试
  • SCRUM1 敏捷团队1
  • P0/P1 优先级0/优先级1
  • Backlog 规划列表

会议解释

  • 待办事项整理会议 产品负责人描述下个迭代希望实现的用户故事 PM提出需求列表

  • 迭代计划会议 选择迭代的任何和估算工作量

  • 每日站会

    • 昨天做了什么
    • 今天将要做什么
    • 有什么需要帮助的
  • 评审会 小组向产品负责人展示迭代工作结果

  • 反思会 总结哪些事情做得好,哪些事情做的不好

需求阶段

MVP minimum viable product 收集用户反馈,快速迭代。

开发阶段

容器化

  • 容器是在操作系统中虚拟出来的
  • 通过cgroup、namespace、Union Mount等技术实现容量之间的相互隔离,同时容器只有很低的开销
  • 应用和依赖作为一个实体,打包成镜像交付

微服务架构

  • 各个功能在不同服务中
  • 不同模块通过RPC通信
  • 不同模块可以独立扩缩容
  • 每个服务的代码仓库仅有少部分人维护

测试阶段

  • UI测试
  • 系统测试
  • 集成测试
  • 单元测试

越底层的测试粒度越细,需要越多的数量去覆盖所有场景,越底层的测试能用少量case覆盖大多数场景。 回归测试:确保新的功能不会对老的功能产生影响,一般会借助自动化脚本

发布阶段

  • 蛮力发布
  • 金丝雀发布
  • 滚动发布 √
  • 蓝绿发布
  • 红黑发布

运维阶段

微服务中添加埋点采集Metrics、Logging、分布式Trae等多种数据

流程怎么优化

线上变更审批->测试控制上线->迭代规范->灰度发布->策略管控-> 集成测试->监控告警->自动化测试脚本->黑盒/白盒扫描->手工测试 -->Code Review->单元测试

DevOps

plan->code->build->test->release->deploy->operate->monitor->plan

后端开发的一周

周一

针对上个迭代开发的功能进行演示,反思上个迭代的不足

周二

PO和PM阐述需求的价值,Scrum master和架构师确认需求中包含的技术任何。确认和安排需求

周三

  • 之前开发的需求需上线
  • 对其他人提交的上线工单code review
  • 修复代码bug

周四

  • 之前提交车票的部分功能要发布
  • 发布中发现监控出现异常,终止发布,定位问题
  • 发现问题,回滚修复

周五

  • 按照优先级处理需求
  • 评估需求工作量
  • 将需求的开发和上线时间进行排期

QA

从需求到上线,一开始要熟悉为什么有流程,这就相当于个人成长,对公司的流程为什么是这样,对团队开发的节奏为什么是这样,可以结合敏捷开发的思路理解站会为什么要开,理解之后成为开发的执行者按照流程规范去开发,从用户的需求出发。也需要去思考如何优化流程。

基础架构和业务的选择

更贴近的实现产品、实现目标,让用户直接使用产生商业价值--------业务 有时间提高技术、思考、能力,而不是从商业的角度生产软件--------基础架构 一个更偏向商业,一个更偏向于基础技术

这里贴一个 敏捷宣言

个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划

也就是说,尽管右项有其价值,
我们更重视左项的价值