Spotify 高质量工程生产力实践

简介: Spotify 高质量工程生产力实践


对于大规模团队来说,开发体验将直接影响到产品质量和迭代速度。本文介绍了 Spotify 工程团队通过打造统一的开发平台,赋能开发团队,实现高质量工程生产力的经验。原文: Quality Engineering Productivity at Spotifyimage.png


编程可能是一场噩梦。


并不是说编写代码本身痛苦,而是说整体体验。


组织的关注点是迅速发现什么东西对用户更重要,但这必然引入更多的技术、更多的问题


软件工程师在解决配置、部署或其他集成问题时浪费了大量时间,而解决这些问题实际上并没有交付新的价值。


质量工程的作用就在于保证软件价值链实现即快又好(Quality at Speed)


本文将分享 Spotify 如何在痛苦的环境中实现高质量的工程生产率。


为什么需要实现高质量工程生产力


Spotify 的工程师必须快速试验、学习并推出新功能。


速度是由拥有所有必要技能的跨职能团队实现的,这些团队可以高度自主的发布功能。


这是他们对即快又好(Quality at Speed) 的定义:


"迅速将创意转化为产品,并尝试改善用户体验,进入新的市场,并保持作为流媒体内容提供商的竞争力。"


虽然专注于速度在一开始有效,但每个团队都因工程实践的不同以及技术的分散积累了技术债务。


image.png


图 1: 生产率的速度和标准悖论,来自 Backstage。


高质量工程生产力意味着即快又好(Quality at Speed) 的保持迭代,平衡速度与标准的要求。


平台开发者体验(Platform Developer Experience) 团队是负责保证工程师能够实现大规模快速迭代的主要力量。


质量工程加速开发人员体验


成功的开发体验(Developer Experience)工程生产力(Engineering Productivity) 驱动。


Spotify 将他们的体验称为"传言驱动开发(rumor-driven development)",当时让软件工作的唯一方法是询问附近的人并遵循传言。


新开发人员的入职时间长达60天


这与有效的开发体验相去甚远,并影响了团队规模。


为此,Spotify 通过以下方式专注于提高高质量的工程生产力:


  • 衡量投入产出比;
  • 不断将产出与结果联系起来;
  • 为了更多的产出和更多的结果而不断改进。


"为了理解如何帮助 Spotify 团队快速完成实验,我们需要了解他们是如何工作的。" ——How We Improved Developer Productivity for Our DevOps Teams,Spotify 工程团队。


平台开发者体验团队为每个用例提供可重复的组件化产品,从而优化开发周期。


接下来看看这个团队提供了什么来消除开发的干扰。


Spotify 的高质量工程生产力组件


跨职能团队需要 14 天来运行新创建的应用程序,这太慢了。


基础设施团队致力于创建快速稳定的软件工件抽象,工程师可以根据需要利用这些工件。


他们构建了以下产品:


  • Backstage,为软件工程师提供一站式服务;
  • Golden Paths,提供标准引导教程;
  • Tingle CI/CD,构建、部署和发布平台;
  • 测试认证计划,提供测试评估。


这些组件将服务配置的时间从 14 天缩短到不到 5 分钟。


例如,开发人员可以在一天内得到一个像 Spotify 这样的网站框架,包含 URL、存储库、CI/CD。


Golden Paths 作为 Backstage 的一站式商店


减少决策数量可以支持可伸缩和快速流程。


Golden Path 是构建某些固定的、被支持的东西的路径(例如,构建后端服务、建立网站、创建数据流水线)。


Golden Path 提供了在Backstage门户上可用的逐步引导的教程。


image.png

图 2: 在 Spotify 的 Backstage 可用的应用程序引导。


软件工程师可以通过"Golden Path",遵循基于最佳实践的分步向导,构建出标准应用程序。


多年来,Golden Path 教程随着客户端开发、数据工程、数据科学、机器学习、音频处理、web 等的发展而发展。


曾几何时,Spotify 的工程师无法想象会有"Golden Path"的生活,而现在他们无法想象没有"Golden Path"的生活。


基于 Tingle 进行系统构建、部署和发布管理


一旦项目在工程师的笔记本电脑上运行,接下来就面临怎样将应用部署到生产环境的集成问题。


Tingle 是一个 CI/CD 系统,可以自动构建推送到 GitHub 的代码,并通过 Backstage 向开发人员提供反馈。


所有这些都不需要理解如何配置构建流水线。


image.png

图 3: CI/CD 平台必须简化整个流程,来自 AWS。


如果通过了所有测试,Tingle 将利用常规 GitHub 工作流,自动完成构建、测试、打包的工作,并将变更部署到生产环境中。


Spotify 用 Tingle 替换了超过 200 台独立 Jenkins 服务器,每周运行超过数万个构建。


但仍缺乏部署的信心。


测试认证计划,更有信心交付


Spotify 的工程师们依靠游戏化来让代码接受适当的测试。


每个主要的工程领域都有一个测试认证计划:


  • 提供质量控制合规性检查;
  • 提供关于构建时间、代码覆盖率和可靠性的测试报告;
  • 当代码包含不可靠的测试(即 flaky 测试)时,向团队发出告警;
  • 根据认证级别在服务旁边提供徽章。


image.png

图 4: 测试认证计划和质量闸门,来自 Spotify 工程团队。


测试认证计划促进了支持加速软件交付周期的测试套件的创建。


从 2018 年开始,团队遇到的阻塞问题以及其他类型的反应性工作大幅减少。


在这么大的自主权下,这一切是如何运作的?


自治团队的高质量工程生产力


Golden Paths、Tingle 和测试认证计划有助于将技术栈标准化。


但 Spotify 让团队自由选择适合自己团队运作方式的工具和方法。


因此,质量工程平台需要通过成熟的模块化来保证让开发团队持续采用。


image.png

图 5: Spotify 的质量工程平台服务。


每个团队都可以自主决定是否使用所有平台服务,而这一切取决于平台提供的附加价值。


这就形成了一个生态系统,在这个生态系统中,只有即快又好(Quality at Speed) 的组件仍在使用。


即快又好的高质量工程生产力


Spotify 朝着即快又好(Quality at Speed) 的方向加速前进,建立了高质量工程生产力(Quality Engineering Productivity)


对于在职以及新入职工程师来说,构建一个项目只需要不到 5 分钟的时间,从而支持组织规模的壮大。


集成了系统测量和告警的认证程序不断提高工程生产力。


Spotify 学会了把事情简单化:


  • 每个组件保留一条 Golden Path,避免子模块;
  • 记录当前路径(即使当前很痛苦),然后进行优化;
  • 培养用户对平台工具的持续使用和反馈;


Backstage现在已经开源,并提供对 100 多个系统的集成,Zalando、Unity 和 Expedia 等公司都在使用。


当前的改进方向是基于 Golden State 使 Golden Path 自动与项目一致,并保持良好的文档级别。


Golden Path 是 Spotify 最受欢迎和使用最多的技术文档,是一个真正的质量工程成就。


准备好构建你的高质量工程生产力了吗?


目录
相关文章
|
Cloud Native Linux Go
如何从开源项目中受益?
如何从开源项目中受益?
71 0
|
3月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
38 0
|
3月前
|
人工智能 边缘计算 自动驾驶
【嵌入式软件开发者眼中的IT行业现状与未来趋势】
【嵌入式软件开发者眼中的IT行业现状与未来趋势】
63 0
|
6月前
|
监控 安全
项目管理工具的魔力:团队合作的秘诀大揭秘!
项目成功关键在于团队组织,而项目管理工具是构建高效团队的重要手段。它能提升团队参与度,确保成员明确项目目标,增强工作主动性。通过工具,可以明确任务、监控进度、识别关键路径,并进行风险评估与资源优化。此外,工具促进团队协作,如动态功能加速讨论,聊天室支持实时交流,文档管理则确保文件安全共享。例如Zoho Projects,提供全面的协作和文档管理解决方案。项目管理工具是提升效率、优化团队协作的关键工具。
54 2
|
敏捷开发 开发框架 人工智能
GEAR 框架: Tractian 的敏捷工程文化
GEAR 框架: Tractian 的敏捷工程文化
63 0
|
数据挖掘 云计算 开发者
呼唤懂技术、有热情的你!阿里云开发者运营招聘火热进行中
阿里云智能集团2024届校园招聘,呼唤懂技术、有热情的你!阿里云开发者运营招聘火热进行中
1515 1
|
开发者
开发者投身开源项目的能够获得什么?
作为开发者,编程不仅是工作和饭碗,也是兴趣爱好的体现。虽然说有一部分是为了生活才选择了编程开发,但是大部分开发者是因为兴趣和爱好才加入编程队伍中的。不知不觉IT互联网行业已经发展了二十多年,基于开源的软件及应用也是有了快速的发展,越来越多的开发者投入到了开源项目的贡献中来,这让开发者和开源项目建立了很好的连接。
376 1
开发者投身开源项目的能够获得什么?
|
Cloud Native 开发者
KubeVela 获得 2022 “开源新锐”和“开发者最喜爱”双料年度项目
在 InfoQ 最新公布的 2022 中国技术力量年度榜单中,KubeVela 获得了 “十大开源新锐项目” 和 “开发者最喜爱的十大开源项目” 两个大奖。
KubeVela 获得 2022 “开源新锐”和“开发者最喜爱”双料年度项目
|
开发者 微服务
项目商业模式介绍 | 学习笔记
快速学习 项目商业模式介绍
129 0
|
安全 Unix Linux
企业拥抱开源之前,必须了解的七件事
新的时代,开源的发展越来越蓬勃,开源和云的关系越来越复杂,耦合度越来越高,云是开源软件允许的最佳环境之一,也为开源软件插上安全高效的腾飞引擎。本文试图从企业软件的历史,结合开源软件发展规律,介绍软件开发和交付方式的演进过程,分析常见的开源软件开发和使用误区,讨论开源软件的业务模式和生态,以及在云时代下,开源软件和云的结合与相互促进。
企业拥抱开源之前,必须了解的七件事