一、项目管理相关
1、流程规范化:立项–>评审–>版本号–>排期–>设计–>开发–>测试–>sit–>uat–>上线。
2、流程节点中每个节点根据情况留档,以备追溯。关键留档文件:需求文档,设计文档(业务架构流程图、数据架构流程图、技术架构流程图),开发文档,测试用例文档,上线方案文档。
3、git分支命名:
- master(默认分支)
- dev-版本号(版本分支,如dev-1.2.0)
- dev-版本号-开发人员(开发分支,如dev-1.2.0-johnson)
- fix-版本(修复分支)
4、项目等级划分,便于项目开发优先级的确定,以及事故处理优先级的确定:
应用级别 | 网络 | 用户量 | 核心业务 | Pv | SLA | 对公司形象影响 | 用户投诉情况 |
0级 | 公网 | 大量 | 是 | 较高 | 高 | 严重 | 较多 |
1级 | 公网 | 少量 | 否 | 较低 | 低 | 轻微 | 较少 |
2级 | 内网 | - | 影响线上核心业务 | 较高 | 高 | 轻微 | - |
3级 | 内网 | - | 不影响核心业务 | 较低 | 低 | 无 | - |
5、开发排期包括:开发开始时间(包含设计),开发结束时间(提测时间),测试开始时间,测试结束时间,上线时间。
二、团队管理相关
1、2-pizza rule
2、开会时明确会议议题,提前和与会人员简介,提高会议的效率。
三、运维管理相关
1、生产环境和测试环境严格隔离,仅运维人员可操作生产环境服务器,特殊情况下可以赋予开发测试人员服务日志读权限。
2、通过NAT配置生产环境和测试环境的机器IP,降低误操作率,如:
- 生产环境内网IP映射为 10.250..-10.250.255.255
- 测试环境内网IP映射为 10.251..-10.251.255.255
3、统一Linux服务器端口规则,防止端口冲突。
- java:8080递增最大至8100(单机理论上20个服务足够了)。
- jmxremote端口在tomcat端口+10000。
- jdwp端口再tomcat端口+20000。
- python:9000递增。
- redis集群:7000、7001、7002、7003、7004、7005。
4、非DBA禁止操作线上数据库,如何初始化或修正数据,需要开发人员提交执行脚本及说明,经DBA确认无误后由DBA执行。
5、线上服务完善监控,报警下发相关负责人,及时响应处理问题,提升SLA。
6、规范测试环境机器服务路径及结构,如:
home
--alibaba
----app
------service1
--------0_项目简介10字以内.txt
--------server.jar
--------nohup.log
--------script.sh
------service2
--------0_项目简介10字以内.txt
--------server.jar
--------nohup.log
--------script.sh
----logs
------service1
--------20200101.zip
--------20200102.zip
--------audit.log
--------business.log
--------debug.log
--------error.log
--------info.log
--------warning.log
------service2
--------20200101.zip
--------20200102.zip
--------audit.log
--------business.log
--------debug.log
--------error.log
--------info.log
--------warning.log
----config
------service1
--------env.config
------service2
--------env.config
----data
------service1
--------aa.xtl
------service2
--------bb.docx7、线上问题无论任何人发现第一时间抛出,同步到项目管理部+产品+开发+测试,评估事故评级,最短时间提出解决方法,并修复,禁止任何人私自盲目处理,时候追责。
四、开发管理相关
1、前后端交互参数,遵循restful风格,参数采用驼峰命名法,分页参数采用pageNum,pageSize, 排序参数采用sort,order,封装到pageBO(@ModelAttribute接收),排序字段后端通过NamingUtils转换成蛇形。
2、Class和method要有作者、时间、解释,复杂逻辑添加必要的注释,名称见名知意。如:BasePartnerApp、getBasePartnerApp、getBasePartnerAppList。
3、表设计尽量符合3NF以上,尽量减少冗余。表名根据业务模块添加前缀,字段命名见名知意,添加表字段说明。尤其枚举类型字段,妥善使用-1,0,1等字段值。
4、数据分页采用pageHelper,禁用内存分页。
5、实体类采用lombok减少代码量。
6、打印日志使用@Slf4j
7、集成swagger以便前端调试。
8、谨慎使用java8 stream处理复杂的业务逻辑,防止大大降低代码可读性。
9、controller(控制器)–>service(业务接口)–>serviceimpl(业务实现)–>persist(持久层)–>mapper(映射)–>xml(sql)
















