在不创建复杂的新设置的情况下证明你的平台价值。
翻译自 New to Platform Engineering? Try a Thin Self-Service Layer 。
随着越来越多的公司评估是否应该投入平台工程,其中最大的问题之一是从何处开始。着手构建一个内部开发平台可能是一项艰巨的任务:云原生计算基金会的白皮书中列出了 13 个能力,涵盖了从开发环境和 API 到可观测性和制品存储等方面。因此,了解要构建的内容本身就是一项任务。
这就是为什么建议将你的平台视为一个不断发展的产品,而不是一个有终点的项目。然而,并非每个人都有幸能够从一开始就组建一个完整的产品团队来进行内部项目。那么应该怎么办呢?
Legal-tech 初创公司 Relativity 通过一个自助服务操作,将一个需要数周时间的流程缩短为几个小时,将其平台推向了大联盟。团队没有重新架构基础设施和服务,而是在现有平台之上创建了内部开发者门户作为一个简洁的层。
通过在现有基础上添加一个简洁的层,实现自助服务功能,是验证你的平台潜力并迅速产生价值的好方法。这种精益方法的好处是双重的:你为开发人员提供了实实在在的价值,推动了你的平台的有机采用。而且你可以向利益相关者提供具体数据,为更大的项目奠定基础。
在请求基础设施时,开发人员与 DevOps 之间的工单交互是平台工程的核心承诺之一。但是自助服务能力不仅仅是授予资源访问权限。自助服务通常是提供黄金路径的理想途径,可以帮助巩固实践并减轻开发人员的认知负担。
为开发人员提供选择自己工具的自主权可以提高其创造力和生产力。然而,在一个不断向左移动的世界中,这意味着开发人员必须找出如何将 CI/CD、QA、安全性和其他关注点整合到他们的代码库中。另一方面,这种动态导致了需要支持碎片化技术栈的 DevOps 和系统管理员。双方最终会一次又一次地重新发明轮子,增加安全和合规风险,并最终面临过度劳累的问题。
自助服务能力可以缓解开发人员和运维人员的这种情况。通过黄金路径,开发团队可以获得构建应用程序的可靠方式,并专注于开发业务价值,而不是重写部署设置。此外,专注于提供内置最佳实践的自助服务能力是有意义的,否则你可能面临大量低性能应用程序和资源的问题。
在面向对象编程中,facade 模式用于将复杂的结构抽象在一个公开有限和范围功能的类后面。在某种程度上,开发人员和 DevOps 使用的工单系统就是 facade 模式的一个例子:平台的复杂性被掩盖在一个委婉的聊天背后。
相反,可以使用基于 Backstage 的开发者门户作为平台的 facade 。开发者门户可以提供多种好处,但我只想专注于自助服务的动力:软件模板。
Backstage 中的软件模板(也称为脚手架)使用类似于 GitHub Actions 的语法,使用 YAML 编写。它们允许你定义用户必须填写的输入,以便运行模板,然后指定要执行的步骤。通常,你可以通过复制一个样板库或代码片段开始,然后在多个云服务中运行操作,例如在 PagerDuty 中注册服务或执行 Terraform 脚本。
即使你自行托管,使用 scaffolder 启动 Backstage 也可以很简单,而且通过 Roadie.io 等托管的 Backstage 解决方案可以更加轻松。通过脚手架,你可以为开发人员提供一个统一的入口点,以查找自助服务选项,甚至可以让 DevOps 将他们的流程集成到一个统一的用户界面下。
通过脚手架将各种工具整合到一个统一的门户中是一个相对低成本的举措。你不需要庞大的预算或面临复杂的技术问题才能开始。你将在定义和实施特定自助服务操作时遇到最多的工作和挑战。
第一步是确定低悬果实:哪些流程对于开发人员和运维人员而言造成了最大的困扰?如果你无法对你的软件交付生命周期进行正式的用户体验研究,花些时间与开发人员交流,找出摩擦点。
一旦你选择了一个对软件模板有重大影响的使用案例,就开始与所有相关方进行协商。你将发现自己在旅程开始时要处理重大的内部政治问题。毕竟,“黄金路径”对基础设施、可靠性、安全性、法律以及其他相关团队来说意味着不同的东西。
重要的是要提供一个足够健壮的自助服务操作;你不希望人们生成复杂的应用程序或配置错误的资源。建立合理的标准和基线政策,使团队在部署到生产环境时感到满意,并使开发人员轻松自如。
然而,要注意不要过度规定。如果你试图推动一个过于严格的模板,开发人员可能会完全避免使用它。此外,你不可能涵盖组织中的所有用例,因此确保开发人员可以自定义如何使用你的模板。
将 Backstage 的脚手架设置为抽象你基础设施复杂性的简洁层,可以是向开发人员和利益相关者证明你的平台价值的一种资源有效的方式。
Lunar Bank 就是这种模式的一个例子。这家广受欢迎的斯堪的纳维亚银行使用脚手架作为开发人员请求资源的独家接触点。在 Lunar ,开发人员甚至无法创建 GitHub 仓库,而不使用确保金融机构需要的严格合规级别的软件模板。
开始自助服务的一种方式是确定一个减少开发人员和运维人员摩擦的使用案例。然后,采取外交角色,就安全性、运维、基础设施和其他需要为生产发布做出贡献的团队的黄金标准达成一致。
一旦得到所有人的认可,将这个共同决定作为一个软件模板在 Backstage 中实施,并向你的开发人员提供。内部开发者倡导会起到很大的作用!向他们展示你知道他们的困境,并为他们解决问题努力。请记住,正确实现自助服务能力是一个迭代的过程,所以一定要听取开发人员的反馈。