研发流程
研发流程
从一个几人开发的小公司到几百人规模中几十人研发的团队,感受到单打独斗和团队开发有明显的区别
团队开发有一套系统规范的流程:
1)运营通过市场分析,提出需求
2)产品对需求进行梳理,输出开发需求
3)需求评审、项目排期
4)开发进行需求确认和设计文档
5)测试同学出测试用例
现在特别说明开发阶段:
Git流程:
Dev->test->master->release->prod
1. dev (本地开发)
1.1 从prod切出开发分支
顾名思义,这是开发同学开发时使用的环境,每位开发同学从prod切出代码,在自己的dev分支上干活,提测前或者开发到一定程度,各位同学会合并代码,进行联调。
为每个数据库读写函数和业务逻辑函数编写单元测试
每次修改关键代码后,都要执行一遍单元测试,防止意外错误
1.2 代码提交
在本地触发代码提交(git commit),为保证规范,在大项目中一般会使用提交检测插件,防止开发同学把错误的代码进行了提交。
2. test(测试环境)
也就是我们测试同学干活的环境啦,一般会由测试同学自己来部署,然后在此环境进行测试。bug修复后,需要发版更新测试环境来回归bug。
测试完成,找产品初步验收,无问题,再提发版清单checklist,上预发布。
说明: 开发同学开发自测完成,就可以提交到test,这个过程是有合并权限的,会完成代码的同步和自动部署。在测试站按照测试用例测试(至少要跑完P0用例)完成,再交给测试。
3. master(预发布环境)
测试环境到生产环境的过渡。测试环境可能会受到一些限制,一些流程或者数据没有测试到,就可以在预发布环境进行验证,从而保证产品上线质量。
说明:开发同学代码上预发布,是没有合并权限的,需要交由更高权限的同学做code view 再来合并
3.1 预发布环境和生产环境区别
1)预发环境中新功能为最新代码,其他功能代码和生产环境一致。
2)预发环境和生产环境的访问域名不同。
3.2 上预发布的准备工作
- @运维 数据库/redis/es的DMS操作,dms的操作一般是避开使用高峰期
- @产品 资源管理和权限的配置
- 如果需要做历史数据清洗,需要写明清洗脚本运行
- 发版清单填写
注意事项:
预发布环境一般会连接生产环境的数据库,测试时要注意,以免产生脏数据,影响生产环境的使用。
为了防止上线出问题,一般我们会先在预发布环境部署项目,再观察一下是否能够正常运行
4. release (预正环境)
各个公司的开发/发布流程是有区别的,有些公司是预发布之后直接上灰度,还有的有预正环境,这个其实跟预发布差不多,主要用于发版时,发版的同学从git的release分支拉取代码到prod分支,再来发版
master/release/prod 使用的都是线上数据
说明:开发同学代码上预正环境,同样也是没有合并权限的,需要交由更高权限的同学做code view 再来合并
5. 上线回归
最后是产品验收、测试回归,后端观察线上错误日志和运行情况,如无问题,则填写清单进行回归。
接下来是把整个产品或功能给最终的用户来体验,运行一段时间后,由产品和运营拉取线上数据分析这次需求带来的收益和数据增长情况。
说明:有些情况是先进行灰度发布,针对一小部分用户开放,之后观察运行没有问题,再全量开放。
踩坑经历:
因为预发布/预正是用于开发/测试/内部人员使用,比如后台管理系统,如果到线上对预发布/预正(刚上了新需求)产生的数据进行了操作,那么可能出现意想不到的结果。
因此验证新需求时,客户端和后台管理系统的环境要保持一致。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)