案例17-环境混用带来的影响

文章讨论了软件开发中环境混用的危害,包括不稳定性、安全漏洞和数据不一致等问题,并以一个实际事故为例,说明了混用环境导致的下载延迟问题。解决方案是通过环境隔离,如使用Nginx做转发和FastDFS进行文件管理,确保开发、测试和生产环境的独立性,以提高软件质量和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景介绍

本篇博客主要介绍开发中项目使用依赖项环境闭一只带来的恶劣影响,在错误中成长进步。
混用环境指的是在软件开发、测试和生产过程中,将不同环境之间的代码、配置或数据混淆在一起,可能会带来一系列不好的影响和问题,包括:

不稳定性:混用环境可能导致开发人员在开发阶段使用不稳定的代码或配置,从而使开发环境变得不可靠,影响开发进度和测试结果。

安全漏洞:如果在测试或开发环境中使用了与生产环境不同的配置,可能会导致安全漏洞的出现。这可能导致未能在开发或测试阶段发现安全问题,而在生产环境中引发严重的安全隐患。

数据不一致:在混用环境中,可能使用不同版本的数据库或数据副本,导致数据不一致的问题。这可能导致测试结果不准确,或者在生产环境中引发数据一致性问题。

难以重现问题:如果开发环境和测试环境混用,开发人员可能难以重现在测试环境中出现的问题,因为在混用环境中很难确定问题的来源。

版本冲突:混用环境可能导致依赖冲突,例如,开发环境和测试环境使用不同的库或框架版本,这可能导致在测试或生产环境中出现问题。

配置问题:混用环境可能导致配置文件的混淆,例如,开发环境和测试环境使用不同的配置,这可能导致在生产环境中配置错误,从而影响应用的正常运行。

影响生产环境:如果在生产环境中使用了不稳定的或未经充分测试的代码和配置,可能导致生产环境出现故障或崩溃,影响用户体验和业务运营。

综上所述,混用环境可能会导致软件质量、稳定性和安全性问题,因此在开发、测试和生产过程中,应该严格区分不同的环境,并确保每个环境的代码、配置和数据都是独立的、一致的和经过充分测试的,以保障软件的可靠性和稳定性。

背景

本公司另外一个产品开发Godone 具有上传文件的功能(AR安装包),可以将文件上传到开发环境fastdfs服务器上,上传后,在公司官网主页可以找到对应下载的地址,如:https:// Arpro.dmsd.tech/godone/M00/00/0D/wKg82Jr3yOEPb5mAAAAJsndS8436.apk,使用工具将其转换成二维码,可以供用户扫描直接使用。

事故

在这里插入图片描述
1、排查思路:
去开发环境的fastdfs服务curl访问www.baidu.com很慢,怀疑是哪儿连接有问题,导致超时。重启了本机的nginx也不行,最后重启了开发环境fastdfs服务器,最后解决了问题。能够正常下载了。
2、根本原因:
环境混用导致资源错乱,造成不能使用。

二、思路&方案

在这里插入图片描述
隔离被破坏,安全性被破坏
导致原有(环境配套,生产配生产,测试配测试,开发配开)的隔离被破坏,将会导致各个环境受到影响的因素增多更加容易出现事故。如:生产环境的产品B,配套使用了开发环境依赖项a,由于开发环境产品a进行迭代升级,将影响生产环境部分功能无法使用,什么生产环境完全无法使用。重要性:产品的生产环境配置>测试环境>开发环境

三、过程

出现事故的原因很可能是哪儿的连接出现问题,虽然最后通过重启系统解决了这个问题但是具体的原因没有找到,这就是环境混用带来的危害。

四、总结

nginx做转发

nginx官网
Nginx首先根据服务器块的监听指令监听请求的IP地址和端口。然后,它根据与IP地址和端口匹配的服务器块的server_name条目测试请求的“Host”报头字段**。如果服务的名字没有找到,这个请求将被默认的服务器处理。** 如果没有显示声明,这个默认的服务器是第一个服务器。
之后nginx会选择一个location来处理一个请求。nginx首先搜索给出的最特定的前缀位置,不管列出的顺序是什么。在上面的配置中唯一的前缀位置是"/"。因为它匹配任何请求,所以它作为最后的匹配策略。然后nginx按照配置文件列出的顺序,从上往下进行匹配,一旦完全匹配上,将停止搜索,nginx将使用这个位置,如果没有匹配上,那么将使用前面找到的最特定的前缀位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

fastdfs(文件上传下载)

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括文件存储,文件同步,文件访问(文件上传,文件下载)等,解决了大容量存储和负载均衡问题,特别适合以文件作为载体的在线服务,如相册网站,视频网站等。
在这里插入图片描述
1、TrackerServer 跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。记录storage server 的状态,是连接Client 和 Storage server 的枢纽。
2、Storage Server 存储服务器,文件和meta data 都保存在服务器上
3、group 组,也称为卷。同组内服务器上的文件是完全相同的
4、文件标识 包括两部分,组名和文件名
5、meta data 文件相关属性,键值对(key Value Pair)
文件上传成功之后,会返回文件ID号:返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
在这里插入图片描述

五、升华

如何彻底避免环境混用的问题:权限隔离

从管理手段上:
权限隔离

各个环境隔离开,要跨环境操作使用审批闭环

隔离这个词,在我们生活中常见,代码中有环境隔离,生活中有职位隔离,得了新冠也要隔离,是为了将危害降到最小。我想到代码中还有接口隔离这个名词,但是没有恪守这个词,希望在学习的过程中能对这个词有更深刻的理解吧。恪守规则,没有规矩,不成方圆。

将软件开发和测试划分为不同的环境(开发环境、测试环境和生产环境)是为了保障软件的质量和稳定性。每个环境都有特定的目的和使用方式:

开发环境:

目的:开发环境是软件开发人员进行软件开发和调试的地方。在开发环境中,开发人员可以编写、测试和调试代码,进行单元测试和集成测试。
特点:开发环境通常部署在开发人员本地的计算机上或者开发团队内部的共享服务器上。它通常具有最新的代码和最新的功能实现,但可能不稳定且缺乏安全性。
测试环境:

目的:测试环境是用于进行软件测试的地方。在测试环境中,测试团队可以对软件进行各种测试,包括功能测试、性能测试、回归测试等,以验证软件的质量和稳定性。
特点:测试环境是一个模拟生产环境的环境,但它通常比生产环境小,不会承受真实环境的负载和压力。测试环境需要与生产环境尽可能保持一致,以确保测试结果的可靠性。
生产环境:

目的:生产环境是软件最终部署和运行的地方,是向最终用户提供服务的环境。在生产环境中,软件需要保持稳定、可靠和高性能。
特点:生产环境通常位于线上服务器,对安全性、稳定性和性能有着更高的要求。任何新的软件版本或更改在经过测试环境验证后,才能部署到生产环境中。
分为不同的环境主要有以下原因:

隔离开发与测试:将开发环境和测试环境分开,可以防止开发人员不小心影响到测试的稳定性。测试环境可以使用与生产环境相似的配置,使测试结果更加准确。

保证质量:在测试环境中进行全面测试可以发现潜在的问题和bug,并确保软件的质量。只有经过充分测试的软件才能部署到生产环境,降低生产环境的故障风险。

稳定性和安全性:生产环境对稳定性和安全性有着更高的要求,将开发和测试与生产环境隔离可以减少生产环境受到影响的风险。

版本管理:将软件部署到不同的环境中可以帮助实现版本管理,确保在生产环境中运行的是经过充分测试的稳定版本。

总的来说,将软件开发和测试划分为不同的环境是为了有效地控制软件的质量、稳定性和安全性,并提供一个可靠的生产环境给最终用户使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

balance…

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值