这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
工作模型
瀑布模型 重视流程的公司比如银行适用于瀑布模型,因为每个阶段的产物需要经过层层审批。 瀑布模型把需求-开发-测试-发布-运维每个阶段固定严格,实现每个阶段的层层递进 瀑布模型开发效率低 敏捷开发 瀑布模型流程效率低,无法适应需求的快速变化,因此产生了敏捷开发理念。敏捷开发价值观:个体和互动高于流程和工具、工作的软件高于详尽的文档、客户合作高于合同谈判、响应变化高于遵循计划。敏捷开发重视小团队快速迭代,重视客户沟通。 敏捷开发框架
工作流程
需求阶段
- 不要浪费时间讨论不应该存在的问题(不要讨论不合理的需求,砍需求),需求会议
- 评估需求,站在用户角度思考,收集用户反馈,快速迭代(最小可行产品)。车(滑板车、自行车、摩托车、汽车)
- 需求象限(重要但不紧急,重要并紧急、不重要不紧急、紧急但不重要)
- 需求会议
开发阶段
- 云原生技术改变后端开发(docker),服务容器化,应用打包成镜像交付
- 云原生技术带来开发架构变化,以前单体架构服务由多个模块构成,各个模块直接调用,不需要RPC通信;多人开发一个代码仓库,需要继承测试。而云原生技术衍生出微服务架构,各个功能在不同服务中,模块调用使用RPC通信,不同模块可以独立扩容,每个服务代码仓库仅仅需要少部分人维护。
- 分支策略: 多个成员各自用什么分支开发,修改之间冲突怎么解决、除了问题代码如何回退到之前的版本。这些需要团队协调规范
- 代码规范、自测和文档:注释代码,不要使用数字而是使用常量、不要copy同一份代码二十要抽象成公共方法因为可能如果出错你自己都不知道那里修改没到位。
测试阶段
- 单元测试、集成测试、系统测试、UI测试
- 测试环境(功能环境、继承环境、回归环境-确保新的功能不对老的功能产生影响)
发布阶段
- 发布模式(直接发布、滚动发布、蓝绿发布、金丝雀发布)
运维阶段
- 运维阶段出现问题:1. 用户增加引起流量洪峰 2.数据库表的数据量增加造成查询速度变慢 3. 内存、进程泄露导致服务资源不足 4. 光缆被挖断
- 运维阶段发生问题解决流程: 1.止损(尽快恢复服务) 2. 周知(通知相关的人员) 3.定位(发现问题)
流程优化
- DevOps解决方案:代码管理,自动化测试、持续集成、持续交付 CR/CD
后端开发一周
周一
PM和UED准备需求排期和列表
周二
Grooming会议确定本周需求
周三
需求上线,Code Review,修复bug
周四
发布服务,中止发布、回滚和修复代码
周五
不能完成的需求推到下一周,发布完成的需求
Q&A
- Bug and feature:用户把feature提交成bug,这是用户沟通问题
- 业务和基础架构职业选择,偏向商业和基础技术
- 帮别人处理事故
- 融入团队流程和节奏,企业文化和节奏
- 开发和PM关系
- 需求Grooming会议,需求是自己争取或者上级指派
- 抄开源代码度
- 企业文化和价值观
- 字节项目管理经验,敏捷开发经验,敏捷开发最佳实践