• 作者:老汪软件技巧
  • 发表时间:2024-10-12 07:01
  • 浏览量:

内部开发者平台是您的下一步正确选择吗?

注意:感谢您对该主题的宝贵意见。我收到了来自内部开发者平台运营商、失败公司、后悔公司、对平台感到满意的公司以及将其转变为产品或 SaaS 解决方案的公司提供的见解。我已经探索了它带来的价值,并发现最终许多解决方案都具有类似的逻辑。

译自Internal Developer Platform: Insights from Conversations with Over 100 Experts,作者 Artem Lajko。

我学到了什么,我对 IDP 炒作的看法是什么?

我将直接从我的对话中获得综合输出。我已经写了一篇关于 IDP 的构成及其如何组合的文章:内部开发者平台:真实存在还是仅仅是趋势?”

1. 内部开发者平台可以是任何东西,也可以什么都不是

您没有听错。关于内部开发者平台 (IDP) 的定义没有定论。许多人试图根据属性、自动化程度和它提供的价值来定义 IDP 的成熟度模型。

我会保持简单,向您展示不同的公司对 IDP 的理解。

IDP 可以简单地是提供给其他团队的带有蓝图的文档或指南。在这种情况下,公司不是在谈论Terraform 模块、Helm 图表或像APT这样的包工具。他们真正指的是:

基于文档的内部开发者平台

是的,您没有看错。有些公司说,如果我们提供一个带有占位符的蓝图,不同的开发人员可以使用它,那么它对我们来说就符合 IDP 的标准。我多少同意这种观点。团队 X 向一个或多个团队提供模板,并提供有关如何使用该服务作为自助服务的说明。

IDP 也可以包含 Terraform 模块,团队成员可以根据其他用户的指南在本地配置和部署这些模块。它看起来像这样:

基于 Terraform 模块的内部开发者平台

这更符合我对 IDP 的理解。您提供基础设施即代码或配置即代码,只需要设置用户定义的配置。

IDP 也可以是一个已经实现相当高自动化程度的门户。这意味着我可以通过点击或 API 请求特定 T 恤尺寸的模板,并自动获得所有内容的部署。这指的是类似的东西:

基于内部开发者平台的门户

您可以看到不同的公司对这一点有不同的理解,而且这些差异也有一些合理的理由。我将在后面讨论这个问题。

下面,我试图捕捉到我与之交谈过的公司的不同状态。

2. 自动化的成熟度级别

在本节中,我们将考察公司的不同状态。这与级别的质量无关,而是对一个人如何看待自己或运作的分类。

CNCF WG 平台有一份非常棒的工作,它为白皮书做出了贡献,并开发了这个名为平台功能的很棒的图形:

平台功能

如果您了解平台的功能,那么您可能比许多核心业务不是软件或产品开发的中小型企业有更广阔的视野。

这就是为什么我试图抽象它来简化概念。我创建了一个堆栈,每个人都应该熟悉。在下一步中,我们将看看不同级别的自动化。

自动化成熟度等级。

级别 0:ClickOps

仍然有许多公司更喜欢ClickOps,无论是在本地还是在云中,因为他们认为它更快。我不会评判这种方法;它只是事实。

级别 1:脚本:Bash、Python 或 PowerShell

许多公司将自动化理解为运行脚本。由于这不是通过点击完成的,他们认为它是自动化的。同样,我不会对此进行评判。

级别 2:基础设施即代码和配置即代码

在我看来,脚本的下一个级别是使用像 Terraform 这样的工具来配置基础设施,以及使用像 Ansible 这样的工具来配置它。

级别 3:流水线:IaC + CI/CD 或带有 CRD 的操作符

更进一步,IaC 将不再从客户端设备本地执行,而是通过流水线执行,或者您将使用像 Crossplane 这样的工具,它会自动配置相应的资源。

级别 4:Terraform 模块、Helm Chart 和 GitOps

在专业化时,您会将基础设施的重复部分打包到 Terraform 模块中,以配置基础设施或 Kubernetes 集群,例如。随后,您将使用 GitOps 方法将基础设施作为应用程序交付到相应的集群。这里的自动化程度相当高。我所说的“相当高”是指:

我可以随着项目的增长而扩展吗?我也可以扩展维护和运营以避免技术债务吗?我可以在不增加员工数量的情况下扩展设置吗?

这仍然由人执行,特别是平台团队。

级别 5:用门户替换人工

下一级将涉及用抽象层替换级别 4 的人工组件。这并不意味着平台团队被替换;仍然需要有人构建 Terraform 模块、Helm 图表、流水线等,以便可以通过模板推出这些模块。

我认为了解您所处的级别很重要,因为我经常将此级别与公司内的技能和资源相关联。根据我的观察,自动化程度低与基础设施异构之间似乎存在相关性,这反过来又与公司经常面临资源瓶颈并通过员工进行扩展有关。

这也经常反映技能水平。这并不意味着人们的技能水平很低;事实上,恰恰相反。它指的是我的公司目前在云原生路线图上的位置(我们是否使用 Git,我们是否使用容器,CI/CD,我们是否有 IaC 和 CaC 等)。

我试图对此进行映射,我相信许多人会理解它。首先,让我们看一下云原生路线图上的一些重要技能点。低不好,高好。

技能集:云原生路线图

现在我们试图在自动化级别识别这些点。

命令式是指指示某人执行特定操作或任务的命令或指令。

命令式

容器化是将应用程序及其依赖项打包到容器中的过程,使它们能够在不同的计算环境中一致地运行。

![(/v2/resize:f…)]

像 Docker 这样的容器化

声明式是指一种编程方法,您在其中指定期望的结果,而无需明确概述实现该结果的步骤,从而允许系统自动管理实现细节。