如何做到测试环境、开发环境和生产环境相分离但又能够比较好的保证表结构和存储过程这类程序的一致性?
作者:qy guan
链接:https://www.zhihu.com/question/25069820/answer/56757700
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://www.zhihu.com/question/25069820/answer/56757700
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1.分权
生产环境对开发和测试只开放查询权限;需要修改权限时需要经过一定的机制来控制记录,一般只在调试程序时开放修改权限;
测试环境对开发只开放查询权限;需要修改权限时要经过确认, 一般只在调试程序时开放修改权限;
开发环境对测试人员只开放查询权限;
以上三个环境,都由专人负责升版(跑脚本)维护;
2.定期比对
2.1 取生产环境数据库作为标准,对比测试环境。
提取差异部分(表结构、过程、触发器等)进行分析;若差异部分不是计划内的升版脚本所致;则应该删除。这样在下一个计划版本升版后,下下个计划版本没有在测试环境上升版前,测试环境和生产环境就实现了结构上的一致了。
2.2 至于开发环境,同样与生产环境对比,差异部分先去除最近一次要发布生产的脚本影响,再将剩下的,在开发组内部沟通确认,将没有人负责的删除。这样,可得到相对统一的环境;
由于开发环境,一般只有一个,所以在多个版本并行开发过程中,数据库管理是相对比较混乱的。在这种情况下,尽量保证测试环境与生产环境的数据库结构的统一。对保证发布质量有较大意义。
PS:
在迭代版本比较稳定的情况下,建议测试环境保持两套相对独立的测试环境。一套与生产环境尽量保持一致,主要作为生产报障验证,与修复紧急补丁用;另一套用于准备上生产的例行版本用。这样,看似测试环境多了一套,测试人员的维护成本会高一些;实则这部分维护工作,对于应对在单一测试环境中去验证紧急版本,及生产报障问题时要回退处理时所用的成本,是非常少的。如果服务器条件允许,尽量满足2套测试环境。