开发人员通常有四个开发环境:
1,本地开发环境:用于开发者在开发过程中,调试程序使用。
2,开发环境:某个小功能或者某个模块完成,需要提供给调用方,发布到开发环境,供调用方测试程序,发现问题,修改问题。
3,测试环境:开发过程中,当某个排期或者迭代的功能开发完成,需要测试人员测试整个排期或者迭代的功能,这个时候,需要发布测试环境。
4,online(线上)环境:该环境是测试对功能充分测试,没有问题之后,可以提供给 用户使用的产品,需要稳定存在的环境。
发布生产(online)常见问题总结:
1,新上线应用或者新的迭代有新的网络访问路径,在上线前,没有打通和其他应用之间的网络访问权限。
2,项目中的配置信息没有切换到生产环境(日志路径,配置文件信息或者配置文件中部分信息)。
3,数据库需要执行的DDL,或者DML数据没有执行(或许只执行了部分语句)。
4,依赖应用的接口有改动(迁移机房导致域名或者ip变动,导致数据访问不到),但是并没有通知到,所以导致网络环境之间不通。
5,迭代开发,导致新的需求,对老的线上的需求有影响。
6,数据库的sql,部分的查询语句,有串库现象,导致部分语句执行不成功(常常出现的情况,上生产的时候,sql语句里面包括测试环境的用户),这种情况可以通过全局搜索测试环境数据库的用户名,如“mysqluat”,可以通过这种方式排出。
7,生产分布式环境配置和测试环境单机不一致,可能需要对配置信息作特殊处理。
8,前端调用接口,返回的数据不准确,
8.1,可能是缓存的问题,先排除缓存的影响。
8.2,接口参数问题,参数的名称,类型,
8.3,网络抖动引起的问题
以上问题基本都可以通过postman等其他的接口调用工具,测试接口是否有问题,如果没有问题,问题基本定位在前端。
9,项目外部的一些环境基础。如需要在项目的同级目录创建文件夹用于存储上传的文件,但是在生产环境没有创建。
10,java代码中调用的配置信息被写死,没有根据环境的不同调用不同的配置文件。例如把某个接口的调用地址,写死的是测试环境的,这种情况可以发布之前全局搜索有没有“http”相关的字符在java文件中。
11,抛给前端的信息,一定是经过处理的,用户可以理解的消息,需要做全局的异常处理(可以根据不同的异常类作不同的处理)。
在上线之后,我们应当只验证当前开发的新功能,和可能影响的老功能,在测试环境验证通过的情况下,在上线以后,应该可以很快的验证功能,但是在实际情况中,常常有上面所述的情况,导致需要多次发版本,或者在上线前联系相关人员(例如着网络组开通网络,DB执行相关sql脚本),无形当中导致上线的效率极低,相关的人员可能需要做很多无用功(浪费时间)。所以总结以上,希望可以提高自己和各位小伙伴的上线效率。
有新的需要注意的地方,会持续更新,也希望小伙伴们可以提出自己在开发过程中遇到的问题,让我们可以在上线前避免这样的问题。
网友评论