研发与环境的那些事儿

简介: 研发与环境的那些事儿

      环境是开发工作的核心步骤之一,对研发的开发测试是有影响的。研发与环境之间的关系是非常重要的,研发环境的质量直接影响研发人员的工作效率和代码质量。这里的“环境”只是研发环境的一部分,特指开发使用的机器环境,包括开发机器的获取、网络配置、基本工具以及代码的获取和配置。

影响开发效率的环境问题

开发人员电脑配置低,本地编译项目、调试运行项目时需要很长时间(不仅影响效率,还影响开发的心情💢🔥)

测试环境不够,多人共用一套测试环境,可能会导致多个问题。

测试数据污染: 如果多个人同时在环境中进行测试, 测试数据可能会被污染, 导致测试结果不可靠。

代码冲突: 当多个人在同一环境中进行开发时, 代码可能会冲突, 导致代码合并困难。

环境管理困难: 当多个人共用一套环境时, 环境管理可能会变得困难, 导致环境维护和部署困难。例如A研发正在测试功能,B研发因为修复bug频繁提交代码进行部署,导致A研发在部署的时候被阻塞,导致原有排期可能被延期。

环境不稳定: 由于多人共用一套环境, 可能会导致环境不稳定,不能保证所有人都能够顺利完成测试.

环境设置参差不齐,有个别开发人员环境配置得比较好,效率比较高,但有的开发并不需要那么高的配置。

      这些问题,实际上都可以归结为研发环境不够高效。就像低劣的空气质量和食物质量会影响我们的身体健康一样,不理想的研发环境会严重降低研发效能。

研发需要的环境

为了提供高效研发环境,应该遵循以下原则

可重现性:研发环境应该可重现,以便研发人员能够方便地复现问题并调试。

可协作性:研发环境应该可协作,以便多人协作开发,避免冲突。

与生产环境相似性:研发环境应与生产环境尽量相似,以便减少环境带来的问题。

自动化环境管理: 使用自动化工具来管理和配置研发环境,可以提高研发效率,减少人为出错。

测试覆盖率: 研发环境应该提供测试覆盖率,确保研发出的软件符合预期。

灵活性: 研发环境应该灵活,应该能够随时更新和

环境隔离性:研发环境应该隔离,以避免研发人员之间的环境干扰。

可用性:研发环境应该高度可用,保证研发人员能够高效地进行工作。

可维护性:研发环境应该可维护,以便能够随时更新和维护。

开发机器:开发机器需要具备足够的性能来运行开发工具和模拟环境,以便研发人员能够高效地开发和测试应用程序。

IDE:IDE (Integrated Development Environment) 是一种集成开发环境, 它集成了常用的开发工具, 如编辑器, 编译器, 调试器, 项目管理器等。使用 IDE 可以提高开发效率, 因为开发人员可以在同一环境中完成所有开发任务。

开发过程中使用的各种工具、数据和配置:

编译器和解释器: 研发人员使用编译器或解释器来将代码转换为可执行文件。常见的编译器和解释器包括 GCC, Clang, MSVC, Java Compiler, Python Interpreter等

调试器: 研发人员使用调试器来查找和修复代码中的错误。常见的调试器包括 GDB, LLDB, Visual Studio Debugger, Chrome DevTools等

开发过程中研发可能需要用到一些插件来提升工作效率,如代码快速补全、代码检查、代码格式化、快速定位到特定的代码位置、代码重构、单元测试等

也可能需要使用到一些数据来支持业务测试,如使用数据库来存储和管理数据。常见的数据库包括 MySQL, PostgreSQL, SQL Server, MongoDB, Redis等

业务可能需要一些配置管理平台来管理内外配置,如Apollo阿波罗配置管理平台、Spring Cloud Config、Etcd、ZooKeeper

亦或者是使用项目管理工具来管理项目进度和任务。常见的项目管理工具包括 Jira, Trello, Asana, Microsoft Project等

本地环境、联调环境

本地环境:本地环境是研发人员在自己的电脑上运行的开发环境,研发人员可以在这里完成代码编写、调试、测试等工作。本地环境通常由开发人员自行配置和维护。

联调环境: 联调环境是在研发过程中用于集成测试的环境,它通常由测试人员或运维人员维护。联调环境模拟了生产环境,研发人员可以在这里测试集成各个模块的代码和组件的兼容性,验证系统的可靠性和性能。一般联调环境使用的是测试环境。

测试环境、预发布环境、生产环境

测试环境: 测试环境是用于测试代码的功能和性能的环境。它通常是在开发完成后,在这里进行单元测试、集成测试、系统测试等。

预发布环境: 预发布环境是在代码通过测试后,在这里进行功能和性能测试以及模拟生产环境的环境。预发布环境为生产环境提供一个更加真实的环境。

生产环境: 生产环境是真正用于生产的环境,它是最终用户使用的环境。在生产环境中,系统要求高可用性,高性能,高安全性。

环境的演变

研发环境在过去几年中发生了很大的变化。

传统环境:过去研发人员通常使用独立的开发机器进行开发和测试。每个研发人员都有自己的开发机器,研发人员需要自己维护自己的开发环境。

虚拟化环境:虚拟化技术的出现,使得研发人员能够使用虚拟机来模拟不同的环境,避免了环境带来的问题。

容器化环境: 近年来容器技术的发展,使得研发人员能够使用容器来进行开发和测试,更加轻量级和可移植。

云原生环境:随着云计算的普及,研发人员能够使用云原生技术来进

测试单体环境到多环境的演变

研发环境从单体环境演变到多环境,是为了更好地满足研发人员的需求和提高研发效率。

  1. 单体环境:过去,测试人员通常使用单一环境进行测试,这个环境通常与生产环境相同。在这种情况下,测试环境称为单体环境。
  2. 多环境:随着软件的复杂性增加,测试人员需要在不同的环境中进行测试以确保软件的可靠性和稳定性。这样可以发现问题并且确保软件在生产环境中正常运行。

单体环境上线流程

      下述图示中是部分单体环境的测试到上线的流程,可以看出测试环境只有一套

73d8c9be8b2a4960a39693770de0ac9a.png

73d8c9be8b2a4960a39693770de0ac9a.png

多环境上线流程

      下述图示中是部分单体环境的测试到上线的流程,在下面图是中我们可以看到,测试环境分为多套,如测试基准环境,测试多环境。

测试基准环境:此环境一般部署应用的master分支,用于提供一个稳定的测试环境。测试基准环境是一种特殊的测试环境,用于对系统进行性能和可靠性测试。测试基准环境通常模拟生产环境的负载和环境条件。

测试多环境:为了满足各种诉求,不同研发可以创建自己的测试环境,以达到环境隔离,各个多环境之间互不影响,可以使用一些标示来访问到各自的多环境。

⚠️注意:测试基准环境一般不允许部署master之外的分支,除非有特殊诉求。

73d8c9be8b2a4960a39693770de0ac9a.png

提供高效研发环境

为了提供高效研发环境,应该遵循以下原则

可重现性:研发环境应该可重现,以便研发人员能够方便地复现问题并调试。

可协作性:研发环境应该可协作,以便多人协作开发,避免冲突。

与生产环境相似性:研发环境应与生产环境尽量相似,以便减少环境带来的问题。

自动化环境管理: 使用自动化工具来管理和配置研发环境,可以提高研发效率,减少人为出错。

测试覆盖率: 研发环境应该提供测试覆盖率,确保研发出的软件符合预期。

灵活性: 研发环境应该灵活,应该能够随时更新和

环境隔离性:研发环境应该隔离,以避免研发人员之间的环境干扰。

可用性:研发环境应该高度可用,保证研发人员能够高效地进行工作。

可维护性:研发环境应该可维护,以便能够随时更新和维护。


相关文章
|
1月前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
121380 407
|
机器人 开发工具 Web App开发
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
阿里云RPA,作为阿里云自研8年的技术,在资本的热捧下,逐渐从幕后来到台前,成为企业服务市场的黑马。本文将从产品上全面剖析,阿里云RPA这款产品的现阶段情况,同时简单谈谈阿里云RPA的商业化进展。
5937 0
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
|
6月前
|
人工智能 架构师 Cloud Native
架构愿景: 构建良好软件的关键
架构愿景: 构建良好软件的关键
67 0
|
12月前
|
存储 机器学习/深度学习 人工智能
加速研发的软件
加速研发的软件
|
敏捷开发 前端开发 项目管理
在YesDev研发协同工具,项目协作 All In One
值得注意的是,YesDev中所定义和提倡的项目,是指在一定时间周期内完成的有限需求、任务和问题的集合,对应敏捷开发中的一次迭代或Scrumn的一个Sprint。
|
敏捷开发 小程序 程序员
|
SQL 关系型数据库 MySQL
国产化环境下开发流程
人大金仓数据库、中科方德操作系统
国产化环境下开发流程
|
Web App开发 前端开发 开发工具
用阿里云小程序云平台构建应用,及对未来功能的畅想
图片1.png 在2019阿里云峰会·北京站上,阿里巴巴旗下的阿里云、支付宝、淘宝、钉钉、高德等联合发布“阿里巴巴小程序繁星计划”:提供20亿元补贴,扶持200万+小程序开发者、100万+商家。凡入选“超星”的小程序,入驻支付宝、淘宝、钉钉、高德后还能得到流量重点支持。
1126 0
|
测试技术 持续交付 开发者
云时代如何借助云的力量实现自动化CI/CD流程?
21世纪如何借助云的力量更加便捷地实现持续集成和持续交付?运维工程师如何正确使用阿里云容器镜像服务提供的持续交付和持续部署功能?本文将带领大家从一个资深运维人员的角度去探讨云时代自动化的CD(持续集成和持续部署)流程如何让运维工程师“失业”。
2765 0