使用护栏的自助服务是授权开发团队在一组明确定义的参数或护栏内做出自己的决策的原则。 护栏由主要利益干系人建立并同意。 利益干系人可以包括整个组织的安全、运营、体系结构团队。
通过将自助服务与护栏结合使用,开发团队可以保持自主性,以独立做出开发决策。 自动化和策略可帮助利益干系人确保正确管理安全性、合规性、运营、标准和成本。 启用此自动化需要跨团队行进行协作,以便开发人员、操作员和专家可以执行更多作,而无需牺牲所需的治理。 然后,开发人员可以专注于尽快交付业务价值。
[我们告诉开发人员,]不用担心它是如何运作的,只需打开或关闭,填写所需信息,在需要的地方放入字符串,在这方面基本上是自助服务,因为他们有自述文件,并且他们有输入和输出,可以放入他们喜欢的任何内容。 - 丹尼尔,财富 500 媒体公司云工程师
为既定路径提供自助体验的目标是减少开发人员的工作负担,同时为开发团队、运营和管理提供透明度。 其理念是,你为具有最小学习曲线的给定任务创建体验,这部分要归功于其基础自动化和数据聚合功能。 除了基础结构预配等活动之外,这些体验还可以提供对可观测性、策略、事件管理等关键功能的访问权限。 该想法扩展到发现和共享内部 API、SDK 以及共享工具和服务。 这些体验减少了开销,使开发团队能够专注于完成工作。
内部开发人员平台使开发人员能够像数字店面客户一样行事
内部开发人员平台提供的功能类似于企业间数字化店面。 数字商店本质上旨在帮助客户自助。 它们可以处理比传统店面更多的吞吐量,因为它们提供了发现和满足有趣项目的方法,而无需与任何人交谈。 使用此类比,开发人员是客户,内部开发人员平台提供类似的自助服务体验。 操作员、平台工程师和其他角色随后会设置一个项目目录,开发人员可以请求这些项目以符合组织防护措施。
例如,您可以将开发人员请求访问新工具的过程,想象为他们在数字店面下订单一样。 与订单一样,提交请求后,开发人员希望能够跟踪进度并知道何时完成。 在后台,请求应被自动路由到正确的交付供应商,以便满足需求。 可以将持续集成和交付(CI/CD)系统之一视为一个履行供应商,将 GitOps 工具或指导性应用平台作为第二个工具,而将手动流程的工作流自动化工具视为第三个工具。 在所有情况下,开发人员都可以以相同的方式从明确定义的目录中自助获取项目。
使用所有内容作为代码模式
通过持续交付(CD)管道和 GitOps 工具使用 基础结构即代码(IaC) 是实现自助服务的重要组成部分。 使用 CD 管理的 IaC 方案中,您可以利用 Bicep、Terraform、Helm 图表和其他工具,根据需求创建和销毁云资源。 由于云基础结构的配置就像源代码存储库中的代码一样进行管理,因此可以应用 Git 存储库的所有优势,例如安全性和可审核性。
预配通用基础结构和工具并不是 IaC 方法的唯一优势。 可以针对其他方案调整 IaC 模式,包括作为代码的安全性和策略作为代码(通过 Azure Policy 和 开放策略代理等工具)。 遵循此技术后,配置文件(通常为 YAML 或 JSON)将推送到存储库中,这会触发处理文件的工作流。 这些文件可能是 dependabot.yml 或 CODEOWNERS 等应用存储库,也可能在单独的中央存储库中维护这些文件。 你甚至可以将此扩展到自己的方案中,以真正使一切作为代码(EaC)成为现实。
开发人员可以使用中心目录引用其中每个 EaC 模板,该目录为自助服务体验提供支持,并默认鼓励最佳做法。
创建开始正确的模板并建立正确的治理
在软件开发中,我们的目标是在设计应用程序时封装、模块化和可组合性。 应通过模板化将此相同的思路应用于平台工程。 例如,可以创建和使用一组集中保护的可重用 IaC 模板作为基础结构的构建基块。
我们将为 [开发人员] 构建模块... 因此,他们无需自行编写或操心任何后端,而只需专注于他们的应用程序代码。 - 丹尼尔,财富 500 媒体公司云工程师
将 IaC、EaC 和应用程序模板合并为一个定制的代码化一切(EaC)解决方案,该解决方案扩展至其他活动,如创建源代码存储库、初始化示例代码,或提供推荐的可观测性工具的配置和示例代码。 然后,可以从中央安全位置(例如存储库、Azure 部署环境中的目录或用于云本机的 Azure 容器注册表)存储或引用这些 IaC、EaC 和应用程序模板。
当 正确的开始 模板与自动化治理、扫描和策略配置相结合时,开发人员自第一天起 保持正轨。
模板通过自动化和安全实践简化开发过程
使用应用程序模板创建已定义的路径,让开发人员在项目过程中做出多个关键决策和采取行动。 良好的启动模板确立安全、合规的开发规范,并使开发人员能够迅速开展工作。通过启用自动化,开发人员可以获取所需工具的访问权限,配置 CI/CD 管道,配置基础设施和应用程序堆栈,并配置带有所需 SDK 的模板源代码库或引用相关 API。
通过让这些应用程序模板引用其他集中式模板(例如 IaC 模板),每个单独的构建模块将成为其独立的正确模板。 这些模板是启用自助服务体验的核心,因为它们不仅定义了输出,而且是开发人员选择的可用选项。
模板可确保治理、安全性和成本优化
然而,模板的作用应不仅仅限于启动开发工作。 他们还应通过策略和安全扫描建立控制和治理,以在项目生命周期过程中保持正确状态。 作为另一个示例,模板可以设置分支保护规则,防止未经授权的合并到生产环境。 由于模板捕获最佳做法和常见配置,因此它们是跨工具、供应商和团队优化成本的关键技术之一。
运行有效的活动以建立双向通信
最后,随着您对铺设好的路径的信心增加,您可以使用组装到应用程序模板中的基础构建模块,将现有应用程序移到铺设好的路径上。 由于内部用户已经看到试点项目的价值,因此你可以运行内部完善活动,以便与其他应用团队建立双向对话。 开发人员可以了解如何迁移其应用程序,而平台工程团队同时了解有关如何为应用程序改进平台的详细信息。
绘制自己的旅程图表
鉴于自助服务功能可以涵盖的广泛体验,计划和优先考虑投资工作,确保内部开发人员平台能够逐步增加价值。 每个组织创建内部开发人员平台的过程都不同,遵循产品思维模式可帮助你确定需要自助服务体验的最关键位置。