后端通识 - 后端开发职位接触的开发流程 一、什么是PRD?PRDProduct Requirements Document产品需求文档在后端流程里开发正式开始前的输入文档产品写后端干活的依据所处流程顺序非常重要,整个开发过程的流程产品输出 PRD →需求评审会后端参加→ 后端看 PRD 做技术方案、库表设计 → 写接口、业务代码 → 开发、联调、测试PRD 讲业务要做成什么样业务规则、场景、异常、权限后端看完 PRD 输出技术方案文档讲代码、表结构、接口怎么实现。PRD 里面后端重点看什么业务流程正常流程、各种异常场景数据需要哪些字段、字段约束权限哪些角色能查 / 改数据边界判空、重复、状态流转验收标准功能做到算完成后端拿到 PRD 要做的事读 PRD找逻辑漏洞、不合理点需求评审会上提出来根据业务设计数据库表结构设计接口入参、出参、错误码评估开发工时排期写业务代码实现 PRD 描述的全部逻辑自测保证符合 PRD 业务规则简单区分容易混淆文档PRD产品视角做什么业务功能给研发看技术方案文档后端写技术怎么实现接口文档接口入参出参前后端联调用二、PRD的文档结构PRD 完整文档结构后端重点关注标记★文档头部 修订记录文档名称、版本、作者、日期、阅读对象修改历史版本、修改人、修改内容、时间★需求变更看这里避免旧版本开发2. 需求背景与目标业务背景为什么做解决什么痛点业务目标、预期效果需求优先级 P0/P1/P2★名词术语解释★B 端非常重要统一业务概念3. 用户角色与业务场景★角色列表普通用户、管理员、第三方系统用户场景什么角色在什么条件下做什么事4. 业务流程图★后端重中之重主流程正常业务流转分支流程、异常流程状态流转图订单状态、单据状态变更规则★5. 功能需求详情PRD 核心每个功能包含功能简述前置条件正常操作逻辑异常逻辑、边界条件★字段说明字段含义、是否必填、取值范围、长度★权限规则哪些角色可读、可新增、可修改、可删除★6. 原型 / 交互说明原型链接前端重点看后端主要参考业务逻辑。7. 非功能需求★后端必看性能响应时间、并发量安全鉴权、数据加密、防重复提交兼容性依赖外部系统需要调用哪些第三方接口8. 数据需求★需要存储哪些业务数据数据埋点、报表统计要求9. 验收标准★测试 开发依据可验证描述 “做到什么算完成”包含正常场景、异常场景。10. 附录评审记录、待确认问题、参考文档后端读 PRD 重点抓 4 块业务流程图、状态流转、字段与权限、异常边界。PRD 只讲业务库表、接口、SQL、技术方案不由 PRD 写后端自己输出。三、后端开发在需求评审会议上要做到哪些才符合专业素养后端开发需求评审会专业要点核心不纠结 UI 交互聚焦业务逻辑、数据、边界、可行性、风险、排期不要会后才发现问题1、会前最重要很多人忽略提前阅读 PRD、流程图、原型不要开会现场才读。把看不懂、逻辑矛盾、缺少异常场景的点先标记出来。确认名词定义同一个业务名词不能有两种解释。2、会上重点提问方向后端视角①业务逻辑与状态业务主流程是否闭环状态流转是否完整有没有状态跳变漏洞。每种失败、回滚、取消场景业务上希望怎么处理。是否存在并发操作场景多人同时修改同一条数据业务期望结果是什么。②数据相关字段字段类型、长度、枚举值、是否允许为空删除是物理删除还是逻辑删除。唯一性约束哪些字段不能重复。数据来源哪些是用户输入、系统生成、第三方接口返回。③权限不同角色的增删改查权限数据权限能看到哪些范围的数据。④边界和异常高频踩坑点参数为空、超限、重复提交怎么处理。依赖第三方接口超时、失败业务是重试、回滚还是报错。极限场景数据量大、高频调用业务怎么表现。⑤可行性、风险、依赖判断需求能不能实现有无技术卡点。外部依赖哪些系统对方排期是否对齐。识别风险点当众抛出而不是自己扛到开发阶段。⑥排期与优先级P0/P1/P2 确认区分本次迭代做还是后续版本。评估粗略工作量判断迭代周期是否合理不能实现直接说明。3、会上不要做的事不讨论页面长什么样、按钮颜色交给产品、前端。不现场深入聊具体代码、SQL、表结构那是会后技术方案评审干的。不随口答应 “都能做”有风险要明确说。不要沉默有疑问不提会后再提属于后端失职。4、会后动作评审问题、待确认项记录同步文档。拿到确认版 PRD以此作为开发依据。输出技术方案、库表、接口设计再进入开发。四、后端看 PRD 做技术方案、库表设计需要注意什么阅读 PRD 阶段核对业务名词、术语统一消除歧义确认主流程、分支、异常、状态流转闭环。识别并发、重复提交、第三方依赖超时失败等边界场景PRD 缺失需提出确认。理清角色权限区分功能权限与数据权限确认删除逻辑是物理删除还是逻辑删除。提取字段信息确认字段含义、类型、长度、枚举、非空、唯一性约束。确认非功能需求并发、响应时间、安全鉴权、数据埋点、外部系统依赖关系。技术方案设计评估需求技术可行性识别技术风险、依赖风险明确本次迭代范围区分暂不实现功能。梳理业务模块拆分确定调用链路明确内部调用、第三方调用、异步同步场景。设计异常处理、失败重试、回滚策略考虑事务边界避免数据不一致。评估性能预估数据量提前考虑索引、分页、缓存、限流等方案。明确兼容性老数据兼容处理版本变更带来的数据迁移方案。库表设计遵循数据库范式适度冗余平衡查询性能与维护成本。主键、索引合理设计高频查询字段建索引避免冗余索引。状态、枚举字段使用数字编码注释完整预留扩展字段。增加通用字段id、创建人、创建时间、更新人、更新时间、is_deleted 逻辑删除标记。字段类型、长度严格对齐 PRD 业务约束禁止字段长度不足。外键尽量业务代码控制数据库少用外键约束大字段单独拆分。考虑分表可能性预估后期数据膨胀问题。其他技术方案、库表不能脱离 PRD 业务逻辑不额外实现 PRD 未定义功能。方案评审对齐产品、测试记录待确认项需求变更后同步修改技术方案与库表。五、后端开发技术方案的标准格式后端技术方案标准格式1. 文档概述1.1 文档目的1.2需求背景1.3业务范围与迭代边界本次做、不做的内容1.4 阅读对象1.5 术语与缩略词1.6修改记录2. 需求分析2.1 业务简述2.2PRD 核心业务流程2.3核心状态流转2.4非功能需求性能、并发、安全、可靠性2.5 外部依赖系统3. 总体方案设计3.1整体架构 / 调用链路图3.2模块拆分3.3 同步 / 异步方案选型3.4核心设计思路4. 详细方案设计4.1核心业务处理逻辑4.2 异常处理策略、失败重试、回滚、降级逻辑4.3 并发控制方案锁、幂等、防重复提交4.4 缓存设计缓存 key、失效策略、缓存更新4.5时序图 / 流程图5. 数据库设计5.1 库表说明5.2ER 图5.3表结构字段名、类型、长度、注释、默认值、索引5.4索引设计5.5 数据迁移方案如有6. 接口设计6.1内部接口6.2 对外 / 第三方调用接口6.3核心入参、出参、错误码定义7. 风险点与应对措施7.1 技术风险7.2 依赖风险7.3 业务风险7.4对应解决方案8. 工作量评估与排期8.1开发工作量评估8.2联调、自测时间8.3里程碑节点补充里程碑节点主要写什么技术方案评审完成时间库表创建、接口定义完成时间开发编码完成时间单元自测完成时间 验证是否符合PRD需求代码逻辑是否有问题,减少联调、提测发现bug返工时间前后端联调完成时间 (发现真实调用接口格式等问题)提测时间交付测试(将问题流转到测试侧由测试发现缺陷并提交 bug。)bug 修复完毕时间预发布环境验证完成时间复刻生产环境验证版本在接近真实生产条件下功能是否正常。提前发现上线才会暴露的隐藏 bug。确认版本质量达标作为正式上线前最后一道校验关口。正式上线发布时间上线后观察结束时间9. 测试要点9.1 重点测试场景9.2 边界、异常测试点10. 附录10.1参考文档PRD 链接等10.2待确认问题列表六、后端开发进行库表设计的标准文档格式库表设计文档标准格式1. 文档头部1.1 文档名称1.2 版本、作者、日期1.3修改记录版本号、修改人、修改内容、修改时间1.4 术语说明2. 概述2.1 业务说明2.2设计依据PRD、技术方案链接2.3 数据库信息数据库名、字符集、排序规则3. ER 关系图实体之间关联关系图示4. 表结构详情每张表包含表名、表注释| 字段名 | 字段类型 | 长度 | 是否允许为空 | 默认值 | 注释 |5. 索引设计| 索引名称 | 索引类型 | 索引字段 | 索引说明 |6. 枚举说明枚举编码、枚举值、业务含义7. 特殊字段说明逻辑删除、创建时间、更新时间、创建人、更新人等通用字段说明8. 数据迁移脚本如有历史数据处理逻辑、执行 SQL 脚本9. 注意事项锁、分表、大字段、禁止数据库外键等约束说明10. 附录待确认问题、参考文档