研发与环境的那些事儿

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

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

影响开发效率的环境问题

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

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

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

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

环境管理困难: 当多个人共用一套环境时, 环境管理可能会变得困难, 导致环境维护和部署困难。例如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

提供高效研发环境

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

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

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

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

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

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

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

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

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

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


相关文章
|
机器人 开发工具 Web App开发
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
阿里云RPA,作为阿里云自研8年的技术,在资本的热捧下,逐渐从幕后来到台前,成为企业服务市场的黑马。本文将从产品上全面剖析,阿里云RPA这款产品的现阶段情况,同时简单谈谈阿里云RPA的商业化进展。
6950 0
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
|
6月前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
122543 414
|
4月前
|
监控 数据可视化 项目管理
项目管理利器:揭秘软件如何驱动效率与成果并进
项目管理软件助您高效工作,通过WBS分解复杂任务,与Google Apps等工具无缝集成,实现任务自动化,利用甘特图追踪进度,加强团队协作沟通,并监控预算变动,提升效率,减少错误。 1. WBS将大项目拆解成小任务,便于管理和追踪。 2. 无缝集成常用工具如Google Apps、Slack等,简化工作流程,促进信息共享。 3. 自动化重复任务及流程,节省时间,专注核心工作。 4. 甘特图可视化项目进度,明确任务依赖关系,及时调整策略。 5. 强化团队协作与创意交流,支持聊天、会议及论坛互动。 6. 实时监控项目预算,对比计划与实际成本,预防超支风险。
28 0
|
12月前
|
存储 监控 NoSQL
|
人工智能 架构师 Cloud Native
架构愿景: 构建良好软件的关键
架构愿景: 构建良好软件的关键
148 0
|
物联网 测试技术 API
物联网项目开发:从规划到部署的完整指南
本篇详细介绍了物联网项目开发的完整流程,涵盖项目规划与需求分析、设计与开发物联网系统,以及测试与部署阶段。通过代码示例,读者可以了解如何有效地规划项目目标、分析需求,设计硬件与软件系统,进行系统测试,并最终将物联网系统成功部署到实际环境中。通过实际示例,读者将获得在物联网项目开发中的实践经验,为构建成功的物联网应用提供了有益的指导。
878 1
《组织高效,个人自我驱动-一站式企业协同研发云》电子版地址
组织高效,个人自我驱动-一站式企业协同研发云
87 0
《组织高效,个人自我驱动-一站式企业协同研发云》电子版地址
|
Web App开发 弹性计算 人工智能
云原生环境下研发综合效能提升探索(上) | 学习笔记
快速学习云原生环境下研发综合效能提升探索(上)
云原生环境下研发综合效能提升探索(上) | 学习笔记
|
人工智能 小程序 Cloud Native
云原生环境下研发综合效能提升探索(下) | 学习笔记
快速学习云原生环境下研发综合效能提升探索(下)
云原生环境下研发综合效能提升探索(下) | 学习笔记