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 最受欢迎和使用最多的技术文档,是一个真正的质量工程成就。


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


目录
相关文章
|
敏捷开发 运维 供应链
构建安全软件开发:DevSecOps助你一臂之力!
DevSecOps — 在不影响敏捷性的前提下,将安全充分融入到SDLC的所有环节中 SDLC—软件交付生命周期 SCA—软件组成分析-用于识别和检测软件中使用的开源/第三方组件的已知安全漏洞 SAST—静态分析安全测试 DAS—动态分析安全测试 IAST—交互式分析安全测试 SBOM— 在这里特指软件中使用开源组件的完整信息列表
316 0
|
4月前
|
自然语言处理 API 开发工具
AutoGPT理念与应用
AutoGPT是一个旨在充分利用GPT4的强大功能,自动完成用户设定任务的全能助手。面对ChatGPT存在的局限,如Token数量限制、自动化程度不足、缺乏外部能力集成及数据时效性问题,AutoGPT应运而生。它可以独立完成一系列子任务以达成最终目标,支持网页浏览、信息检索等功能,并能自动生成prompt。
|
4月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
44 0
|
7月前
|
监控 供应链 安全
解放生产力:项目管理软件的神奇作用大揭秘!
项目管理软件是整合了项目管理理论的计算机系统,用于协助团队规划、执行和监控项目,提高效率、促进沟通、风险管理及监控进度。PMI、IPMA和Gartner对其有不同定义,强调其在协作、计划制定和沟通中的角色。软件提供统一平台,确保项目按时间表、预算和质量标准推进,通过自动化工作流、沟通模块和风险管理功能增强团队合作。选择软件时要考虑团队规模、行业需求、易用性和安全性。
57 0
|
机器学习/深度学习 人工智能 安全
2023 Google 开发者大会:无障碍游戏体验升级、安卓开发人员生产力爆棚
2023 Google 开发者大会:无障碍游戏体验升级、安卓开发人员生产力爆棚
|
消息中间件 存储 分布式计算
Spotify 系统架构
Spotify 系统架构
491 0
Spotify 系统架构
|
存储 XML Java
maven详解(软件创新实验室讲课稿)
maven详解(软件创新实验室讲课稿)
maven详解(软件创新实验室讲课稿)
|
敏捷开发 安全 架构师
Spotify的牛是如何炼成的?
编著者按:笔者近期在思考工程文化相关的内容,除了自我总结以及对Google、Facebook的一些探索外,目光再次投向了Spotify这家公司。这是一个高速增长的故事,这是以一个工程文化知名的故事,同时这也是敏捷圈在讲的故事。
399 0
Spotify的牛是如何炼成的?
|
安全 物联网 物联网安全
聚焦安全,德施曼极致的工匠精神
IoT安全助力德施曼在智能门锁安全方面带来全新升级的同时也实现了销量爆发式的增长
976 1
聚焦安全,德施曼极致的工匠精神
|
机器学习/深度学习 数据采集 前端开发
生产力再提速,618 互动项目进化之路
从2019年双十一的 “盖楼 ”到今年618的 “开列车”,在大促互动游戏背后,是业务多变性、产品稳定性和研发效率的多重博弈。本文介绍了淘系互动前端团队如何应对研发效率 & 产品稳定性的挑战,内容涵盖“互动智能测试” & “弹窗规模化生产”这两个技术方案。
1485 0
生产力再提速,618 互动项目进化之路

热门文章

最新文章

相关实验场景

更多