没有最好,只有适合:根据实际情况务实的设置软件研发环境

在容器化,开源软件和云服务驱动的软件开发时代,持续集成的理念已经深入人心,无论我们在哪一家公司,只要是开发和长期维护一款互联网产品,在从开发到上线的过程中,团队都会有一套研发环境,处于不同交付阶段的代码,需要在不同的环境部署,直到产品交付到线上环境正式发布。

我们在网上搜索会看到一些最佳实践的介绍文章,但是在实践中,会发现每个团队的研发环境,基本上都会有各自的特点,并不是千篇一律,如果从方便性、维护成本、技术成本等方面评估,各有特点,我觉得,是康威定律的体现。

图片

常见的研发环境划分:

最常见的研发环境划分,是分成四个环境,dev、test、pre、prod。

  1. 开发环境(Dev): 开发团队进行接口联调和初步测试。

  2. 测试环境(Test): QA团队集成测试和功能验证。

  3. 预发布环境(Pre-prod): 接近生产环境,用于最后的验证。

  4. 生产环境(Prod): 最终上线使用的环境。

有的文章还会提到UAT、SIT或者FAT等不同缩写的环境,共同的特点是,大多数都是基于技术的视角,满足性能测试,或者代码集成。

设置研发环境,不只是技术问题

任何系统都会有一个对外提供服务的正式环境,就是生成环境。由测试团队负责维护,用于验证代码功能的测试环境,作用是隔离稳定的线上环境和不稳定的开发流程;如何看待和使用预发布环境,根据不同团队的工作方式,会有非常大的不同,几乎可以说千人千面。

是否需要更多环境,我觉得已经不是技术问题,甚至不是产品运营问题;而是组织架构和康威定律在主导。

真正的问题,不在于环境不够全面,而在于维护的成本,是要根据实际的团队规模,产品运营的节奏,设置跟能力适配的环境。 

每增加一个环境,不但技术上需要更多成本,更重要的是,要有效的利用每个环境,需要对数据和环境做隔离和数据脱敏,需要维护各种外部接口的对接,例如短信、支付、推送,都会产生大量成本。

其中成本最大的,毫无疑问是数据,长期针对演化中的特性维护多套不同的数据,是成本非常高昂的,哪怕是自动化每次重放,通过测试金字塔我们知道,维护自动化脚本和执行脚本,成本都不低,如果没有足够的团队规模,设置了过多的环境,就会变成中看不中用的摆设。

我觉得,设置一个研发环境,不只是技术和运维多部署一套服务和代码,而是要根据交付和运营的流程,当作产品特性,设计好如何维护数据的流程、设置对应的人员配置,维护各种第三方平台的Mock,还有测试用例和基础数据。

如果是全链路压力测试,那已经不是设置一个环境的问题了,应该当作配置一个单独项目团队进行的一次性研发项目。

所以研发环境的设置,真正的驱动力,是团队结构、业务逻辑和产品运营流程。

图片

根据实际情况的务实研发环境设置策略

正确方法是,根据团队和项目的实际情况,能够维护的能力边界,设置需要的环境,研发环境的拆分,是为了方便和赋能团队,而不是限制。

如果团队精力有限,维护几个基础的环境,就足够了。有一个QA验收环境,不参与开发的QA团队可以有效维护数据,同时也能让线上系统和不稳定的开发流程隔离开;只有在开发团队有足够人力和精力,并且快速变化,极不稳定的代码,会影响QA测试要上线的特性,才有条件设置专门的dev环境。

当然如果发布的新功能,都有特性开关,良好的向前兼容,而且产品流程能够做到每一到两周一次的发布列车,所有特性步调一致,那么可以从根源上,避免研发和QA的步调不一致,这样,其实也就降低了开发过程的成本。

对于预发布环境,不同的项目大相径庭,有的只是技术做冒烟测试,更有价值的,可能是运营和产品团队能够提前用线上的数据和账号,体验到新特性的准线上环境,类似于灰度环境。

通过维护这样一个环境,对团队能力提出了新的要求,开发的功能,都必须是前向兼容的,有特性开关控制,根据版本、环境和账号,不同的账号,不同的客户端,访问到不同的数据。

极限情况下,如果是个人开发者,或者三到五人小团队,完全可以不设置专门的测试环境,减少对测试数据的维护成本,开发环境就是准线上环境,所有开发过程,都需要保持良好的兼容性,这样的系统,应该以特性开关和灰度能力为基础,成为团队基因的一部分。

思考和总结

我自己也经历过一个阶段,特别执迷于某种教条,任何团队都应该设置几个环境,才是完美的,缩写越高大上,就越好。

经过管理团队,运营产品的实践,看到的是,不考虑实际产品研发流程和团队结构,过度的设计,不但产生额外的开发和维护成本;而且反而因为增加不必要的实体,导致出现问题的概率增加。

所以我们在做产品和设计架构的时候,一定要避免教条主义、本本主义;解决问题要从原理上思考前因后果,什么是符合逻辑的。没有最好的,适用于所有场景的最佳实践。架构设计就是权衡取舍的艺术,是根据现实情况和限制条件,做出满足具体场景的最合适的方案。

没有最好,只有适合:根据实际情况的务实的设置软件研发环境icon-default.png?t=N7T8https://mp.weixin.qq.com/s/NA4ZvgSN3jxuOBCdwgMsEw

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值