谈大型项目开发的多个环境配合
我参与经历过的大型项目一般有两个开发环境和测试环境。开发环境是面向开发人员的,测试环境是面向测试人员的。这两个环境使用不同的数据库,可能还部署在不同的服务器上,互相之间是隔绝的。
我认为还应该加上一个本地环境,运行在自己的电脑上,连接的是开发环境的数据库,是面向自己的。
开发环境是开发人员公用的,测试环境是测试人员专用的,本地环境是自己和配合的前端人员私用的。本地环境是开发人员第一要使用的环境,应该第一重视本地环境的搭建和运行。
开发环境使用的人员众多,所有的改动都要汇集在这里,因素庞杂复杂,出了问题,造成的项目停滞经常发生,最严重的可以造成所有人几个小时的工作中断。
有的公司对开发人员提供的框架限制很死,在本地运行项目限制很大,这十分不利于项目上线。搭建好本地环境,可以有效降低开发环境的负担和复杂度。
测试人员在测试环境提的bug,开发人员在开发环境重现比较困难,开发环境的配置是公共的,个人不允许修改。那么本地环境要做到,能轻易的做到从开发数据库切换到测试数据库,并且测试数据库对于开发人员是只读的。这样可以很方便开发人员查找问题,又防止开发人员操作测试数据库干扰测试人员工作,提供效率,减少错误。
如果项目框架不提供这样快速切换数据库的功能,显然妨碍了开发人员排查问题,影响项目上线,显然是非常不应该的。
在前后端分离的情况下,前端开发人员调用api,一般是从开发环境的聚合服务获取的。这样每当后端开发人员增加或者改动一个api时,都必须先要发布到开发环境,然后前端开发才能调用;在前端调用后发现后,还必须要后端开发人员再次修改api,再次发布。在开发过程的问题是不少的,这样就造成了后端开发频繁的发布项目到测试环境,花费了很多时间。如果是多个小组的后端同时开发的话,还会发生发布错误,影响到别人的开发,严重的会造成调用聚合服务的所有组人员的工作中断;即使没有错误,服务器构建重启也要花费几分钟时间,造成的卡顿也要耗费别人不少时间。
前端人员也应该建立自己的本地环境,能够让后端人员通过IP很方便的访问前端页面。后端人员可以通过前端的本地环境中的网页,像正式用户访问那样来调试api,快速发现问题,可以不必填写api参数来间接方式调用api。
所以,我们更应该建设好本地环境。本地环境不能是开发工具提供开发调试环境,要能稳定运行,方便前端开发人员通过IP直接访问你电脑上的api。这样后端人员在开发修改一个api后,发布到本地环境,通知前端人员后可以马上做别的api,不需要花更多的时间发布到开发环境;前端人员
接到通知后马上开发前端。等两端都确认没有问题后,后端人员把项目发布到开发环境,前端人员把api的url从指向后端人员电脑IP修改为指向聚合服务。
这样加快了开发速度,减少了发布频率,减少了中间环节改动,减少了相互干扰。