一份面向初学者的“一切皆代码”简介
一切皆代码(EaC)是一个新概念,近年来由于几个相关因素的融合而得到了很大的发展。
随着“基础设施即代码”和DevOps运动的出现,“作为代码”成为了一个流行词。这是当IT运维/系统管理员开始共同使用可重用代码自动化IT环境修改时。然后以类似开发人员多年来管理其应用程序代码更改的方式使用相同的代码。
为什么一切皆代码?
大多数组织越来越依赖复杂的系统。一个服务器无法应对一切。您必须处理法规、全球化和共享硬件。
IT堆栈的许多部分已经外包给“作为服务”公司。与此同时,连接许多系统的许多API也越来越受欢迎。
有必要进行基础设施管理,以满足不同国家的不同需求并确保合规性。确保一切运行顺利至关重要。然而,这种复杂性使得手动IT管理变得困难。
我们需要一种方法来管理使组织正常运行的不断增长的技术堆栈。我们借鉴了开发者的方法论。它涉及编程、工具和链接,并被称为一切皆代码。
什么是一切皆代码?
将系统的所有组件视为代码的方式被称为一切皆代码。这意味着您可以将源代码和配置存储在像git或svn这样的存储库中。
此外,配置可以从上到下存储(通信交换机、裸机服务器、操作系统、构建配置、应用程序属性、部署配置作为代码),以便可以跟踪并轻松重现所有这些配置。
一切皆代码(EaC)还包括存储为代码的系统设计。基础设施在旧的IT世界中是必不可少的。它需要特殊的技能、物理硬件和电缆才能正确安装。这些系统要么非常有价值,要么更新频率不如负责人所创造的频繁。
容器和云原生应用使创建虚拟基础设施变得简单和廉价。配置容器的代码可以存储在代码中,因此可以根据需要重复使用。
EaC是开发人员和IT工程师的绝佳工具。EaC允许采用可重复、可扩展的方法来处理诸如管理应用程序部署或提供基础设施等繁琐而繁琐的任务。
EaC对开发人员和IT工程师同样有益,因为它使他们能够更高效地工作。他们还可以使用相同的工具和配置文件来在多个环境中扩展其操作。使用一切皆代码的方法还有减少人为错误风险的好处。
当您的工作流程都在代码中定义时,工程师不再需要担心遗漏某些内容或意外点击错误的按钮。EaC使审计变得更加容易,因为您可以使用EaC配置来确定对系统进行了哪些操作。
一切皆代码如何在市场上变得流行?
一切皆代码(EaC)近年来得到了很大的发展,原因是几个相关因素的融合。其中一个原因是工具供应商更愿意接受一切代码的方式。
因此,他们采取了一种以EaC为先的方法来进行工具配置和部署,假设开发人员或IT工程师更愿意使用代码文件管理一切。链接是一个例子。
如果需要,可以通过Web界面管理Kubernetes。然而,它被设计成通过代码文件进行管理。同样,大多数公有云服务和CI服务器也是如此。它们可以有可选的图形界面,但是在通过代码进行管理时效果最好。
EA的发展得益于许多管理和开发工具对通用配置格式的共识。几乎所有与EA兼容的工具都使用YAML和JSON作为配置语言。
由于格式的标准化,从业者可以使用相同的配置文件格式和相同的方法来管理所有工具。EA可以管理和构建整个应用程序交付网络,这有助于增加其受欢迎程度。
EA最初只能处理工作流程中的一些工具。现在,EA越来越有用,您可以通过代码管理所有工具。您可以消除其他工具和流程,并使用单一方法集中所有操作。
EA本质上并不是一个新概念。EA已经在一些孤立的形式中存在了一段时间。现在,它被广泛用作某些DevOps工作流的解决方案。
一切皆代码的好处
技术团队采用一切皆代码的方法进行IT运维有多个原因。
一致性
管理员可以在各种环境中使用统一的配置。工程师可以通过使用一切皆代码来避免不一致的配置,无论他们是在配置基础设施、CI/CD工具还是云访问控制策略。
版本控制
管理员可以监控配置随时间的变化,并确保它们被版本控制。这类似于源代码。可以查看在问题发生之前做了哪些更改,或者回到之前的版本。
可扩展性
管理员可以将配置应用到所需的任意多个过程或资源。这对随着时间的推移规模扩大的运维来说是一个好处。IT团队可以使用代码创建配置,允许它们在不重新配置每个资源或进程的情况下添加特定资源或进程的实例。
可审计性
管理员可以通过审计代码文件自动检查configuration资源。这比手动验证每个资源更高效。
可移植性
使用一切皆代码的IT团队会发现使用中立于供应商的代码定义配置比使用不同供应商的配置工具更容易管理。
例如,可以使用开源的测试自动化框架Selenium来创建software testing脚本。因此,管理员可以快速将测试环境从本地迁移到云上,而无需更新或学习新工具。
如何应用一切皆代码?
以下是您可以应用一切皆代码的不同方式:
基础设施即代码
基础设施即代码是指运维和开发人员使用代码定义其基础设施的期望状态。这意味着您定义需要 provisioning 的基础设施。然后,您可以根据需要修改基础设施。
安全即代码
安全即代码可以导致更安全的系统。这在自动扫描安全漏洞和在必要时自动更新时表现出来。该软件可用于管理IT部门的安全性。
这也适用于管理不同的合规/监管需求。例如,您可能需要向欧洲的人们显示与美国人不同的内容。可以使用“即代码”方法自动完成此操作。
架构即代码
AaC 允许您定义运行业务应用所需的所有组件。它还可以将其部署到不同的环境中(开发/测试、生产)。这是一种以代码为导向的方法,允许版本控制、审查、修改和修订。
测试即代码
测试即代码是测试自动化的完美例子。可以通过使用测试脚本自动化业务逻辑操作和用户界面交互。
部署即代码
现代部署流水线是一个完美的例子。现代指的是可以视为代码的流水线。它们作为软件组件进行管理、更新和维护。代码用于创建高级的 CI/CD 流水线,包括基本和高级流水线。
在计划将所有内容实施为代码时需要记住的事项
- 它使 IT 工程师和软件开发人员更高效地工作变得更容易。
- 要在公司中使用所有内容作为代码,您必须改变自己的思维方式。
- 团队的努力对您的成功至关重要。
- 其中最吸引人的功能之一是能够遵循高质量的流程和门控。
- 测试基础设施代码很困难,需要自动化测试。
- 您无法在一个文件中为所有环境(开发、阶段和生产)定义所有基础设施。
结论
一切皆代码(EaC)是一种软件开发和使用代码管理 IT 资源的方法,它在基础设施即代码和配置即代码以及其他 IT 领域都有许多应用。
虽然一切皆代码对许多组织来说可能是一个有前途的最终状态,但将平台的一部分转换为一切皆代码会有一个机会成本。这将帮助您确定在哪些领域投资您的资源。您的平台将有一些部分可以从一切皆代码的方法中受益。关键在于识别这些领域。