Spotify的业务建立在出色的的内容交付之上。经过十年的发展,我们使用了许多不同的CDN解决方案,这不但增加了我们平台架构的复杂性,同时也降低了研发组织的效率。
文 / Spotify Engineering
译 / 元宝
原文
https://labs.spotify.com/2020/02/24/how-spotify-aligned-cdn-services-for-a-lightning-fast-streaming-experience/
一个着眼于未来的企业
Spotify的业务建立在出色的的内容交付之上。我们的流媒体平台为全球月活跃超过2.3亿的用户提供超过5000万首歌曲(以及一系列图像等其他内容),这使得我们成为全球领先的流媒体服务提供商之一。我们的内容给人一种即时和身临其境的感觉,帮助我们的客户与他们最喜欢的艺术家一起获得最佳的体验。
在幕后,随着时间的推移,我们的技术不断发展,致力于实现尽可能出色的用户体验。经过十年的发展,我们使用了许多不同的CDN解决方案,这不但增加了我们平台架构的复杂性,同时也降低了研发组织的效率。Spotify的音频流多CDN策略是运行良好的。然而,为了提供其他类型的内容分发(如图像或客户端更新)服务,我们不得不组织了一个新的团队,他们的职责是专注于使用跨多个工程团队的Fastly edge云平台来让我们的CDN标准化,并提供自动化的协助、管理和支持服务。
团队自主权的挑战
我们的工程师文化提倡合作自主,我们的研发部门包含2000多名员工,他们被分组多个“团队”。在这种自主模式中,每个团队都有自己做决定的权利,包括决定哪些技术、工具和流程是最适合他们的。这能够有助于部门快速行动,但同时我们也要权衡可能存在的技术分歧风险。
太多的CDN,太少的监管
分片化中的一个较为困难的领域就是内容交付。Spotify使用的Akamai和AWS的CDN解决方案,并将其用于音频流等关键业务内容分发。它们的表现十分良好,并且在经过优化之后实现了低延迟和高带宽。但是,用于其他内容的CDN操作都变得低效,有些内容直接从AWS S3或谷歌云存储等存储桶中流式传输生成。开发人员只是简单地使得存储桶可读并将URI放入他们的代码中之后就可以继续了。其他团队使用了一些为特定用例而创建的服务,如为图像调整大小或添加水印,并将它们用在完全不同的地方。我们的新解决方案还解决了一些问题,比如一些小团队在不完全了解其配置的情况下就继承了CDN端点。
基于Fastly构建公司的CDN解决方案
作为迈向标准化的第一步,新的CDN团队创建了一个简单的工作流程,该工作流使得团队能够获得新的CDN服务并在Fastly上快速运行。我们已经多年成功地使用Fastly的edge云平台交付音频流,并也希望能使用Fastly来交付其他类型的内容。鉴于这一现状,CDN团队正面临着“自主一致”的组织挑战。
说服团队迁移
新的工作流程吸引了那些想要实施全新服务的团队。对于那些已经在运行不同CDN域的人来说,迁移到新系统似乎需要做很多的工作。为了说服其他团队,CDN团队传达给其他团队关于新系统的诸多特性,包括新系统有更快的性能以及在访问指标和交付日志记录等方面的优势。更好的是,CDN团队可实现在7*24小时全天候监控整个CDN请求路径。
易于运维的计划
除了故障排除之外,CDN团队还想要一个易于维护的系统。他们决定使用Fastly API来构建一个自动化系统,以便专注于为业务增加更多价值的项目。
将API和VCL整合在一起
我们的开发人员使用Fastly的可定制边缘计算语言VCL (Varnish配置语言)来执行智能缓存,将应用程序逻辑推送到网络边缘,并根据位置、语言和设备类型来定制用户的体验。基于Spotify的精神,我们需要定制CDN功能来处理错误和重定向以及令牌识别等任务。我们将FastlyAPI与VCL结合起来,并使用API来设置一些简单的操作,比如创建一个新服务、配置主机名、添加源或记录端点,以及处理VCL中的所有其他事情。
请求CDN审核的自助服务工具
我们开发了一个SquadCDN来提供内部部署前的审查服务,在这里就使用到了Fastly的API和VCL。任何Spotify团队都是可以访问该工具的,只需输入一个简单的YAML文件,在里面写好一些具体的信息即可,如域、源、存储区和配置标志。然后,该工具会发送一个拉取的请求,来供CDN团队审核和批准。有了这一点,CDN团队就实现了提供自动化的简单工作流的目标。
一路走来的教训
当CDN团队为Spotify研发开拓新的领域时,他们总结了许多帮助他们到达目标的技巧和最佳实践,比如:
成功的CDN阵营
在组成CDN团队一年半之后,我们的CDN环境已经得到了显著的改善
现在,超过60个小团队已经开始使用新配置下的系统,这占整个研发组织的20%以上。超过80个以上的服务现在通过使用CDN团队的模板化工具和简化工作流程实现更快、更有效地内容交付。最重要的是,我们的工程师都感到很高兴,因为他们不再需要担心CDN的细节并能更加专注于他们的核心任务。
LiveVideoStackCon 2020
本文分享自 LiveVideoStack 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!