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

news/2024/9/22 5:43:52

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

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

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

我们都是知道,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.

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

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

相关文章

WPF 做一个超级简单的 1024 数字接龙游戏

这是一个我给自己做着玩的游戏,没有什么复杂的界面,就一些简单的逻辑游戏的规则十分简单,那就是有多个列表。程序会给出一个数字,玩家决定数字放在哪个列表里面。如果放入列表里面的数字和列表里面最后一个数字相同,那两个数字将会叠加进行合并,合并两个 1024 将会自动清…

SqlSugar操作Sqlite数据库

SqlSugar操作Sqlite数据库 SqlSugar官网 .net core和.net5/.net6/.net7/.net8/.net9/.net10安装SqlSugarCore。 net framework4.6+ 安装SqlSugar。 以下代码都在一个SqlSugarMethod类中。 获得数据库对象:这里要注意的是FilePath路径为生成程序的目录\bin\Debug\net8.0内,而不…

呼吁 《上海市卫生健康信息技术应用创新白皮书》改正 C# 被认定为A 组件是错误认知

近日,《上海市卫生健康“信息技术应用创新”白皮书》(以下简称《白皮书》)正式发布,介绍了“医疗信创核心应用适配方法、公立医院信息系统及全民健康信息平台信创设计思路”, 其中发现了一个错误的认知,C#/.NET 被认定为A 组件, 具体详见下图:C#/.NET 平台需要被区分为两…

【译】VisualStudio.Extensibility 17.10:用 Diagnostics Explorer 调试您的扩展

VisualStudio. Extensibility 帮助您构建在主 IDE 进程之外运行的扩展,以提高性能和可靠性。它还提供了一个时尚而直观的基于 .NET 8 的 API 和全面且维护良好的文档,可以帮助您开发出色的扩展。想象一下,创建的扩展比以往任何时候都运行得更快、更流畅!如果您最近还没有跟…

一个非侵入式跟踪分析程序

otel-profiling-agent为elastic开源项目,用于对生产环境中的应用程序进行性能分析,帮助开发者理解程序的运行情况,识别瓶颈,优化性能。用于包括CPU和内存使用情况的分析、调用跟踪、性能指标收集等功能。它是一个用于Linux的全系统、跨语言的性能分析器,通过eBPF(Extende…

2024CISCN华东南-WEB-gxngxngxn

WEB 差不多2小时就把web给ak了,没想到华东南强度最大的不是题目,而是场地连续8小时的30多度高温(welcomesubmit-BREAKsubmit-FIX 修复点在upload.php <?php // $path = "./uploads"; error_reporting(0); $path = "./uploads"; $name=$_FILES[myfile…

openai开源 shap-e 根据文本或图像生成 3D 模型,支持导入blender

OpenAI开源Shap-E,部署与使用详细教程。文本图片可生成3D动画和建模文件。介绍 github仓库地址:https://github.com/openai/shap-e 技术原理论文:https://arxiv.org/abs/2305.02463 官方生成效果示例:部署安装 打开colab:https://colab.research.google.com/ 新建一个笔记,…

山东大学项目实训-基于LLM的中文法律文书生成系统(十九)- RAG(5)

项目代码解读 # 官方库 import os import shutil import time from datetime import datetime import logging import pickle from glob import glob from typing import List# 第三方库 # langchain库 from langchain.document_loaders import UnstructuredPowerPointLoader, …