Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >众所周知,配置即代码≠基础设置即代码

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

原创
作者头像
陈哥聊测试
发布于 2024-06-24 02:03:33
发布于 2024-06-24 02:03:33
1490
举报
文章被收录于专栏:陈哥聊测试陈哥聊测试

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Terraform:多云、混合云环境下实现基础设施即代码
将基础设施代码化,使用代码对硬件进行管理,在运维领域借用软件领域的最佳实践,将基础设施的运维纳入软件工程的范畴,最终整体改善软件开发和软件交付的过程。
yeedomliu
2024/01/24
1.6K0
Terraform:多云、混合云环境下实现基础设施即代码
配置管理
配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一定义、修改、存储和检索。
新亮
2022/05/17
6830
10个您现在需要实施的DevOps Pipeline最佳实践
了解 DevOps Pipeline 十大最佳实践,您需要立即实施以实现最佳效率和简化的软件交付。
云云众生s
2024/03/28
3120
GitOps—用于基础设施自动化的DevOps
GitOps提供了一种自动化和管理基础设施的方法。它通过许多团队已经应用的DevOps最佳实践来做到这一点,例如版本控制、代码评审和CI/CD管道。
陈哥聊测试
2020/12/10
1.6K0
基础设施即代码:你需要知道的一切
基础设施是软件开发过程的核心原则之一——它直接负责软件应用程序的稳定运行。这种基础设施的范围从服务器、负载平衡器、防火墙和数据库一直到复杂的容器集群。
陈哥聊测试
2022/05/13
9220
《持续交付:发布可靠软件的系统方法》第2章 配置管理
第 2 章 配置管理 2.1 引言 配置管理是指一个过程,通过该过程,所有与项目相关的产物,以及它们之间的关系都被唯一定义、修改、存储和检索 配置管理策略将决定如何管理项目中发生的一切变化。它记录了你的系统以及应用程序的演进过程。另外,它也是对团队成员协作方式的管理 ---- 2.2 使用版本控制 版本控制系统的目的有两个 它要保留每个文件的所有版本的历史信息,并使之易于查找 它让分布式团队(无论是空间上不在一起,还是不同的时区)可以愉快地协作 2.2.1 对所有内容进行版本控制 每个与所开发的软件相关的产
yeedomliu
2019/09/28
7990
DevOps和Kubernetes能够完美匹配吗?
DevOps是一种软件开发策略,它将开发团队和运维团队合并为一个单元。Kubernetes是一个开源编排平台,旨在帮助组织管理大规模容器部署。从表面上看,还不完全清楚这两者怎么结合,这种结合是否产生了预期的结果。
用户5166556
2023/03/18
2420
DevOps和Kubernetes能够完美匹配吗?
一个 DevOps 面试小宝典
DevOps 是敏捷开发的产物,也越来越受到谷歌、Facebook 或亚马逊等大型企业的关注。因此,当你要申请 DevOps 工程师岗位时,除了所需的专业技能外,准备充分的 DevOps 工作面试,对于成功拿到 Offer 也至关重要。
我是阳明
2022/12/29
7800
一个 DevOps 面试小宝典
配置管理:从ITIL,CMMI到DevOps的实践与思考
老实说,不同的工作经历的人,对配置管理的理解和定位也各不相同。下面我从几个不同领域,大概阐述下我的理解。
DevOps在路上
2024/05/22
7660
配置管理:从ITIL,CMMI到DevOps的实践与思考
基础设施即代码:IaC简介
IaC:自动化您的IT,消除错误并更快扩展。学习Terraform和Ansible。拥抱当今基础设施的未来!
云云众生s
2025/01/11
3360
什么是 DevSecOps?2022 年的定义、流程、框架和最佳实践
DevSecOps 是一套实用且面向目标的方法,用于确保系统安全。DevSecOps 被定义为通过与 IT 安全团队、软件开发人员和运营团队合作,在标准 DevOps 周期中建立关键安全原则的过程。以下是对 2022 年 DevSecOps 管道、框架和最佳实践的深入分析。
DevOps云学堂
2022/10/04
6.7K0
什么是 DevSecOps?2022 年的定义、流程、框架和最佳实践
特性开关和 GitOps, 5个用例帮您搞定
GitOps 的实践是持续交付的下一个替代。它允许开发人员进入 IT 运维的传统工作范围-许多历史关卡的所在地-自动更新生产环境的应用程序和运行程序的基础设施。在 GitOps 中,所有变更管理和版本控制的唯一可信来源是软件配置管理(SCM)。GitOps 抛弃了传统 ITIL 类型的管理,将基础设施和应用程序视为版本化的制品,包括在软件开发期间捕获的相同粒度的审计轨迹(提交 ID,时间戳等)。
LinuxSuRen
2020/03/20
9770
云原生最佳实践
云原生是一种面向云计算架构和应用开发的新兴技术,它能够让企业更好地利用云计算技术来 构建高可用性、高性能、高弹性的应用系统。
37手游后端技术团队
2023/02/24
1.4K0
云原生最佳实践
基础设施即代码(IaC):自动化基础设施管理的未来
随着云计算和大规模分布式系统的迅速发展,手动管理和配置基础设施的传统方式已逐渐跟不上快速迭代的步伐。于是,基础设施即代码(Infrastructure as Code,IaC)作为一种创新实践,成为现代运维管理的基础。IaC不仅提高了基础设施的配置速度,还提升了系统的一致性和可重复性。本文将深入讲解IaC的基本概念、核心优势和实现方法,并通过实例展示其在实际工作中的应用。
Echo_Wish
2024/10/27
8850
基础设施即代码(IaC):自动化基础设施管理的未来
运维必备的DevOps工具链大盘点
本篇文章中将介绍一些能够帮助你实现 DevOps 目标的核心技术类别和具体技术。
深度学习与Python
2020/09/28
1.6K0
运维必备的DevOps工具链大盘点
容器平台与最佳实践参考
这是一张三年前总结的示意图,描绘了一个Kubernetes集群环境中的各种组件和它们之间的关系。图中从左到右展示了一个从基础资源角度到应用程序发管理角度的脑图。解释图中的主要组成部分:
行者深蓝
2023/12/11
6780
从“DevOps + Sec”到“Building Sec Into DevOps”,构建安全内生的DevOps文化
引发 DevSecOps 的这个概念背后有很强大的变化,安全一般来说是服务于其他信息技术,如果相应的技术或者解决方案或者流程发生变化,安全也要随之改变,否则无法适应新的技术的安全要求。这里面的最重大的变化有三个:
DevOps在路上
2024/07/10
2490
从“DevOps + Sec”到“Building Sec Into DevOps”,构建安全内生的DevOps文化
2020 DevOps工程师面试 33 问
答:尽管DevOps与敏捷方法(这是最流行的SDLC[Software Development Life Cycle]方法之一)有一些相似之处,但两者在软件开发方面都是根本不同的方法。以下是两者之间的各种基本差异:
公众号: 云原生生态圈
2021/11/15
5140
DevOps工程师:30多个面试问题及解答
在过去的几年里,随着 DevOps 工程师的职位发布数量急剧增加,“ DevOps 面试问题”查询的点击量已超过 50 万次。跨国公司通常有多个 DevOps 工程师专家角色。此外,由于就业市场竞争激烈,DevOps 工程师面试问题可能涵盖更广泛和更为复杂的主题。
DevOps云学堂
2023/08/22
9700
DevOps工程师:30多个面试问题及解答
2019年20个最佳版本控制系统
版本控制工具的核心是以简单的方式工作。它跟踪所做的协作更改,并确保每个协作者都知道并可以访问项目的最新版本。由于不同的项目各不相同,VCS工具也有各种产品。此外,该行业的最新趋势也在改变其部署方式。在这篇文章中,我们整理了20个最佳版本控制系统。
Blue姐
2019/06/28
4.4K1
推荐阅读
相关推荐
Terraform:多云、混合云环境下实现基础设施即代码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档