译文 | 《基础设施即代码》的研究和趋势分析
2022-3-1 22:50:0 Author: mp.weixin.qq.com(查看原文) 阅读量:14 收藏

开卷有益 · 不求甚解


前言

我们都知道“基础设施即代码”。它正在扩展到更大的构造、devsecops、工作流、数据、文档,并逐渐进入业务领域。我分析了 50 多个“即代码”概念的趋势。请告诉我我错过了什么。

作为代码趋势总结

这是趋势的 TL;DR:

  • 结构越来越大:我们将多个部分组合成更大的概念
  • DevSecOps 作为代码爆炸:安全性正在以它的方式进入代码结构
  • 捕获流程工作流:不仅是基础设施,还有我们如何对情况采取行动/反应
  • 将“常规”代码转换为声明性代码:可以更好地定义某些方面而不是编码
  • 数据即代码:随着 MLOps、DataOps 的出现,代码和数据之间的界限越来越模糊
  • 将知识捕获为代码:文档、架构和其他方面正在成为编码的一部分
  • 更贴近业务:服务级别、业务实验越来越多地被定义为代码
50+代码概念趋势概览

正如你所看到的,扩张仍然很强劲。这个概念现在已经深深植根于我们的思维中,以至于感觉很自然。有趣的是,在我们扩展“as code”的同时,NoCode 一词在我们的行业中重新出现。我想这更多的是关于“更少的代码”,或者每行代码的成本更高。虽然“NoCode”和“NoOps”的概念只是一个白日梦,但它使事情更容易访问和更容易使用,我完全赞成!

请继续阅读我发现的所有概念的更详细列表。我对新的发现感到惊讶,并且我一直在监视这个空间很长一段时间。

“as Code”是新模型吗?

这篇博文是在研究我们如何看待 IT 中的模型时开始的。在过去,我们会使用 UML 图来表示事物的工作方式。也许是敏捷宣言敦促人们“工作软件胜过综合文档”。那么代码是这些天的新模型吗?作为探索这些天在 IT 行业中可用的模型、啊哈、代码,我发送了以下推文:

哪些概念以代码形式存在

语义变得流畅

我对人们的反应和想法的创造性感到惊讶,所以我认为总结反馈是很有价值的:

  • “软件定义”被认为是“作为代码”的替代名称
  • 术语“作为代码”有时被认为是以开发人员为中心的,但我们现在不都是开发人员吗
  • 它与DSL(领域特定语言)相关

如今,人们似乎对“作为代码”的事物持轻松的看法。它是 YAML 还是程序语言都没有关系。甚至就数据而言,基础设施即代码 (IaC)基础设施即数据(IaD) 通常可以互换使用。让我想起了 Lisp,代码和数据之间的界限也很流畅。

无论如何,人们似乎关心的是:

  • 版本控制:能够引用特定版本
  • 可重复(自动化)过程:可以一致地复制一个版本
  • 轻松查看更改:大多数人更喜欢文本,但如果有正确的查看者,这意味着人类可以理解的更改
  • 支持声明式而不是命令式:我们更喜欢定义未来状态,而不是两者之间的整个执行。尽管我个人认为有时您只想捕捉到这一点。

看看 Gartner 如何看待声明式市场或Dan North 在 DSL 的背景下解释声明式

“代码”是“编码知识”恕我直言的缩写。配置文件是提炼的源代码。是的。yaml 是 IaC - @danbjson

另一种看待它的方式胡安弗洛雷斯是如何说的:

对我来说,它是运行时配置。如果是代码,您应该能够对其进行测试。你能测试一下yaml配置吗?.

这确实提出了一个问题,如果在声明式的概念中需要将测试作为一个概念。是否测试你定义的东西,这是另一个突出的辩论;我已经看到需要测试应用于同一节点的多个角色的组合。它不会测试将其置于该状态的代码,但我必须测试我自己创建的组合(业务逻辑?)。

间奏曲:有趣的部分

在我们深入研究我发现的一长串东西之前,我想我们需要休息一下;这是我发现的一些宝石并没有列入严肃清单:

  • 没有代码也就是没有程序员作为代码
  • 错误即代码又名开发人员即代码
  • 代码即代码又名机器人编写代码
  • 混乱即代码又名办公室的另一天作为代码
  • ASCII码又名我看到的字符

向提倡“音乐即代码”的@Sam Aaron 致敬:与Algorave的概念相关,SonicPI是一种在将节拍编写为代码的同时实时制作音乐的好方法。

为什么要停在代码上?看看The Folders 编程语言 - 没有代码,只有文件夹。更多类似的语言可以在https://esoteric.codes/找到:打破计算规范的语言、平台和系统。

现在我们将乐趣转移到帖子的真正内容上:其他一切都是代码。请注意,我试图链接到一篇提到“作为代码”风格的文章,谷歌以在该空间中找到更多产品。


基础设施即代码和朋友

虽然测试即代码(尽管我从未见过这个术语)可以说是第一个作为代码,但正是基础设施即代码的概念普及了这一概念。Ruby 作为一种使DSL易于创建的编程语言在其中发挥了重要作用。

从 CFengine、Puppet、Chef、Ansible、Salt、Terraforma 和现在的 Pulumi 开始,这演变成这种流行的as code概念。从技术上讲,它们都有配置、代码和数据的混合体,允许它们以可重复的方式启动基础设施(通常与幂等代码的概念有关。

许多不同的特定方面(存储、网络……)分离出来并创建了自己的语言。.

作为代码风味描述
基础设施即代码通过机器可读的定义文件管理和配置计算机数据中心
存储即代码/软件定义存储以编程方式定义存储分配
网络即代码/软件定义网络通过定义状态来设置网络组件
软件定义硬件 (SDH)运行时可重新配置的硬件和软件,可实现接近 ASIC 的性能
配置即代码(Gitops)配置更改的所有内容都通过 CI/CD 流程进行
Yaml 即代码 (Kubernetes)定义跨云云原生组件的标准化方式

更大和更高级别的构造即代码

由于代码仍在从传统的云生产基础架构扩展到 CI 和测试环境等其他部分;现在甚至在代码和开发人员笔记本电脑环境中定义测试基础设施。

与此同时,还有将其他概念作为代码组合成更大的结构的趋势,例如平台即代码、环境即代码和应用程序即代码。

作为代码风味描述
管道即代码通过源代码定义部署管道的实践
平台即代码允许开发人员定义自己的平台
环境即代码基础设施即代码的抽象,并以正确的顺序调用各种基础设施即代码组件
应用即代码部署应用程序、基础设施和围绕它的所有管理工具
开发环境即代码将开发人员笔记本电脑设置定义为代码
将 Infra 测试为代码将所需的测试基础设施定义为测试代码的一部分

工作流和支持服务即代码

现在我们已经控制了基础设施部分,我们可以越来越多地定义支持基础设施来支持运行基础设施的过程。此外,我们开始编纂我们的工作流程和我们在出现问题或迁移时的干预知识。

作为代码风味描述
仪表板即代码自动添加指标仪表板/更改以及您的基础架构。
监控代码自动化整个可观察性生命周期,包括自动诊断、警报和事件管理,甚至自动修复。
DNS 即代码将您的 DNS 配置作为代码管理
作业即代码通过使用对调度引擎进行 API 调用的简单符号嵌入代码来标准化和自动化作业调度
工作流即代码以可靠、可扩展且易于管理的方式在不同服务器上编排这些任务的处理
操作即代码将操作流程编入一个能够自行执行的系统。

安全即代码

随着 DevSecOps 越来越多地成为 DevOps 管道中的额外驱动程序,它们自然而然地拥有自己的“即代码”爆炸。其中一部分是基础设施作为代码主题的扩展,但我们正在学习其他安全方面可以表示为代码

作为代码风味描述
安全即代码在 DevOps 工具和实践中构建安全性
IAM 即代码在代码中表达角色和身份创建
政策即代码用高级语言编写代码来管理和自动化策略
检测为代码软件驱动威胁检测的系统和综合方法,即机器可读的定义文件和描述模型
隐私即代码将自动隐私检查作为 CI 管道的一部分
威胁模型即代码任何时候有人想要建立一个威胁模型,她都会打开一个 PR 并把她对存储库的更改

部分代码也正在声明中

有时我们会忘记我们的部分代码可以配置/声明,而不是编写代码。这通常是逻辑抽象或外部化到外部服务的结果。

作为代码风味描述
项目即代码使用代码加速软件项目的创建和维护
API 即代码 (OpenAPI)定义 API 端点,以便我们可以将代码连接到它并使用它来验证应该允许进出的内容
UI即代码与在代码中对每个组件进行像素定位相比,与编码相比,定义这些布局要容易得多
评论代码又名 Github Co-pilot由各种随机的 github 项目编译而成,将评论转化为代码建议

正在声明的数据

数据模式更改、数据质量控制、数据发布。所有这些(过去的)手动更改现在越来越多地通过编码来完成,使它们可重复和可审查。

作为代码风味描述
数据库即代码将数据库模式更改作为代码的一部分进行管理,而不是手动更改它们
数据即代码以与我们在软件开发过程中处理代码相同的方式处理、管理、使用和共享数据的能力
数据偏差即代码/公平即代码通过对 AI 算法施加公平控制的方法和方法工具消除数据中的偏见

文档和架构即代码

许多人试图从他们的“代码”中生成图表。这种自动化总是会产生一些“meh”,所以现在我们正在扩展文档:就像我们在做“测试驱动”一样,我们也可以做“文档驱动”,文档可以更好地捕获知识:架构、图表和甚至商业方向。这与架构决策记录 (ADR)相辅相成,使文档看起来正在卷土重来,但现在以某种方式集成到我们的工作流程中。

作为代码风味描述
文档即代码应该使用与代码相同的工具编写文档的理念
图表即代码作为可执行架构描述语言的代码……使用这些工具在构建过程中生成图表和文档。
演示为代码不再局限于演示文稿,创建演示文稿现在是编写代码的一部分
架构即代码
(Wardley) 映射为代码它采用在编辑器中编写的地图代码并将其呈现为 Wardley 地图

更贴近业务 - 管道无处不在

管道无处不在,不仅仅是在 IT 中。我们在市场营销、销售、招聘、法律方面都有管道……难怪“as code”范式也在其中找到了自己的方式。这是我们越来越接近业务的好兆头!还 …。更可怕,因为它涉及合同和金钱:)

作为代码风味描述
服务水平协议 (SLA) 即代码在服务运行良好的情况下使用智能合约进行支付
服务水平目标 (SLO) 即代码使用简单的 YAML 规范以声明方式定义可靠性和性能目标
法律即代码在将法律转化为代码时,我们正在将某些东西变成 1 和 0。有时,极大的歧义隐藏在逗号或“合理”之类的词中。
分析即代码通过机器可读的定义文件而不是需求文档管理和提供用户行为事件跟踪的过程
合约即代码自动化创建合同和提取文档数据的过程
管理即代码好吧……想象一下……如果你找到了,请告诉我

其他行业

我并没有真正研究超越传统 IT,但发现这个很有趣

作为代码风味描述
CAD 即代码在代码中创建 3d 模型的替代方法,而不是使用 UI 作曲家

对推文的引用

  • https://twitter.com/patrickdebois/status/1496032801828843526
  • https://twitter.com/patrickdebois/status/1495861874793103368

译文申明

  • 文章来源为近期阅读文章,质量尚可的,大部分较新,但也可能有老文章。
  • 开卷有益,不求甚解,不需面面俱到,能学到一个小技巧就赚了。
  • 译文仅供参考,具体内容表达以及含义, 以原文为准 (译文来自自动翻译)
  • 如英文不错的,尽量阅读原文。(点击原文跳转)
  • 每日早读基本自动化发布(不定期删除),这是一项测试

最新动态: Follow Me

微信/微博:red4blue

公众号/知乎:blueteams



文章来源: http://mp.weixin.qq.com/s?__biz=MzU0MDcyMTMxOQ==&mid=2247485822&idx=3&sn=6afb5c0025b1d4a1090391ed3b0ae32b&chksm=fb35a0b6cc4229a033574657511b2f4137f196f8253fad2d9e1f5d66f38593d6c890c0fc254b#rd
如有侵权请联系:admin#unsafe.sh