内部开发者平台 (IDP) 是组织构建的一组集中式内部工具、服务和工作流程,旨在使开发人员能够更轻松地构建、部署和操作软件,而无需自行管理所有底层基础架构。
与其让每个开发团队自行摸索配置服务器、网络、安全协议和软件部署的方法,不如让团队使用已经遵循公司规则和最佳实践的现成“黄金路径”。开发人员只需按照路径操作(例如“启动一个新的微服务”或“配置预览环境”),平台就会通过后台自动化处理其余部分。
IDP 是一种将不同流程整合在一起的方法,以便组织内的所有开发团队都遵循大致相同的规则。它还负责底层基础设施决策,因此开发人员无需深厚的基础设施专业知识即可发布代码。
IDP 通常由专门的 DevOps、运营或平台工程团队设计和维护,但其主要用户是应用程序开发人员。该平台将几种不同的工具链和科技,例如容器编排、基础设施即代码 (IaC)、持续集成/持续交付 (CI/CD) 和可观测性工具,整合到一个内聚的生态系统中。
通过 Think 时事通讯,了解有关 AI、自动化、数据等方面最重要且最有趣的行业趋势。请参阅 IBM 隐私声明。
IDP 可为组织原本分散的软件工程、交付和开发能力带来秩序和一致性。它使组织能够管理其软件开发环境和实践的复杂性,简化和精简它们,从而带来许多益处。
工程师进入并维持“心流状态”的能力,即在有价值的编码工作中深度专注的状态,对于计划在软件领域开展创新的组织而言价值极高。处于该状态时,注意力不会分散,工作推进也会流畅连贯。工程师拥有不受打断的完整时间处理问题,能够拆解复杂度更高的业务难题。
然而,流动状态是脆弱的。有时,开发人员必须将上下文从一种问题切换到另一种问题,这种思维转变可能会破坏他们在第一个问题上的进展,迫使他们在最终回到第一个问题时必须从零开始。例如,想象一名程序员试图排查错误报告中发现的问题:为什么一家酒店预订工具没有显示正确的用户时区的时间和日期。这是一个棘手的问题,它涉及到 JavaScript 如何处理时间的基本原理。这不是简单的格式问题。他们正在跟踪时间戳如何通过后端和前端并进入用户界面。他们正在考虑本地浏览器设置以及日期对象在不同条件下的行为。这些信息量很大,让人难以全部记在脑子里,但他们已经接近取得突破了。
而后他们需要退出编辑器、打开 CI/CD 工具,为对应服务查找适配管道,回忆该项目的部署流程,修改配置文件,等待管道执行,再打开独立监控工具校验运行状态……
他们必须从对问题的推理转向不同的模式,浏览基础架构、工具和流程。而当他们回头研究漏洞时,他们此前建立的对该问题的精细认知便已荡然无存。现在他们必须从零开始。这对组织来说是浪费时间,对工程师来说则是一种挫败感。IDP 通过处理三级问题来减少这种浪费,从而加快产品上市速度,提高开发人员的工作效率,改善开发人员的体验。
随着组织规模扩大,开发环境的复杂度持续提升。部分团队选用某一款工具,另一部分团队则会选择竞品工具完成同类工作。各团队会搭建差异化工作流,针对基础设施、部署、安全制定适配自身用例的方案,但各类方案整合后会产生冲突、拉低整体效率。环境标准不统一,各类瓶颈问题层出不穷。这类差异会随时间持续累积,导致系统扩容难度上升。与之相反,IDP 能够将零散、标准不一的操作规范,整合为统一、可复用的开发人员工作流与软件交付流程。
命名约定、安全实践、CI/CD 管道等考量因素——IDP 通过提供模板和基于可重用脚手架确立一致的工作流来减少变异性。这样,开发者无需从零开始,可以选择一个模板,实现自动配置存储库、配置构建和部署管道,并集成监控和安全。
IDP 将安全和合规功能直接嵌入到其工作流程中。例如,它可以确保所有服务都包含适当的身份验证机制,并遵守已批准的网络配置。这样一来,开发人员就不必浪费时间去思考某种特定方法是否能满足要求。之所以能够遵循正确的流程,是因为各项控制措施都得到了始终如一的执行——这些措施已经内置到了平台中。
当所有团队都遵循相同的模式时,开发人员就更容易理解不熟悉的代码库并为其做出贡献。共有约定减少了在项目之间切换所需的认知负担,新开发人员可以更快地融入项目。
如果没有统一的框架,组织的发展可能会导致混乱,因为每项新服务都会引入更多的变化和复杂性。IDP 可提供稳定的企业级基础,支持扩展并帮助优化资源分配。最佳实践可以自动在系统中传播,即使是小型平台工程团队也可以影响大型组织的开发实践。
IDP 不仅仅是一种单一的工具,它是一套功能系统,这些功能可以协同工作,以满足特定的开发人员需求,并打造更加无缝的开发体验。实现方式各不相同,但以下是最常见的组件。
开发人员门户:常被称作内部开发人员门户,是开发人员日常操作的核心界面。一般基于 Backstage 等开源工具搭建,提供统一仪表板、服务目录、文档、模板、插件与工作流能力。它是该平台面向开发人员的自助操作面板。
服务目录:服务目录是所有服务、系统、资源的结构化清单。目录会明确归属、依赖关系,并附带各类元数据,让所有人员清晰知晓资源归属与服务间交互逻辑。
脚手架和模板:这些是用于创建新服务的预定义蓝图,使用户能够快速创建 GitHub 存储库、设置 CI/CD 管道、应用标准配置、集成日志记录并监控等。管道是预配置且可重复使用的,内置了最佳实践,开发者无需从零设计。
基础设施配置:该层处理来自不同云供应商的混合或多云架构中的环境、资源和应用程序工作负载的创建和管理,通常利用 GitOps 原理实现自动化。
环境管理:在许多组织中,由于配置差异、依赖项不匹配和数据不一致,开发、预发布和生产环境会随着时间的推移而不再能顺畅对接。IDP 通过鼓励环境均等、消除歧义和提高环境的可预测性来解决这一问题。
可观测性:可见性默认内置于系统行为中,提供实时洞察分析,包括日志、指标和跟踪。
机密与配置管理:API 密钥、凭据和环境变量被安全管理,有助于确保机密永远不会被硬编码,访问也受到控制和可审计。
治理:安全与合规政策自动执行,记分卡和基于角色的访问控制 (RBAC) 等治理措施定义了谁可以部署、谁可以访问哪些内容以及如何批准工作流程。
文档:它不是分散的文档,而是与服务并存,并且可通过门户来发现。
虽然智能体编程助手不会自行组装生产级 IDP,但它可以主动计划、生成并跨多个步骤迭代,加速整个流程 - 从引导平台到创建黄金路径并集成工具。架构仍然需要人类的判断,因为它既关乎技术,也关乎组织和团队结构。
一旦构建好,智能体编程助手可以在 IDP 中运行,帮助将其从静态门户转变为更具动态性、任务导向的环境。例如,IBM® Bob 可以与平台组件集成,并协助完成以下任务:
它不只是聊天机器人,更是对接平台的智能交互入口。开发人员无需手动操作表单与工作流,只需下达“创建新服务”这类指令,助手即可自动编排全部必要步骤,全程遵循标准、安全防护机制与标准流程。在规范完善的环境中,工具可依托服务目录元数据与场景信息执行操作,同时在关键节点保留人工复核环节。
完全托管的单租户服务,用于开发和交付 Java 应用程序。
使用开发运维软件和工具,在多种设备和环境中构建、部署和管理云原生应用程序。
云应用程序开发意味着一次构建、快速迭代和随处部署。