在管理不断壮大的开发团队与愈发复杂的代码库的同时,还要提供更快也更可靠的交付,这似乎是飞速发展的科技公司都难逃的挑战,对平台团队而言也是一样。在代码库和组织不断增长的现状下,我们要如何快速推陈出新、更安全地引入新技术呢?
问题域
从 2019 年的 29%,2020 年的 49%,到 2021 年的 23%,Spotify 的移动端代码库规模一直在急速扩大。随着我们在业务上的扩展,Spotify Live 等新体验的加入,代码库也在不断演化。而于此同时,Spotify 也在不断招收新工程师,致使移动端代码库的修改次数逐渐增加。
我们的移动工程策略项目于一年半前发起了一项倡议,通过多次迁移让客户端功能得以在独立环境中进行开发,类似于后端微服务。
自此之后,我们将系统与约 2,200 个安卓及 iOS 组件相关联,将大部分安卓与 iOS 代码库迁移至谷歌的开源构建系统进行构建。这一大工程影响了公司上下上百的项目组。
主要难点
我们认为,代码库和组织规模的增长与复杂性的加剧将会是迁移的主要难点所在。如果我们期望能在 Spotify 的移动端高效且规模化交付平台解决方案,就需要常态化迁移所带来的挑战。
以下是我们在迁移路上所遇到的挑战,其中囊括了场景和问题表征,以及面对问题时应当避免或鼓励的行为。
挑战之一:界定范围
如何在创造变化并提出可支持大部分用例的标准化架构解决方案的同时,不影响其他用例?
场景:
这一范围看似很广,给人一种无数用例亟待处理的感觉。在面对大量的技术债务、需要的改动、需要支持的用例时,往往会让人无从着手。利益相关者们即使是在多次询问后,也还是对迁移时自己要做的事云里雾里。
应避免:
应鼓励:
挑战之二:扩大规模
在飞速扩张的组织内,我们要如何才能更快地推动大型架构和基础设施的变化?
场景:
应避免:
应鼓励:
挑战之三:事件优先级
平台团队是需要努力减少技术债务并引入新技术,还是要让其对自己代码质量负责?这二者之间要如何平衡?
场景:
应避免:
应鼓励:
挑战之四:承担责任
如何才能在需要大量变动和重构基础设施的新技术采用过程中,让团队承担起责任?
场景:
在新技术的采用过程中缺乏责任感,导致迁移进展缓慢。
无法预估迁移何时结束。
应避免:
应鼓励:
结论
这种性质和规模的迁移工作可能会成为未来的常态,若非如此,公司可能将无法执行特定的变动。新科技将会不断出现,迁移也将成为必然,但我们也应减少这些动作对团队的干扰。有的平台产品或许会让迁移无可避免,且可能会规模不小,我们应将其与测试、设计共同视作是开发周期的一部分。
我们从这项工作中学到了很多,希望这些经验能对其他团队的大型迁移有所帮助。如果你想了解更多关于我们所遇到的挑战和相应的解决方法,请随时联系我们。
特别感谢 Marvin、Foundation、BoB,以及 Rubik,为我们的工作提供助力。
原文链接:
Strategies and Tools for Performing Migrations on Platform