Day912.多环境配置隔离 -SpringBoot与K8s云原生微服务实践

多环境配置隔离

Hi,我是阿昌,今天学习记录的是关于多环境配置隔离的内容。

多环境支持,是现在互联网开发研发和交付的主流基本需求。通过规范多环境配置可以规范开发流程,并同时提示项目的开发质量和效率等。

一个公司应该规范隔离开项目的多个环境,每个公司都会不一样,而且随着每个公司不一样的规模会有不一样的多环境情况。

以一下4个环境隔离举例:

  • DEV:开发环境,直接进行开发调试,一般都是开发人员的本机环境
  • TEST:测试环境,一般都是独立进行数据库隔离的,其针对测试人员和开发人员对功能进行测试的第一环境
  • UAT:用户接受测试环境,或灰度环境,对准备上线的功能最后一次测试
  • PROD:正式环境,真正接受用户流量的环境
    在这里插入图片描述

针对一个功能或需求,可以规范流程,如一个功能上线必须经过开发人员在DEV环境本地进行开发,后发布到TEST环境供测试人员进行功能的测试,完成基本测试后发布时候适配UAT环境进行最后一次测试,到最后真实发布到PROD环境。

有了环境发布流程,可以规范需求和功能上线的流程,就可以配合自动化测试发布的工具,也就可以集成CI/CD进行自动化工具发布。


多环境隔离优点

软件开发需要多环境配置隔离的主要原因是确保软件在不同的环境下都能够正确地运行,同时减少因为配置问题而引起的错误和故障。

在软件开发过程中,通常会存在多个不同的环境,例如开发环境、测试环境、生产环境等。

这些环境具有不同的特点和限制,例如硬件设备、网络配置、安全策略、数据存储等方面可能会有所不同。

如果在开发阶段不使用隔离的环境配置,开发人员可能会在开发环境中编写的代码在测试或生产环境中无法正常运行,因为这些环境的配置和限制不同。

这可能导致生产环境中出现不必要的错误和故障,严重影响软件的稳定性和可靠性。

通过使用多环境配置隔离,软件开发人员可以在不同的环境中使用相同的代码和配置,并确保软件在所有环境中都能够正确地运行。

此外,隔离的环境配置还可以防止在开发阶段意外影响生产环境,并提供更好的安全性和稳定性保障。因此,多环境配置隔离是软件开发中非常重要的一环,可以有效地提高软件开发和部署的效率和质量。

  • 提高软件的稳定性:通过多环境配置隔离,可以保证不同环境中的配置和资源是独立的,避免不同环境之间的干扰和冲突,从而提高软件的稳定性和可靠性。
  • 保障数据安全性:多环境配置隔离可以确保敏感数据不会在不同环境之间泄露或丢失,同时也可以避免不同环境之间的数据混淆和污染,提高数据的安全性和完整性。
  • 便于问题排查和修复:在多环境配置隔离的情况下,如果出现问题,可以快速定位到问题所在的环境,进行问题排查和修复,同时不会影响其他环境的正常运行。
  • 提高开发效率:通过多环境配置隔离,开发人员可以在独立的环境中进行开发和测试,不会受到其他环境的影响,从而提高开发效率和代码质量。
  • 支持灵活的部署策略:多环境配置隔离可以支持灵活的部署策略,例如可以先部署到开发环境进行测试,然后再部署到测试环境进行验证,最终再部署到生产环境中,从而保证软件的质量和稳定性。

多环境配置隔离是一种有效的软件开发和部署策略,可以提高软件的稳定性、数据安全性和开发效率,同时也支持灵活的部署策略和问题排查和修复。


多环境隔离的缺点

  • 需要额外的维护和管理成本:多环境配置隔离需要维护和管理多个环境的配置,包括开发、测试、预发布、生产等环境,需要投入更多的时间和精力进行管理和维护。
  • 可能会引入新的问题:由于多环境配置隔离需要在不同的环境中运行相同的软件和配置,可能会引入新的问题,例如兼容性问题、性能问题、安全问题等等,需要进行额外的测试和验证。
  • 可能会导致资源浪费:在多环境配置隔离的情况下,每个环境都需要独立的硬件和软件资源,可能会导致资源浪费,特别是对于小型团队或者资源有限的公司来说,这可能是一个问题。
  • 需要考虑版本控制和部署:多环境配置隔离需要考虑不同版本的软件和配置的管理和部署,需要建立相应的版本控制和部署策略,使得不同环境中的软件和配置保持一致和同步。

多环境配置隔离虽然可以提高软件的稳定性和可靠性,但也需要投入更多的维护和管理成本,并且可能会引入新的问题和导致资源浪费。因此,在实施多环境配置隔离时需要仔细考虑其成本和收益,并制定相应的策略和规范。


服务框架的支持环境隔离的好处

服务框架(Service Framework)是一种将服务化思想应用到软件架构中的设计模式,它提供了一系列的工具和组件来简化服务开发、管理和部署的过程,从而提高软件的可靠性、可扩展性和可维护性。

其带来的好处如下:

  • 抽象服务实现:服务框架可以将服务实现的具体细节隐藏在服务接口之后,使得服务提供者可以更加专注于业务逻辑的实现,而不必关注底层技术实现的细节,从而提高了开发效率和代码可维护性。
  • 统一接口规范:服务框架提供了统一的接口规范,使得服务提供者和服务使用者可以以一种统一的方式进行通信,从而简化了服务集成和调用的过程,同时也提高了系统的可扩展性和可维护性。
  • 基础设施自动化管理:服务框架提供了自动化的管理工具,包括服务注册、发现、调度、监控等,使得服务提供者可以更加方便地管理服务的生命周期,从而提高了系统的可靠性和稳定性。
  • 分布式处理:服务框架支持分布式处理,可以将服务部署到不同的节点上,从而支持大规模的并发处理和高可用性的架构设计,同时也提高了系统的性能和可扩展性。
  • 跨语言支持:服务框架支持多种编程语言和通信协议,使得不同的服务可以以一种统一的方式进行通信和协作,从而支持跨语言的服务调用和集成。

服务框架的支持可以提高软件的可靠性、可扩展性和可维护性,使得软件开发、集成和部署过程更加高效和简单。


针对如SpringBoot的服务框架,可以进行配置环境进行动态隔离和切换。

这样子可以开发人员针对同一套代码,灵活的适应不同的引用环境。

如在DEV环境不需要打对应的日志,则可以通过环境配置进行定制环境逻辑进行过滤。

代码如下举例

在这里插入图片描述


总结

软件开发是一个复杂的过程,需要考虑很多方面的因素,包括开发流程、技术选型、部署策略等等。

在这个过程中,多环境配置隔离是一个非常重要的概念,它可以提高软件的稳定性、数据安全性和开发效率,同时也支持灵活的部署策略和问题排查和修复。

针对如上,其多环境隔离有好有坏,但最终好处还是大于坏处,其可以灵活的多环境隔离测试,对bug进行合理灵活的测试,也可以针对不同的环境有不同的特定需求,如是否打印日志,是否需要发送短信来做不一样的配置。

这样子的多环境,可以合理的规范需求开发上线的流程,保证一定程度上的代码质量,让代码更加的稳定,开发的效率更加的高效,和针对用户数据的安全,并支持灵活的部署策略和问题排查和修复。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理实验1---运算器 预习报告

本实验为哈尔滨工业大学计算机组成原理实验,实验内容均为个人完成,目的是分享交流,如有抄袭将追究责任,笔者能力有限,若因此影响读者的分数,本人深表抱歉。 一、 实验目的 了解运算器的组成结构基于数据通…

mybatis resource配置mapper

<mapper resource"com/hm/mapper/UserMapper.xml"/> 这种配置mapper和package配置资源的区别&#xff1f; 1.package解析mapper过程&#xff0c; 获取name对应的路径&#xff0c;获取class下的mapper,根据mapper里的路径拼接.xml解析文件&#xff0c;此时命名…

亚马逊、eBay、速卖通等跨境电商自养号测评,你知道多少?

自养号测评对跨境电商来说已经司空见惯&#xff0c;现在绝大部分卖家都有对店铺产品进行测评&#xff0c;虽然平台和消费者对测评补单很反感&#xff0c;但是在人人都测评的大环境的影响下不测评就意味着要被淘汰。 之前在一些论坛看到有博主分享自己对于广告和数据化的理解&a…

基于SpringBoot+Vue家乡特色推荐系统

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精…

6.S081——虚拟内存部分——xv6源码阅读系列(1)

0.Briefly Speaking 这篇博客是完成6.S081第三个实验之前的准备环节&#xff0c;主要内容是阅读相关的源码。之前提过xv6最宝贵的部分是内核源码&#xff0c;这些是完成实验之前必备的基础&#xff0c;也是学习这门课的精髓所在&#xff0c;所以我准备再开一个系列博客专门用来…

golang大杀器GMP模型

golang 大杀器——GMP模型 文章目录golang 大杀器——GMP模型1. 发展过程2. GMP模型设计思想2.1 GMP模型2.2 调度器的设计策略2.2.1 复用线程2.2.2 利用并行2.2.3 抢占策略2.2.4 全局G队列2.3 go func()经历了那些过程2.4 调度器的生命周期2.5 可视化的CMP编程2.5.1 trace方式2…

【设计模式】创建型模式之原型模式

【设计模式】创建型模式之原型模式 文章目录【设计模式】创建型模式之原型模式1.概述2. 构成3. 实现3.1 浅克隆3.2 深克隆1.概述 原型模式(Prototype Pattern)&#xff1a;是用于创建重复的对象&#xff0c;同时又能保证性能。这种类型的设计模式属于创建型模式&#xff0c;它…

【人工智能里的数学】线性代数基础

系列文章目录 【人工智能学习笔记】人工智能里的数学——概述 【人工智能里的数学】一元函数微分学 文章目录系列文章目录前言一、向量与其运算1.2 行向量和列向量1.3 向量的运算1.3.1 向量的加减1.3.2 向量的数乘运算1.3.3 转置1.3.4 运算法则1.3.5 向量的内积1.4 向量的范数…

今年面试好激烈!

金三银四过去一半&#xff0c;市场火热&#xff0c;但是大家就业压力却没有缓解多少。 很多粉丝后台留言&#xff0c;Java程序员面临的竞争太激烈了…… 我自己也有实感&#xff0c;多年身处一线互联网公司&#xff0c;虽没有直面过求职跳槽的残酷&#xff0c;但经常担任技术面…

记一次Git未Commit直接Pull导致本地代码丢失后的挽救过程

第一次遇到这种问题&#xff0c;有点紧张... 好吧&#xff0c;废话不多说&#xff0c;IDEA或者AndroidStudio进入Git Uncommiteed Changes -> Unstash Changes&#xff1a; 在弹出的Unstash Changes对话框点View查看代码&#xff0c;如果代码是本地丢失的代码&#xff0c;那…

MySQL——distinct与group by去重 / 松散索引扫描紧凑索引扫描

本篇介绍MySQL中的 distinct 和 group by的区别&#xff0c;包括用法、效率&#xff0c;涉及松散索引扫描和紧凑索引扫描的概念&#xff1b;distinct用法示例&#xff1a;SELECT DISTINCT columns FROM table_name WHERE where_conditions;DISTINCT关键词修饰查询的列&#xff…

CVE-2023-28708 原理剖析

CVE-2023-28708 原理剖析这应该不是一个严重的漏洞&#xff0c;可能评分只能为低&#xff0c;因为并没有什么卵用。 话不多说&#xff0c;直接进入正题 我的复现环境&#xff1a; tomcat-8.5.50 首先我们得简单写一个servlet&#xff0c;当然不写也没事&#xff0c;因为我们的…

【C语言学习】结构体

结构体&#xff08;Struct&#xff09;从本质上讲是一种自定义的数据类型&#xff0c;只不过这种数据类型比较复杂&#xff0c;是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。 在实际开发中&#xff0c;我们可以将一组类型不同的、但是用来描述同…

[技术经理]02 什么是技术经理?

目录01什么是技术经理02总结01什么是技术经理 什么是技术经理&#xff1f; 我用一句话概括为&#xff1a;专业技术团队的管理者。 技术经理&#xff0c;是一种管理职位&#xff0c;通常是在软件开发、互联网等科技公司或技术团队中担任。 技术经理的职责&#xff0c;**是管理…

Docker入门

文章目录Docker为什么出现Docker能干嘛学习途径Docker安装Docker的基本组成环境说明安装步骤阿里云镜像加速底层原理Docker为什么出现 一款产品从开发到上线&#xff0c;从操作系统&#xff0c;到运行环境&#xff0c;再到应用配置。作为开发运维之间的协作我们需要 关心很多东…

文献阅读(247)AIpa

题目&#xff1a;Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning时间&#xff1a;2022会议&#xff1a;OSDI研究机构&#xff1a;UCB 传统的DNN并行策略&#xff1a; 现有的分布式训练系统要么需要用户手动创建并行化计划&#xff0c…

测试笔记:接口测试

目录1.接口&#xff08;1&#xff09;接口概念&#xff08;2&#xff09;接口类型2、接口风格&#xff08;1&#xff09;传统风格&#xff08;2&#xff09;RESTful风格接口3、接口测试&#xff08;1&#xff09;接口测试是什么&#xff08;2&#xff09;接口测试原理&#xff…

Node.js学习笔记——fs模块

fs全称为file system&#xff0c;称之为文件系统&#xff0c;是Node.js中的内置模块&#xff0c;可以对计算机中的磁盘进行操作。 本章节会介绍如下操作&#xff1a; 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 一、文件写入 文件写入就是将数据保存…

利用nginx实现动静分离的负载均衡集群实战

前言 大家好&#xff0c;我是沐风晓月&#xff0c;今天我们利用nginx来作为负载&#xff0c;实现两台apache服务器的动静分离集群实战&#xff1b; 本文收录于沐风晓月的专栏《linux基本功-系统服务实战》&#xff0c;更多内容可以关注我的博客&#xff1a; https://blog.csd…

Visual Studio 2015 + cmake编译QT5程序

概述 由于QT的集成开发环境QTCreate&#xff0c;在代码调试功能上远不及Visual Studio方便&#xff0c;因此&#xff0c;在Windows平台&#xff0c;可以使用Visual Studio来开发调试QT程序&#xff0c;本文章就主要介绍下&#xff0c;如何使用CMAKE编译QT5程序&#xff0c;并使…