Backstage在开发者体验变革中的前沿实践
对话开场
[Intro music]
Ryan Donovan: 大家好,欢迎来到Stack Overflow播客,这里是探讨软件与技术一切话题的场所。我是今天的主持人Ryan Donovan,我们将再次与Spotify的Backstage团队联系。今天的嘉宾是Pia Nilsson,Backstage的总经理兼开发者体验负责人。欢迎来到节目,Pia。
Pia Nilsson: 非常感谢,Ryan。很高兴来到这里。
技术背景与职业历程
Ryan Donovan: 在开始之前,我们想了解我们的嘉宾,请分享您是如何进入软件和技术领域的。
Pia Nilsson: 天啊。我是偶然进入技术领域的。我原本想成为一名社会心理学家——一名研究人员——但后来在学习期间偶然选修了一门编程课,我完全爱上了它,这改变了我的生活;然后我做了14年的软件工程师;几年后转向领导岗位。这就是我在Spotify的工作:领导开发者——多年来我逐渐倾向于平台工程,因为我喜欢构建持久的东西。
Ryan Donovan: 嗯。
Pia Nilsson: 当然,我做了很多年的功能开发,每到一个新地方,我总在想“他们是如何弄明白如何构建优秀软件的?”我必须说,这很难找到。我在Spotify也没有找到,但我想从那时起我们已经取得了很大进展,这基本上就是“我在这里做什么”的原因。
Ryan Donovan: 好的。我们在2022年9月与Backstage团队的一些人交谈过。我相信Backstage和开发者体验总体上发生了很多变化。过去三年里,你们一直在思考哪些方面?
Pia Nilsson: 这有很多可谈的。
Ryan Donovan: 所以,这是一个很大的开放性问题,是的。这是你的专业领域。
Pia Nilsson: Backstage一直在有机增长,就像——疯狂增长。成为其中的一部分是一段美妙的旅程。我们现在有3400家采用者,这只是我们知道的——当然,实际数量远多于此,但我们知道现在有3400家公司使用Backstage,其中很多是财富500强公司。例如:Airbnb、Booking.com、H&M、丰田、乐高。
Ryan Donovan: 嗯。
Pia Nilsson: 还有很多其他公司。我们一直与它们保持沟通,我相信我们从它们那里学到了很多,它们也从我们这里学到了很多。这是一段美好的学习旅程。我认为我们以Backstage为载体共同学习平台工程,这些年来,许多公司向我们寻求更多支持,因为我们在开发者门户领域有更多经验。我们向它们提供了我们的产品,因为它们需要一些我们内部经过实战检验的产品。最近,我们还以SaaS形式提供Backstage,按照我们的运行方式——这样你可以获得模板、大量指导和有主张的Backstage——基本上是为了让你更快地启动开发者体验,使这些公司的开发者能够专注于公司的问题,而不是运行IDP。但产品的核心和理念的核心是相同的,因为我们相信这个开放平台。
Ryan Donovan: 是的。我记得我接触它的时候。我的上一份工作:我是一名内部技术文档工程师——负责部分开发者体验管理,但发现所有服务及其所有者是一项繁琐且具有挑战性的任务。这种情况是否在改变?我知道我们经历了ChatGPT的潘多拉魔盒时刻,AI无处不在。这是否改变了开发者体验?
Pia Nilsson: 天啊,是的。AI正在改变开发者体验——感觉每周都在变?但也许没那么频繁,但开发者体验业务和领域正在发生巨大转变。这非常令人兴奋,AI当然是其核心。这意味着IDP变得更加重要。
Ryan Donovan: 嗯。
Pia Nilsson: 记得我们构建Backstage是因为在2016年出现了指数级的组件增长,那感觉像是恐龙时代。我们看到指数级增长:组件数量超过了我们可招聘的人数。在AI和现有代码生成器(如Windsurf、Cursor和Claude Dev等)的推动下,这一趋势将会十倍、千倍地增长,我们正在Spotify大规模使用它们,它们肯定会改变世界。当然,这意味着很多事情,但其中之一是:更多组件、更多需要跟踪、保持合规、保持安全、保持自动化和拥有的代码。
Ryan Donovan: 嗯。
Pia Nilsson: 对吧。因此,拥有一个IDP来跟踪所有这些比以往任何时候都更加重要。
Ryan Donovan: 对。考虑到所有这些,我想你们有代理来跟踪最佳提示实践、跟踪模板。你提到了三种不同的编码工具。是否有方法跟踪每种工具的使用情况?是否有方法为每种工具设置模板提示?
Pia Nilsson: 很好的问题。我们在Spotify采取的方法是:在开发者所在的地方与他们相遇。
Ryan Donovan: 嗯。
Pia Nilsson: 这意味着:我们使用IDP作为推动变革的载体,AI是我们在所有平台工程领域需要推动的变革,但这并不意味着每个人都需要为每项任务都去IDP。有很多界面。
Ryan Donovan: 对。
Pia Nilsson: 不是很多,但至少有五六个“开发者界面”。我们这些关心开发者体验和开发速度的人需要在开发者所在的地方与他们相遇,这样对他们才超级有用。现在,我们在Spotify以及商业产品中的思路是“装饰”工程师在IDE中拥有的知识,使其与Backstage生态系统组件知识结合。包括所有数据组件、软件组件、人员、所有权等的元数据。这样,IDE就被赋能编写可标准化的代码。
Ryan Donovan: 嗯。当你说“装饰”时,是比喻意义上的,还是实际在代码中使用装饰器?
Pia Nilsson: 是的,我指的是代码。
Ryan Donovan: 好的。所以Backstage自动获取并集成它…
Pia Nilsson: 是的。我们正在门户内部推出一个AI门户或AI平台——当然内部也有——它既是一个代理(当然是Web UI中的聊天界面),也是一个能够摄取MCP的代理,它本身也是一个MCP,可以被其他地方摄取,对吧?我们认为,在解决开发者体验问题时必须具有这种灵活性。这不是关于IDP本身。IDP是将一切联系在一起的载体和枢纽,但你需要将知识提供到开发者所在的地方。而且,我们现在在AI中看到和即将看到的工具泛滥只会变得更糟。Backstage在那里可以发挥重要作用,既跟踪一切,又赋能这些工具,以支持开放平台。
Ryan Donovan: 是的。你提到了“工具泛滥”。我感觉开发者体验和IDP正在被纳入更大的平台工程空间,对吧?就像是“DevOps加工具”的情况。你认为Backstage如何融入平台工程空间?
Pia Nilsson: 当我们思考开发者体验时——在Spotify,我们主要讨论开发者体验,有人可能想知道“为什么你们不讨论平台工程?”当然它们几乎可以互换,但我想指出一个细微区别……
Ryan Donovan: 对。
Pia Nilsson: 开发者体验是一种方法,因为我们这些“平台人”的目标是让公司更有效,提高员工满意度——这通常是相辅相成的。所以,开发者体验是目标,对吧?平台工程当然可以互换使用,但平台工程——如果你严格定义——是工具箱。包括CI、CD、监控等所有软件生命周期领域……那是工具箱。所有供应商都存在于此;但即使公司有强大的平台工程工具集,也不一定意味着有伟大的开发者体验,因为它们可能没有很好地链接或连接。
Ryan Donovan: 嗯。
Pia Nilsson: 所以,实际上你并没有获得太多速度,因为你需要一种互联的旅程。因此,我们通常有意讨论开发者体验,因为我们希望让人们思考“路径是什么?旅程是什么?开发者要完成的工作是什么?”
Ryan Donovan: 是的。
Pia Nilsson: 我们不一定需要专注于CI。那只是达到目的的手段,对吧?
Ryan Donovan: 对。这种互联性是一个出乎意料难的事情——让每个人都理解流程是什么……甚至像“服务发现”这样的事总是挑战。你如何思考维护这一点,集成这些工具,并在IDP内使这些工具更连接?
Pia Nilsson: 很好的问题。我们的方法是:我们坚信工程和平台工程领域的发展速度总是快于任何闭源公司。这就是为什么我们坚信开放平台。即使你使用我们的SaaS产品,它也完全基于Backstage开源版本。它仍然完全遵循这一原则。为什么?因为否则你如何集成下一个大型AI供应商?
Ryan Donovan: 对。
Pia Nilsson: 它们需要自行集成,并且通常希望自己拥有该集成,因为这样才会出色。
Ryan Donovan: 嗯。
Pia Nilsson: 我们在Backstage插件生态系统中看到了这一点——它确实有效。我们有115个插件——几周前最后一次计数——我认为这说明了很多。大多数大型DevX供应商都拥有并维护一个Backstage插件。我认为这就是集成的方式。除此之外,还希望这些插件相互关联。那时事情才会变得真正美好。
Ryan Donovan: 是的。我知道插件生态系统很强大。我们的“Stack Overflow for Teams”产品有一个日益紧密的集成。我知道我们最近发布了相关消息,但正如你所说,那是相互关联。在现代分布式软件公司中,有很多移动的部分。你认为——这可能是一个尖锐的问题——是否存在工具过多、需要精简的时刻?
Pia Nilsson: 我不这么认为。这个问题已经被问了几十年,我从未见过答案是“是”。
Ryan Donovan: 对。
Pia Nilsson: 因为周围的工具在不断进化以满足新需求,而现在AI肯定带来了新需求。所以我们将会看到很多有用的工具出现。随着时间的推移,你会淘汰一些不再满足重大需求的工具,因为需求在变化。但我认为应该真正关注“需求是什么?”然后找到解决这些需求的解决方案。
Ryan Donovan: 嗯。
Pia Nilsson: 在我看来,我喜欢这里的开放原则。而不是像在某些地方看到的那样,转向一个供应商——一个为你提供一切的供应商——我真的认为:首先,这是一种供应商锁定,我不明白你为什么想要那样;其次,我怀疑你能否跟上。
Ryan Donovan: 对。
Pia Nilsson: 只是到目前为止还不可能,而且我认为我们作为行业并没有放缓——恰恰相反。
Ryan Donovan: 这是我的另一个问题:你们用工具满足需求,相反的是试图用一个工具解决太多需求,对吧?
Pia Nilsson: 是的。
Ryan Donovan: 我想你对此给出了肯定的回答。我们讨论开源和反锁定。你们通过Backstage推广的“开放性”是什么?如果有人转向另一个IDP,你们会有多生气?
Pia Nilsson: 那样的话可能我们的工作做得不够好。所以我们不会生气,但会学习。我们的方法是需要构建一个真正有用的开放平台,适用于像我们这样的大规模公司;如果我们这样做,我们相信这也会非常适合其他公司。但有不同的需求,如果不同公司有特定需求由其他产品满足,那很好。这是一个很大的领域。
Ryan Donovan: 是的。即使存在未满足的需求且你有合适的工具,让人们采用该工具可能很困难。对于如何让人们采用有用的工具,你有什么策略或想法?
Pia Nilsson: 我认为,这个问题的核心思路是:如果你构建了真正有用的东西,你就会拥有用户,对吧?这也是为什么不能只专注于一个工具。像IDP——它不是万能的。我们不是为了单一工具而来,我们是为了开发者体验——提高公司效率和满意度以及乐趣。我们认为推动内部采用的方法是:在开发者所在的地方与他们相遇。
Ryan Donovan: 嗯。
Pia Nilsson: 这就是我们的做法;还要找出最大的痛点。作为开发者可能有一些不同的痛点,作为平台工程师有其他痛点,作为平台工程领导者又有其他痛点。
Ryan Donovan: 嗯。
Pia Nilsson: 像我这样的人——我非常关心舰队标准化、舰队自动化和AI迁移。这是我关心的。公司里的不是每个人都需要每天思考或做这些事。
Ryan Donovan: 对。
Pia Nilsson: 其他人可能关心“我今天应该做什么?有哪些事件?我拥有哪些组件?昨晚值班发生了什么?”这些是不同的需求。所以应该找出“在平台工程领域,我们需要解决公司最紧迫的需求是什么?”然后,我认为门户和Backstage可以成为推动这种变革的伟大载体;如果你这样做,你就会获得内部采用,因为你在解决需要解决的问题。
Ryan Donovan: 指出公司不同部分有不同需求很有趣。你是否考虑对Backstage进行细分?你们是否自己创建插件来满足这些需求,并避开不需要它们的人?
Pia Nilsson: 哦,当然。例如,我们有一个名为“Soundcheck”的标准化产品。当然,我们希望所有工程师都进入Soundcheck检查“我在所有服务上有多‘黄金’?”——黄金意味着你遵守我们在Spotify技术标准中设定的所有标准。如果一个轨道工程师进去问“我有多黄金?”那很好,但他们不一定需要每天都这样做;所以它主要供技术领导力和产品领导力使用。另一个产品针对产品演进——产品开发。我们的实验平台:它本身不是工程平台工程工具;它更像是一个产品开发工具。所以我们肯定有不同的角色和非常具体满足需求的产品。
Ryan Donovan: 嗯。我想,对于这样的工具,部分目标是打破孤岛——我们也思考这一点。对于如何识别孤岛,然后让团队突破它们并实际协作,你有什么建议?
Pia Nilsson: 很好的问题。
Ryan Donovan: 这是价值百万美元的问题,对吧?
Pia Nilsson: 我认为所有公司都需要不断思考“如何激励和帮助人们跨组织边界协作?”我们发现有一个产品对我们帮助很大。我们称之为“技能交换”,现在也商业提供。它的功能是:你有内部简历,那里有你的课程,你可以扩展到“机会”——比如工作机会、嵌入机会——你去某个地方帮助一个团队几周,然后回到原团队——不同的互动方式。当然我们还有黑客周。我们运行黑客周,然后通过在这个黑客门户中完全透明地分享所有黑客项目使其更具协作性,该门户当然也在规模交换内。所以,如果可以使用这样的产品来支持工程文化(工程师通常非常协作)——我认为我们作为一个整体是一个非常协作的社区——我认为只需找到一些小的方式激励和帮助这种文化,就会大有裨益。然后,这个问题也有技术答案:我们如何帮助人们协作?我们简化技术栈——这是困难但非常重要的方式——通过标准化,使人们在组织间移动时不会对技术栈、库和框架选择感到完全困惑。如果看起来有点相似,并且你可以在门户和Backstage中找到一切,那么你就在真正支持人员成长和协作。
Ryan Donovan: 是的。所以不是每个人都能使用他们“喜欢的语言”或“喜欢的技术”。
Pia Nilsson: 是的,没错。
Ryan Donovan: 对于许多组织,我们讨论鼓励和构建这种协作的方式是:如何让某人成为这种协作的倡导者,他们的工作是打破障碍,让人们使用工具来构建支持——你认为这是必要的吗?
Pia Nilsson: 我绝对认为需要为问题找到一个“倡导者”——一个无论你想让什么产品被采用所能解决的问题。必须找到一个同意“是的,这对我个人、我的团队、我周围的团队来说是个问题。我同意用你的这个产品来解决会很好”的人。对我们来说,我们通过插件架构实现这一点。例如,当我们在内部推出Backstage并希望人们开始使用它时,我们没有要求他们开始使用Backstage;而是去找数据平台——仅举一例——问他们“你们这里有什么产品?”他们向我们展示了所有产品,然后我们说“我们可以在Backstage内部维护它们,但你们将拥有代码所有权,你们不需要运行Backstage实例。我们为你们做这件事。”这像是授予工作,所以你必须找到一种方式确保“倡导者”仍然在你的产品中解决他们关心的问题。他们显然保持对其专业领域的所有权,你为他们做一些事。所以我认为我们需要反过来思考——我们需要弄清楚“如何帮助领域专家使他们的工作更轻松?”
节目结尾
Ryan Donovan: 各位,现在是节目时间,我们要表彰一位在Stack Overflow上分享知识、激发好奇心并赢得徽章的人。今天我们要表彰一位获得流行徽章的赢家。祝贺“Marcus Shite”提供了一个如此出色的答案,它超越并超过了已采纳答案的得分,问题是:“Micrometer中Counter指标的动态标签值”。如果你对此好奇,节目说明中会有答案。我是Ryan Donovan,Stack Overflow的博客编辑和播客主持人。如果你有问题、建议或话题,可以发邮件到podcast@stackoverflow.com。如果想直接联系我,可以在LinkedIn上找到我。
Pia Nilsson: 我是Pia Nilsson。你可以在LinkedIn上找到我,或访问Backstagespotify.com并点击“与我们交谈”。
Ryan Donovan: 好的,谢谢大家收听,下次再聊。
订阅播客
在您喜欢的收听服务上订阅The Stack Overflow Podcast。Apple Podcasts、Overcast、Pocket Casts、Spotify、RSS feed。