通俗易懂的内部开发平台
在云计算世界中使用内部开发平台的优点和缺点。在这篇文章中,我将解释:IDP到底是什么,如何在你的组织中涉及它,以及对市场上现有的IDP平台的概述。
在云计算世界中使用内部开发平台的利与弊
内部开发平台(IDP)是DevOps和产品开发中的一个全新的词。在这篇文章中,我将解释:
- IDP到底是什么
- 如何在你的组织中涉及它
- 对市场上现有的IDP平台的概述,它们的优点和缺点
- 一个基于Azure云的IDP架构的例子
什么是内部开发者平台?
作为一个软件架构师,我设计了DevOps流程,并花了很多时间来选择DevOps工具集,建立管道,并与DevOps团队沟通,为开发团队实施一些程序。我们可以通过内部开发平台(IDP)来解决这个问题。
内部开发平台(IDP)是开发和DevOps团队之间的一个额外层。IDP背后的主要想法是消除DevOps和开发人员之间的依赖性。
让我们看看你应该在IDP中包括哪些功能和组件。IDP平台应该提供以下内容:
- RBAC管理
- 基础设施管理
- 配置管理
- 部署管理
让我们看看什么是IDP,从见解上看,它是如何与DevOps工具和云供应商联系起来的。
IDP和DevOps
正如在前面的例子中所看到的,IDP就像建立在DevOps工具、资源和云供应商之上的框架。一些开发者平台可能包括与众多DevOps工具和云供应商合作的选项,如上图。其他IDP专注于特定的。
让我们看看市场上有哪些开发者平台的选择。例如,Gimplet.IO是一个开源的IDP,主要侧重于操作Kubernetes部署。Gimlet包含CLI来管理图表、部署、秘密和GitOps。
Gimlet不包含应用配置管理,这使得它成为部分IDP。我喜欢IDP专注于特定平台时的想法。例如,Kubernetes。这使得它比其他试图覆盖所有知名平台和云供应商的平台更稳定。覆盖太多的平台可以适合营销。然而,对多个平台和云供应商的适当支持需要大量的努力,因为它们有不同的API、标准,甚至是命名惯例。
另一个好例子是Upbound。Upbound是一个强大的IDP,允许你在Kubernetes集群中部署和构建你的应用程序。它支持GCP、AWS和Goolge云。我喜欢Upbound团队对文档的支持,并提供架构实例和架构参考。
还有像Backstage这样的产品,在支持不同平台方面取得了很好的进展。Backstage是一个由Spotify制作的开源平台,由云原生计算基金会(CNCF)支持。Backstage是一个旨在建立开发者门户的平台。它包括以下组件:
- Backstage软件目录,用于管理微服务、库、数据管线、网站和ML模型。
- 用于快速创建新项目的Backstage软件模板。
- 用于生成项目文档的Backstage TechDocs
DevOpsBox是一个支持众多DevOps平台的例子,云供应商提供应用程序配置管理、基础设施协调、环境管理和足够的RBAC。然而,许多云供应商和工具仍处于实施阶段--例如,Azure和谷歌云。
最后但并非最不重要的是一个Humanitec。它是一个连接多个GitOps工具和云平台的平台。我喜欢Humanitec带来的概念。例如,你可以通过Azure和AWS连接一个或几个Kubernetes集群。连接Datadog和Grafana。你甚至可以重复使用你现有的Terraform和Pulumi脚本。你可以通过CLI、API和以开发者为中心的UI来操作这个基础设施。开发人员可以快速配置Kubernetes集群,旋转数据库和虚拟机实例,而无需编写管道清单和Terraform脚本。
他们在提供这个的时候不需要等待DevOps团队。然而,DevOps专家仍然应该花时间在:
- 选择DevOps工具
- 迁移现有的脚本、管线和清单
- 连接环境
Humanitec也支持围绕IDP和DevOps主题的PlatformCON社区。
内部开发平台的例子
许多企业公司,如Spotify,正在建立自己的IDP。他们已经有了一个庞大的DevOps代码库,包括脚本和模板、最多可用平台的管道以及云供应商。
几年前,我在一家企业公司工作,该公司有500多个正在进行的项目,他们需要为新项目快速建立一个团队。所有的项目都需要尽快提供基础设施。开发者没有时间去做DevOps的事情。该公司要求建立内部开发者平台(IDP)来提供和管理基础设施。这个想法很简单。当一个新项目出现时,其算法应该是这样的。
- 加入一个开发团队。
- 支持工程师提供所有需要的基础设施。
IDP可以提供以下资源和应用:
- Azure DevTestLabs、虚拟机和扩展程序
- Kubernetes集群(AKS)
- 数据库
- 应用程序服务
开发者门户是一个简单的ReactJs应用,使用内部API。该API是基于Azure API管理的,包含代表一个API调用的几个功能。例如,触发部署或接收部署状态。该API层与Azure DevOps API相连。Azure DevOps包含YAML管道、Terraform、Bash和PowerShell脚本。
优点和缺点
IDP为你提供了以下好处:
- 开发人员的生产力。开发人员可以交付代码,减少对DevOps任务的关注。
- DevOps团队的自由。一个IDP减少了基础设施配置的工作量,专注于建立基线配置和模板。
IDP可以为产品带来价值。然而,有一些涉及IDP的弊端。下面我列出了其中的一些:
- 成本和复杂性。建立一个开发者平台需要公司提供额外的资源来建立、支持和保持更新。我们可以通过购买外部开发平台来部分解决这个问题。我将在下面介绍几个现有的平台。
- 文化的改变。涉及到一个开发平台需要开发和DevOps团队改变他们的文化和工作方式。这可能最终会导致团队失去时间。
这个清单可能是无穷无尽的,可能需要自己的文章。在这里,我试图澄清什么是内部开发平台,以及你和你的组织如何能从IDP中受益。此外,我还补充了一些关于为什么使用IDP可能是不合理的。另外,我还分享了架构实例,演示了一个组织如何建立自己的IDP,并节省管理整个公司的几个DevOps团队的时间。