首页 > 其他分享 >众所周知,配置即代码≠基础设置即代码

众所周知,配置即代码≠基础设置即代码

时间:2024-06-24 08:58:59浏览次数:21  
标签:配置文件 代码 配置 开发 众所周知 设置 团队 可以

前段时间翻到几条留言,问:

“配置即代码和基础设施即代码一样吗?”

“配置即代码是什么?怎么都是基础设施即代码?”

我们都是知道,DevOp的快速发展,让服务器管理与配置的时间大大减少,配置即代码和基础设施即代码作为DevOps的重要实践,在其中起到了关键性作用。

不少人将二者看作是一件事,配置即大代码是关于管理特定的应用程序配置设置本身,而基础设施即代码更关注的是部署支持应用程序环境所需的底层基础设施。

二者虽然相互补充,经常一起使用,但为了避免混淆,我将从概念、意义以及做法三个方面介绍配置即代码。

一、什么是配置即代码?

配置即代码(Configuration as Code,CaC)是不同环境之间配置的版本迁移。在配置即代码的实践中,配置信息通常以文本文件的形式存储,这些文件可以用版本控制系统(如Git)进行管理。通过这种方式,每次环境配置的变更都可以被追踪和审查,有助于团队协作和问题的快速定位。

配置即代码一般用于管理软件包和组件的设置。这适用于广泛的行业。在应用程序开发过程中,可能会使用配置来支持多种操作系统。通过维护配置即代码,您可以跟踪数百甚至数千个硬件原理图和嵌入式开发的测试信息。

 

二、为什么使用配置作为代码?

团队可以通过多种方式从实现配置为代码中受益。

1.可扩展性

像IaC一样将配置更改作为代码处理,使团队能够从单个集中位置创建、更新和维护配置文件,同时利用一致的部署方法。举个例子,如果正在开发USB设备,则需要每个存储选项的配置文件。我们可以将这些文件与所需的软件结合起来创建数千种配置。

2.标准化

当配置像源代码一样编写时,开发团队可以使用开发最佳实践,例如linting和安全扫描。在提交之前,必须审查并测试配置文件以保证修改符合团队的标准。配置可以通过复杂的微服务架构保持稳定和一致。当建立起一套流程时,服务可以更有效地协同运作。

3.可追溯性

将配置设置为代码需要版本控制,可以方便地保存和跟踪配置和代码文件的更改,这可以提高软件发布的质量水平。一旦出现错误,开发团队可以通过比较版本化的配置文件来找到其来源并快速识别、修复问题。

4.提高生产力

开发团队可以通过将配置转换为托管代码来简化构建周期。这样一来,IT和最终用户的工作效率都会提高。管理员可以将所有内容合并到发布版或从单一版本控制系统构建中。开发人员对他们所做的更改的准确性充满信心,因为工作流程的每个组件都经过了一致的测试。

 

三、团队如何将配置作为代码实现

我们需要决定如何在版本控制系统中保存在代码中创建或重构的配置文件,可以通过以下方式实现:

  • 将配置文件和代码放在同一个存储库;
  • 根据需要将配置文件和代码放在一起;
  • 基于组件的开发和微服务;
  • 将配置和代码保存在单独的存储库中。

1.单一回购策略

如果所有文件都放在一个存储库中,那么工作流程可能会变得更简单。但如果我们将配置文件视为源代码,那对设置的任何更改都可能会造成新的构建,导致团队的工作速度变慢。

其实,并不是所有配置更新都需要构建。系统管理员会对其进行配置,以启用对配置文件的更改合并,最终将其部署到一个预生产环境中进行测试。除此之外,我们需要建立跨团队统一的命名约定,因为一切都是代码,所以在执行审计时区分配置文件和源代码极易出现错误。

 

2.微服务/基于组件的开发

通常情况下,开发团队会将代码分成多个存储库,再根据此架构将配置文件与特定微服务一起进行保存和版本控制。在此过程中,即便遇到与触发器构建类似的问题,但处理起来可能更简单。另外一提,如果准备使用其微服务对配置文件进行版本控制,我们需要提前规划如何分发配置更改。

 

3.创建配置测试环境

对于简单的配置修改来说,我们没有必要设置完整的应用程序代码测试环境。团队可以通过将测试环境的范围限制在配置部署过程的要求范围内来节省时间和金钱。

 

四、具体问题具体分析

配置即代码可以以多种不同的方式实施,但并非所有方式都适合每个开发团队。开发团队需要根据自身需要选择适合的方式:

  • 利用独特的配置源代码控制存储库;
  • 创建自定义构建和部署过程;
  • 建立以配置为重点的测试环境;
  • 确保有批准和质量控制程序;
  • 配置内的秘密管理。

通过将配置作为代码纳入流程,开发团队可以获得显著的优势。通过自动跨环境部署配置,可以更轻松地应用更新并确保一切按预期运行。由于它使用单个存储库,因此更改易于管理和跟踪。 

在增强代码开发和部署的同时,配置即代码也是管理和控制复杂基础设施和管道的宝贵工具。因此,您可以获得加快开发所需的可见性和控制力,而不会损害部署的安全性。 

 

参考资料:

【1】Hanmid Akhtar,Configuration as code: everything to know,2024.

【2】Adam Bertram,Config as code: what is it and how is it beneficial,2021.

标签:配置文件,代码,配置,开发,众所周知,设置,团队,可以
From: https://www.cnblogs.com/chenqiAaron/p/18260799

相关文章

  • 代码随想录算法训练营第46天 | 121. 买卖股票的最佳时机 、122.买卖股票的最佳时机II
    股票问题是一个动态规划的系列问题,前两题并不难,第三题有难度。买卖股票的最佳时机视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77qhttps://programmercarl.com/0121.买卖股票的最佳时机.html/***@param{number[]}prices*@return{number}*/varmaxProfit=......
  • 代码随想录算法训练营第45天 | 198.打家劫舍 、213.打家劫舍II 、337.打家劫舍III
    今天就是打家劫舍的一天,这个系列不算难,大家可以一口气拿下。198.打家劫舍视频讲解:https://www.bilibili.com/video/BV1Te411N7SXhttps://programmercarl.com/0198.打家劫舍.html/***@param{number[]}nums*@return{number}*/varrob=function(nums){const......
  • 创新实训(十)——代码美化部分:导航栏的active
    代码美化部分————导航栏的active对于导航栏来说,当选定在某个功能部分时,当前模块会有高亮显示。查看main-nav.php中有管导航栏的代码<divclass="collapsenavbar-collapse"id="navbarSupportedContent"> <ulclass="navnav-pillsmain-navmr-auto"> <liclass="......
  • 数据结构/排序/堆排序 --- 逻辑讲解、代码实现、图形展示
    一、总体逻辑:    1.写一个交换的函数swap备用    2.写一个维护堆的性质的函数heapify备用    3.数组-> 堆(不明白的别急,后面会详细解释)    4.维护整个堆(看不懂别急别急别急)    5.堆顶和堆底的最后一个元素互换(不明......
  • 爱心代码html
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><!doctypehtml><html><head><metacharset="utf-8......
  • 【服务器】Ubuntu虚拟内存设置
    引子最近服务器内存老是爆掉,64G的内存对于四五个人同时使用还是有点勉强,上网查询了一下虚拟内存的教程,本博客记录一下方法。swap内存设置假设你想将swap文件放在/mnt/data/mem目录下,以下是详细的步骤:创建并启用Swap文件创建目录(如果目录不存在):sudomkdir-p/mnt/data/m......
  • 代码随想录DAY2|有序数组的平方|长度最小的子数组|螺旋矩阵II
    有序数组的平方有序数组的平方解题思路最优的解法是通过双指针,由于该数组是一个非递减数列,我们只需要将数组的首尾两端作为两个指针的起始位置,然后进行比较就行。具体地讲,双指针所指向的值相互比较,把较大的值放入新的数组的开通,然后该指针往前(如果是在首端的指针,则往后)。重复这......
  • 通过ESP32读取I2C温湿度传感器项目:协议与代码实例
    简介在本项目中,我们将使用ESP32开发板读取I2C温湿度传感器的数据。我们将详细介绍I2C协议,并提供图文并茂的代码实例,帮助你快速上手。项目流程选择硬件:ESP32开发板、I2C温湿度传感器(如DHT12、HTU21D、SHT30等)、连接线和面包板。了解I2C协议:I2C(Inter-IntegratedCircuit)是......
  • 【Matlab】CNN-LSTM分类 卷积神经网络-长短期记忆神经网络组合模型(附代码)
     资源下载: https://download.csdn.net/download/vvoennvv/89466499分类算法资源合集:https://download.csdn.net/download/vvoennvv/89466519目录MatlabSVM支持向量机分类算法MatlabRF随机森林分类算法MatlabRBF径向基神经网络分类算法MatlabPSO-BP基于粒子群算法......
  • 【Matlab】LSTM长短期记忆神经网络分类算法(附代码)
      资源下载: https://download.csdn.net/download/vvoennvv/89465998 分类算法资源合集:https://download.csdn.net/download/vvoennvv/89466519 目录MatlabSVM支持向量机分类算法MatlabRF随机森林分类算法MatlabRBF径向基神经网络分类算法MatlabPSO-BP基于粒子......