研发与环境的那些事儿

news2024/11/16 21:55:40

文章目录

    • 影响开发效率的环境问题
    • 研发需要的环境
    • 环境的演变
    • 测试单体环境到多环境的演变
      • 单体环境上线流程
      • 多环境上线流程
    • 提供高效研发环境

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

影响开发效率的环境问题

  • 开发人员电脑配置低,本地编译项目、调试运行项目时需要很长时间(不仅影响效率,还影响开发的心情💢🔥)
  • 测试环境不够,多人共用一套测试环境,可能会导致多个问题。
    • 测试数据污染: 如果多个人同时在环境中进行测试, 测试数据可能会被污染, 导致测试结果不可靠。
    • 代码冲突: 当多个人在同一环境中进行开发时, 代码可能会冲突, 导致代码合并困难。
    • 环境管理困难: 当多个人共用一套环境时, 环境管理可能会变得困难, 导致环境维护和部署困难。例如A研发正在测试功能,B研发因为修复bug频繁提交代码进行部署,导致A研发在部署的时候被阻塞,导致原有排期可能被延期。
    • 环境不稳定: 由于多人共用一套环境, 可能会导致环境不稳定,不能保证所有人都能够顺利完成测试.
  • 环境设置参差不齐,有个别开发人员环境配置得比较好,效率比较高,但有的开发并不需要那么高的配置。

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

研发需要的环境

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

  1. 可重现性:研发环境应该可重现,以便研发人员能够方便地复现问题并调试。
  2. 可协作性:研发环境应该可协作,以便多人协作开发,避免冲突。
  3. 与生产环境相似性:研发环境应与生产环境尽量相似,以便减少环境带来的问题。
  4. 自动化环境管理: 使用自动化工具来管理和配置研发环境,可以提高研发效率,减少人为出错。
  5. 测试覆盖率: 研发环境应该提供测试覆盖率,确保研发出的软件符合预期。
  6. 灵活性: 研发环境应该灵活,应该能够随时更新和
  7. 环境隔离性:研发环境应该隔离,以避免研发人员之间的环境干扰。
  8. 可用性:研发环境应该高度可用,保证研发人员能够高效地进行工作。
  9. 可维护性:研发环境应该可维护,以便能够随时更新和维护。
  • 开发机器:开发机器需要具备足够的性能来运行开发工具和模拟环境,以便研发人员能够高效地开发和测试应用程序。
  • 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. 虚拟化环境:虚拟化技术的出现,使得研发人员能够使用虚拟机来模拟不同的环境,避免了环境带来的问题。
  3. 容器化环境: 近年来容器技术的发展,使得研发人员能够使用容器来进行开发和测试,更加轻量级和可移植。
  4. 云原生环境:随着云计算的普及,研发人员能够使用云原生技术来进

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

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

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

单体环境上线流程

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

在这里插入图片描述

多环境上线流程

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

  • 测试基准环境:此环境一般部署应用的master分支,用于提供一个稳定的测试环境。测试基准环境是一种特殊的测试环境,用于对系统进行性能和可靠性测试。测试基准环境通常模拟生产环境的负载和环境条件。
  • 测试多环境:为了满足各种诉求,不同研发可以创建自己的测试环境,以达到环境隔离,各个多环境之间互不影响,可以使用一些标示来访问到各自的多环境。
    ⚠️注意:测试基准环境一般不允许部署master之外的分支,除非有特殊诉求。
    在这里插入图片描述

提供高效研发环境

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

  1. 可重现性:研发环境应该可重现,以便研发人员能够方便地复现问题并调试。
  2. 可协作性:研发环境应该可协作,以便多人协作开发,避免冲突。
  3. 与生产环境相似性:研发环境应与生产环境尽量相似,以便减少环境带来的问题。
  4. 自动化环境管理: 使用自动化工具来管理和配置研发环境,可以提高研发效率,减少人为出错。
  5. 测试覆盖率: 研发环境应该提供测试覆盖率,确保研发出的软件符合预期。
  6. 灵活性: 研发环境应该灵活,应该能够随时更新和
  7. 环境隔离性:研发环境应该隔离,以避免研发人员之间的环境干扰。
  8. 可用性:研发环境应该高度可用,保证研发人员能够高效地进行工作。
  9. 可维护性:研发环境应该可维护,以便能够随时更新和维护。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完美解决了报错:app.js:249 Uncaught TypeError: Cannot redefine property: $router

场景: 项目打包优化阶段,为了解决打包成功后,单文件体积过大的问题 ,可以通过 webpack 的 externals 节点,来配置并加载外部的 CDN 资源 原因:报错的原因就是重新定义了$router,因为在项目中安装…

分享134个ASP源码,总有一款适合您

ASP源码 分享134个ASP源码,总有一款适合您 134个ASP源码下载链接:https://pan.baidu.com/s/1eZwPKoGGSnzItVBM3_Z77w?pwdxvqz 提取码:xvqz 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...&am…

详细搞懂vue2.0 3.0区别-summernote富文本使用

文章目录背景介绍必备知识实操安装回退脚手架vue cli版本vue-使用summernote富文本功能(不失效版)小知识如果感觉有用点个关注,一键三连吧!蟹蟹!!!背景 一开始只是准备实现summernote富文本&…

Stitch it in Time: GAN-Based Facial Editing of Real Videos翻译

代码地址 论文下载 摘要 生成对抗网络在其潜空间内编码丰富语义的能力已被广泛用于面部图像编辑。然而,事实证明,在视频上复制他们的成功具有挑战性。高质量的面部视频集是缺乏的,在视频上存在一个需要克服的基本障碍——时间一致性。我们认…

【Leetcode面试常见题目题解】6. 电话号码的字母组合

题目描述 本文是LC第17题,电话号码的字母组合,题目描述如下: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意…

智能遍历测试在回归测试与健壮性测试的应用

首先来看业界用的较早也是经常听过的一款工具—— Monkey。这是 Android 官方提供的一个工具。谷歌原本设计这款工具是为了对 App 进行压力测试的。谷歌早期在设计 Android 的时候,Android 需要响应滑动、输入、音量、电话等事件,早期 activity 设计不完…

常见的 5 种 消息队列 使用场景

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。 实现高性能,高可用,可伸缩和最终一致性架构。 使用较多的消息队列有 RocketMQ,RabbitMQ,Kafka&#xf…

Android实战场景 - 输入手机号、银行卡号、身份证号时动态格式化

在日常项目开发中,如果稍微严谨点的话,其中关于手机号、银行卡号、身份证号的输入格式有做了限制格式化操作,主要是为了给用户带来更好的体验感; 最近同事正好问到了我这个问题,虽然以前做过这类型功能,但是…

你了解RTK技术吗?—— 揭秘GNSS中的定位技术

上期文章中我们一起探讨了GNSS仿真及其对测试验证的重要意义,今天我们将一起走进GNSS中的定位技术—RTK技术。什么是RTK技术?传统RTK技术与网络RTK技术又有什么区别呢?随着GNSS系统的迅速发展,RTK技术由于可以在作业区域内提供实时…

OpenMLDB v0.7.0 发布

2023 新年伊始,OpenMLDB v0.7.0 正式发布。本次版本更新重点增强了易用性和稳定性,下文将详细介绍主要改进和更新内容。更多 0.7.0 版本内容详见链接:Release v0.7.0 4paradigm/OpenMLDB 系统性改进消息和错误码,提升易用性 在…

【数据库概论】第二章 关系数据库

第二章 关系数据库 目录第二章 关系数据库2.1 关系数据结构2.1.1关系2.1.2关系模式2.1.3关系数据库2.2 关系操作2.2.1 基本的关系操作2.2.2关系数据语言的分类2.3 关系的完整性2.3.1 实体完整性2.3.2 参照完整性2.3.3 用户定义的完整性2.4 关系代数2.4.1 传统集合运算2.4.2 专门…

multimodal remote sensing survey 遥感多模态综述阅读

遥感多模态 参考:From Single- to Multi-modal Remote Sensing Imagery Interpretation: A Survey and Taxonomy Keywords:multimodal remote sensing 文章目录遥感多模态AbstractIntroductionTaxonomy1. Multi-source Alignment1.1 Spatial Alignment1…

《MySQL系列-InnoDB引擎15》慢查询日志拓展-如何开启MySQL慢查询日志?

慢查询日志拓展-如何开启MySQL慢查询日志? 1.查看MySQL慢查询日志是否开启? show variables like %query%; 查询出的结果中,主要观察如下三条: long_query_time 通过long_query_time设置阈值,设置阈值后&#xff0c…

Linux学习笔记 超详细 0基础(中)

Vi/Vim编辑器在Linux下一切皆文件,Vi编辑器和Vim编辑器是可以直接对文本文件进行编辑和操作,没什么大区别,vim有颜色区分更美观,vim 文件路径文件名即可进入一般模式,一般模式就是只读文件,不可进行操作。V…

K8s: Windows 下安装 K8s 开源桌面面板工具 OpenLens 查看集群信息

写在前面 分享一个桌面端的 k8s 面板工具 OpenLens博文内容为 OpenLens 简单介绍和 下载安装教程。安装非常简单,感兴趣的小伙伴快去尝试吧理解不足小伙伴帮忙指正 我所渴求的,無非是將心中脫穎語出的本性付諸生活,為何竟如此艱難呢 ------赫尔曼黑塞《德…

《c++ primer》第三章 字符串、vector、数组

前言 本章内容相比第二章要简单不少,里面比较重要的内容主要是vector和迭代器,这里只是很简单的介绍了一下,在后续的章节会有更详细、复杂的说明。以下记录的都是比较重要或者易混淆的知识点,对于像string、vector只列举了部分方法…

Sentienl一:下载,启动

Hystrix :1需要自己搭建监控平台 2 没有一套web界面可以给我们进行更加细粒度化的配置流控,速率控制 服务熔断,服务降级 Sentinel: 1 单独一个组件,可以独立出来 2 直接界面化的细粒度统一配置 一:丰富的应用场景&…

【Linux】分布式版本控制工具Git的学习 | 在Linux上使用git

👑作者主页:安 度 因 🏠学习社区:安度因的学习社区 📖专栏链接:Linux 文章目录一、前言二、历史背景三、版本控制1、何为版本控制2、版本控制工具① 集中式版本控制工具② 分布式版本控制工具四、代码托管平…

React 学习笔记总结(八)

react-router6版本的学习笔记。 文章目录一、React Router 6二、router6版本的 安装 和 一级路由1. 安装router6版本2. Routes组件 和 Route的 element属性三、router6 之 重定向四、router6的 NavLink高亮五、router6 的 useRoutes路由表(重要)六、router6 的 嵌套路由七、rou…

编写自己的OPTEE CA/TA demo

前言 (默认你对optee有一点点点点了解) 一、hello_world分析 在\optee_examples\hello_world目录下,optee给出了一个简单的CA/TA示例。 hello_world的结构如下: 1、CA端 A.main.c main.c文件有效代码如下: #incl…