写点什么

Spotify 的平台迁移经验:从小事做起,关注利益相关者,寻求自动化

作者:Mariana Ardoino,Raul Herbster

  • 2024-01-30
    北京
  • 本文字数:2598 字

    阅读完需:约 9 分钟

大小:1.32M时长:07:41
Spotify 的平台迁移经验:从小事做起,关注利益相关者,寻求自动化

在管理不断壮大的开发团队与愈发复杂的代码库的同时,还要提供更快也更可靠的交付,这似乎是飞速发展的科技公司都难逃的挑战,对平台团队而言也是一样。在代码库和组织不断增长的现状下,我们要如何快速推陈出新、更安全地引入新技术呢?

问题域

从 2019 年的 29%,2020 年的 49%,到 2021 年的 23%,Spotify 的移动端代码库规模一直在急速扩大。随着我们在业务上的扩展,Spotify Live 等新体验的加入,代码库也在不断演化。而于此同时,Spotify 也在不断招收新工程师,致使移动端代码库的修改次数逐渐增加。

 

我们的移动工程策略项目于一年半前发起了一项倡议,通过多次迁移让客户端功能得以在独立环境中进行开发,类似于后端微服务。

 

自此之后,我们将系统与约 2,200 个安卓及 iOS 组件相关联,将大部分安卓与 iOS 代码库迁移至谷歌的开源构建系统Bazel进行构建。这一大工程影响了公司上下上百的项目组。

主要难点

我们认为,代码库和组织规模的增长与复杂性的加剧将会是迁移的主要难点所在。如果我们期望能在 Spotify 的移动端高效且规模化交付平台解决方案,就需要常态化迁移所带来的挑战。

 

以下是我们在迁移路上所遇到的挑战,其中囊括了场景和问题表征,以及面对问题时应当避免或鼓励的行为。

挑战之一:界定范围

如何在创造变化并提出可支持大部分用例的标准化架构解决方案的同时,不影响其他用例?

 

场景:

这一范围看似很广,给人一种无数用例亟待处理的感觉。在面对大量的技术债务、需要的改动、需要支持的用例时,往往会让人无从着手。利益相关者们即使是在多次询问后,也还是对迁移时自己要做的事云里雾里。

 

应避免:

  • 在还未确定所有可能情况之前便试图推出解决方案。

  • 在尚未预估路线图或成功的界定之前便开始大规模迁移。

  • 在没有明确定义利益相关者需要做的事之前便接触他们。

 

应鼓励:

  • 清楚目标。在产品简介中写明你的原因、方法,以及目的。

  • 注重价值。价值的转变是很耗时的,但需要的时候也要对其调整以适应你的目标。

  • 应对受众。了解受众的心智模式才能给出相关的回应、对接他们的需求,并寻找到合适的代理以扩大自己的影响。

  • 从小事做起。创建一份概念证明,和利益相关者们核对其内容,并让迁移经历 alpha、beta,以及 GA 产品循环。从最常见的用例开始,随进展不断添加新发现的用例。这一步会让你收到足够的反馈,并渐渐能够支撑不同用例情况。

  • 合作!在早期阶段,合作是关键。寻找愿意积极试用早期解决方案的人,他们将成为自己群组内的传播者。这点最后也将助力于方案的可扩展性。 

挑战之二:扩大规模

在飞速扩张的组织内,我们要如何才能更快地推动大型架构和基础设施的变化?

 

场景: 

  • 大量项目组将会受变动影响(超过百个项目组)

  • 工作量巨大。其中包括迁移中途需要团队手动重构的任务

  • 进展缓慢。涉及无数利益相关者与依赖关系

  • 利益相关者被进行中的迁移工作重担压垮

 

应避免:

  • 认为大型组织中的大型基础设施和架构中的变动是不可能或不需要的

  • 在进行架构或基础设施变动时要缓慢前行

 

应鼓励:

  • 关注利益相关者的管理。明确不同利益相关者的优先级,通过邮件或 Slack 等形式保持联络,并将自己工作的重点相告知。

  • 沟通。通过邮件及工作区发帖将自己的进度共享,让受众保持参与感。

  • 寻求自动化。预先投入的自动化会简化迁移进程。我们是否需要重构代码?是否能通过脚本将重复步骤自动化?

  • 为敏捷的 spike 周腾出时间。团队与贡献者组队,用一周时间协同合作迁移。

  • 通过不同资源提升影响力。培训项目可以帮助团队了解迁移和新的概念,从而能够立刻将其投入应用。

  • 在公司的入职计划中介绍公司的工程实践,让新员工能从一开始就理解并遵循所推荐的最佳实践。

挑战之三:事件优先级

平台团队是需要努力减少技术债务并引入新技术,还是要让其对自己代码质量负责?这二者之间要如何平衡?

 

场景:

  • 利益相关者参与了优先级更高的项目,而无暇采用你的解决方案。

  • 利益相关者认为平台迁移拖慢了他们的脚步,缺乏采用新技术的动力。

  • 项目被稀释,推动迁移进行的团队没有动力,甚至有成员选择离开团队。

  • 必要的代码修改与迁移方向相左。

 

应避免:

  • 自信利益相关者明白迁移的重要性和影响程度,并将其优先处理。实际上他们也有很多其他任务要处理。

  • 放弃。“我们忙于抢占更高优先级”,这是个平台迁移中很常见的放弃理由。

  • 认为指标和目标是固定且很难变动的。

 

应鼓励:

  • 应激励,向利益相关者展示迁移的积极影响,鼓励他们完成迁移任务。

  • 持续评估。季度内定期的检查点可以评估迁移进行的速度,判断是否能达成季度、半年度或年度的指标。

  • 风险管理。如果迁移进展过慢,要如何调整方法以达成目标?是否能精简流程?是否需要更多工程师?能否雇佣承包商?能否影响其他团队,把自己的任务加入他们积压的工作之中?

  • 替平台承担。可能的情况下,为组织做出必要变动,以便组织能专注于为用户创造价值。

  • 密切关注与迁移 KPI 相违背的变动,建立与团队之间的渠道以提供支持。

 

挑战之四:承担责任

如何才能在需要大量变动和重构基础设施的新技术采用过程中,让团队承担起责任?

 

场景:

在新技术的采用过程中缺乏责任感,导致迁移进展缓慢。

无法预估迁移何时结束。

 

应避免:

  • 在驱动大量改动时指望内外部能保持一致性。

  • 认为基础设施上的变动和影响很难衡量。

 

应鼓励:

  • 明确“完成”的定义。借助数据和趋势图给出预测。我们需要清楚自己的出发点和进展速度,才能预估未来的趋势,并确定是否需要调整策略以加快迁移进展。

  • 进度展示。掌控成功的定义且不断沟通,才能保持受众参与并接受我们所做的变动。

  • 使用看板。通过指标和看板沟通进展和影响,并规模化确定一段时间内的工作优先顺序。

  • 维护时间线并实时更新路线图。随着时间的推移,团队和利益相关者可能会有变动,他们需要了解我们的迁移进程和时间线。路线图也有助于透明化,让反馈和协作成为可能,也能帮助发现障碍。

结论

这种性质和规模的迁移工作可能会成为未来的常态,若非如此,公司可能将无法执行特定的变动。新科技将会不断出现,迁移也将成为必然,但我们也应减少这些动作对团队的干扰。有的平台产品或许会让迁移无可避免,且可能会规模不小,我们应将其与测试、设计共同视作是开发周期的一部分。

 

我们从这项工作中学到了很多,希望这些经验能对其他团队的大型迁移有所帮助。如果你想了解更多关于我们所遇到的挑战和相应的解决方法,请随时联系我们。

 

特别感谢 Marvin、Foundation、BoB,以及 Rubik,为我们的工作提供助力。


原文链接:

Strategies and Tools for Performing Migrations on Platform


2024-01-30 08:003579

评论

发布
暂无评论
发现更多内容

HarmonyOS NEXT分布式系统硬件资源池应用场景技术原理及接入实践

新消费日报

1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种?

快乐非自愿限量之名

RocketMQ 事务管理

诚迈科技亮相OpenHarmony人才生态大会,共话校企协同育才

新消费日报

Navicat Premium 16 for Mac:一站式数据库管理解决方案

iMac小白

分析商品详情页中的数据,以了解产品的特点和优势

技术冰糖葫芦

API 接口

dDapp发行代币合约质押挖矿系统开发丨详情开发

l8l259l3365

2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i>1的

福大大架构师每日一题

福大大架构师每日一题

汉缆股份携手航天科技AIRIOT建设智慧工厂,加速数字化转型升级

AIRIOT

智慧工厂 物联网系统搭建

华为鸿蒙系统:揭开全新操作系统的神秘面纱

EquatorCoco

鸿蒙 HarmonyOS

SD-WAN解决外贸企业网络问题

Ogcloud

网络 SD-WAN vpn MPLS 网络VPN

用友系列之YonBuilder低代码平台概论和基本使用

阿Q说代码

低代码 用友

软件测试/人工智能丨大语言模型LangChain

测试人

人工智能 软件测试

SD-WAN实现分公司与总部组网高效互联

Ogcloud

网络 SD-WAN 组网

SecureCRT for mac:提升工作效率的利器

iMac小白

低代码开发:产品验证的破局之道

幂简集成

产品 工具 低代码 数字化 API

基于模型驱动的可视化开发平台——JNPF

高端章鱼哥

低代码 可视化开发 JNPF

SD-WAN可以加速视频会议吗?

Ogcloud

网络 网络加速 视频会议 SD-WAN

Java中的泛型通配符传递类型参数

技术冰糖葫芦

API 接口

Apache IoTDB PMC Chair 黄向东主办 2023 开放原子开发者大会开源工业物联网大数据分论坛,诚邀您的参加!

Apache IoTDB

首届中国研究生操作系统开源创新大赛即将启动:开启创新之旅,推动开源繁荣

新消费日报

体育赛事为何成为各平台的“必争之地”与新兴变现模式

软件开发-梦幻运营部

flutter 代码混淆

Kyligence 荣登甲子光年 2023 AIGC 技术应用领域最具商业潜力榜

Kyligence

数据分析 智能决策

入门PostgreSQL:安装和设置数据库的完整指南!

互联网工科生

postgresql

亚马逊云科技宣布推出四项Amazon Supply Chain新功能

财见

深度 | AI数据标注迈入自动化时代,26年老兵掘金全球智能汽车市场

澳鹏Appen

自动驾驶 数据标注 4D标注

量化交易与人工智能:技术的交叉引发金融市场的变革

不在线第一只蜗牛

人工智能 金融 量化交易

软件测试/人工智能丨计算机视觉场景中,处理视频/图片数据并测试

测试人

一款最近很火的开源低代码平台

伤感汤姆布利柏

开源 低代码

Spotify 的平台迁移经验:从小事做起,关注利益相关者,寻求自动化_DevOps & 平台工程_InfoQ精选文章