这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记
流程&工程化思想
超过一个人的团队就需要协作,随着团队规模上升会出现全新的问题。软件规模的上升,也上软件开发需要更加规范的流程
- 需求阶段
- 开发阶段
- 测试阶段
- 发布阶段
- 运维阶段
瀑布模型就是将上述阶段顺序进行。 敏捷开发。 SATe The Scaled Agile Framework.把敏捷的理念扩展成管理的框架。
字节团队的流程
- 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
从需求到上线,一开始要熟悉为什么有流程,这就相当于个人成长,对公司的流程为什么是这样,对团队开发的节奏为什么是这样,可以结合敏捷开发的思路理解站会为什么要开,理解之后成为开发的执行者按照流程规范去开发,从用户的需求出发。也需要去思考如何优化流程。
基础架构和业务的选择
更贴近的实现产品、实现目标,让用户直接使用产生商业价值--------业务 有时间提高技术、思考、能力,而不是从商业的角度生产软件--------基础架构 一个更偏向商业,一个更偏向于基础技术
这里贴一个 敏捷宣言
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
也就是说,尽管右项有其价值,
我们更重视左项的价值