什么是平台工程工具?
平台工程工具,无论是内部开发团队还是外部开发团队,均可通过自助服务方式随时获取所需资源,从而提高工作效率。平台工程工具支持各种功能,其中包括持续集成和持续交付或持续部署(CI/CD)、基础架构即代码(IaC)、容器化、可观测性、安全防护、开发人员自助服务等。
平台工程团队(有时也简称为“平台团队”)负责为开发人员门户提供支持,该门户支持自助访问各种资源、文档和工具,方便开发人员与各种服务和 API 进行交互。此外,平台团队还负责维护内部开发人员平台(IDP),该平台是开发人员构建、部署和管理其应用的底层基础架构。
虽然平台工程技术和开发人员工具具有关联性,但二者并不属于同一类别。平台工程技术及平台本身(IDP)旨在为开发人员打造一套协同一致的流程,帮助他们提高工作效率。在此基础上构建的开发人员工具则进一步改善了 IDP 的使用体验,助力开发人员顺利完成具体项目。
接下来,我们将深入了解平台工程希望达成的目标,以及为了支持这些目标,目前有哪些可用的技术和服务。
平台工程的目标是什么?
平台工程的目标是简化和整合云原生时代繁杂的技术体系。平台工程师负责设计和构建工具链与工作流,从而赋能软件工程团队,使他们能够自助完成各项任务。开发团队在几分钟内即可获得所需的支持,且确信所提供的解决方案受内部支持、可观测且遵循企业组织的安全防护实践。
平台工程是一种综合性方法,它将工作文化、业务运维、团队协作等多种因素融合在一起,以实现更高效的软件开发。它重视软件开发人员面临的认知负荷,力求发现并积极寻找方法来减轻他们工作中的痛点。
它在实践中如何发挥作用?平台工程师负责对内容、工具、文档、模板和工作流进行整合,这样既能保持组织层面的一致性,又能提供足够的灵活性。他们还提供通用且可重复使用的工具和支持,帮助开发人员高效地开展工作,从而提高开发人员工作效率。
什么是内部开发人员平台(IDP)?
IDP 包含一系列标准化自助服务工具和技术,供开发人员创建和部署代码。IDP 通过整合并简化开发流程中的各个环节,从而提高开发团队的效率,增强团队的协作能力,并降低开发管理的难度。
IDP 是平台工程选择的一种体现。IDP 以自助服务 API、工具、服务、知识和支持为基础,精心打造成为一款极具吸引力的内部产品。虽然开发团队是 IDP 的主要用户,但由平台工程师来负责初始配置、维护和技术支持。这样可以确保整个企业组织使用一套统一的技术和资源,无需考虑这些资源最初由谁创建。构建 IDP 是实现和维护 DevOps 最佳实践的一种有效方式,它有利于在开发团队和运维团队之间建立更高效的合作关系。
“内部开发人员门户”和“内部开发人员平台”这两个概念经常被混淆,二者的区别在于,开发人员门户可作为内部开发人员平台的前端存在,而开发人员平台则提供更深层次的功能和可扩展性,因为它增加了一个应用平台层。
最知名的开发人员平台开源项目之一是 Backstage,该项目由 Spotify 的工程师创建,后来捐赠给了云原生计算基金会(CNCF)。红帽® 开发人员中心正是以 Backstage 为基础,为企业客户提供了一个有明确方向、受支持的开发人员平台框架,并提供相应的集成和支持服务。
什么是 CI/CD 工具?
CI/CD 工具可以帮助团队实现开发、部署和测试的自动化。一些工具专门处理集成(CI)方面的问题,一些工具负责管理开发和部署(CD)工作,而另外一些工具则专注于持续测试或相关功能。许多此类工具都可以作为平台工程方法的一部分集成到 IDP 中。
知名的开源 CI/CD 工具有很多,以下仅为部分示例。
- Argo CD 是一款适用于 Kubernetes 的声明式持续交付工具,该工具遵循 GitOps 实践。它可以作为独立的工具使用,也能融入现有的 CI/CD 工作流,为集群提供所需的各项资源。
- 红帽 OpenShift® GitOps 构建于 Argo CD 的基础之上。
- Tekton 是一个面向 Kubernetes 平台的 CI/CD 框架,能够以容器形式提供标准的云原生 CI/CD 体验。
- 红帽 OpenShift Pipelines 构建于 Tekton 框架之上。
- Jenkins 是一款自动化工具,可用于处理各种规模的 CI 和 CD 流程。
- Spinnaker 是一款适用于多云环境的 CD 平台。
- GoCD 是一款以建模和可视化为主的 CI/CD 服务器。
- Concourse 是一款适用于持续流程的自动化工具。
- Screwdriver 是一个专为 CD 设计的构建平台。
团队还可以考虑使用来自各种供应商的托管式 CI/CD 工具。选择合适的 CI/CD 工具有助于团队跨平台自动构建、测试和部署应用。
什么是容器工具和 Kubernetes?
容器工具是平台工程师工具箱中的重要工具。
容器可将应用及其整个运行时环境(运行所需的所有文件)一起打包并隔离。因此,无论容器化应用部署在何处,在不同的环境和基础架构中,它们都能保持一致的运行状态。容器是云原生开发的基础,这种开发方式将大型应用拆分为一系列小型、独立且松散耦合的微服务。
有许多开源工具可以简化容器的使用。开发人员可以使用 Docker 和 Podman 等工具来构建和部署容器,它们均支持开放容器运动(OCI)标准。
如要大规模管理容器,运维团队可使用容器编排平台,例如开源项目 Kubernetes。容器编排可在容器的整个生命周期内实现容器的自动部署、管理、扩展和联网。
各种不同的供应商都提供 Kubernetes 平台。红帽 OpenShift 是一个构建于 Kubernetes 基础之上的企业应用平台。平台工程师可将红帽 OpenShift 与红帽 OpenShift 开发人员中心等 IDP 集成,以交付一个开发人员平台。
什么是可观测性工具?
对于平台工程而言,监控功能和可观测性非常重要,它们使得团队能够检查输出、日志和性能指标,以便更好地了解系统或应用的运行状态。这种可见性有助于开发人员和管理员提高复杂应用和基础架构的可靠性、性能和安全性。
可观测性是在监控的基础上进行延伸,包括识别问题的根本原因以及进行预测和预判。目前市面上存在着许多可观测性工具和技术,团队可以根据自身的需求构建最适合自己的可观测性系统。
常用于可观测性系统的一些开源工具包括 Grafana、Jaeger、OpenTelemetry 和 Prometheus。红帽 OpenShift Observability 是一组基于 OpenTelemetry 标准构建的可观测性工具,专门用于红帽 OpenShift 平台。
什么是平台工程安全防护工具?
为了应对不断涌现的安全问题,现代软件开发领域采用了一种“左移”策略,旨在软件开发生命周期(SDLC)各个阶段实施安全措施。这改变了过去只在部署阶段进行安全检查的做法,转变为从项目启动阶段就将安全作为核心考量。
平台工程师可帮助开发人员在整个软件开发生命周期遵循安全防护措施。具体措施包括在 CI/CD 管道中进行自动化检查和测试,从而保护代码安全、防止数据泄露、实施合规性策略以及保证质量。
此外,平台工程还提供其他安全防护工具,用于机密管理(管理密码、客户端配置文件、存储库凭据等)和 API 安全防护(包括 API 密钥管理)。
红帽提供了一系列工具和服务来保障软件安全。
红帽可信软件供应链整合了一套有助于减少漏洞和实施安全策略的解决方案,其中包括红帽可信配置文件分析器、红帽可信应用管道和红帽 Trusted Artifact Signer。
- 红帽可信配置文件分析器有助于管理软件物料清单(SBOM),同时交叉引用来自可信来源的 CVE 和安全公告。它融合了开源项目 Graph for Understanding Artifact Composition(GUAC)、Trustification 和 Exhort 的技术。
- 红帽可信应用管道通过验证工件的签名、出处和证明,以便在开发过程的早期阶段阻止漏洞。
- 红帽 Trusted Artifact Signer 基于 Sigstore 项目,可简化软件工件(例如容器镜像、二进制文件和文档)的加密签名和验证。它还融合了 Cosign 和 Fulcio 项目的技术,且支持与 Hashicorp Vault、Google/Azure 和 AWS KMS 等其他密钥管理系统完全集成。
对于 Kubernetes 部署,红帽 Kubernetes 高级集群安全防护可跨平台保护容器化工作负载,帮助团队发现并解决漏洞,同时确保安全策略得到有效执行。
为什么选择红帽来实现平台工程?
红帽为平台工程师提供了多种多样的解决方案,助力他们达成目标。红帽的产品和服务可以协同运作,不仅能提高团队工作效率,还能增强自助服务能力,加速新员工上手,并减少重复性工作。
红帽 OpenShift 是一个企业应用平台,它支持开发人员在各种应用场景中使用他们常用的工具,并且能够适应不同的部署环境,包括本地环境、云环境以及边缘环境。
红帽开发人员中心旨在提高软件开发过程的效率并促进协作。它提供了一个统一且开放的平台,帮助开发团队减轻认知负荷并避免挫败感。借助红帽开发人员中心,企业组织可以使用 IDP 来整合开发流程元素,简化工作流,并促进内部协作。
红帽可信软件供应链可帮助团队从一开始就在软件工厂的组件、流程和实践中内置安全防护措施。
红帽开发人员中心业务解决方案
一个基于 Backstage 的开放式企业平台,用于构建开发人员门户,以可视化的方式整合开发过程的各个要素。