亚马逊AWS官方博客
法国广播电视公司 TF1 如何使用 AWS Cloud 技术和专业知识为数百万人呈现精彩的 FIFA 世界杯比赛
去年的卡塔尔世界杯决赛可以说是有史以来最激动人心的世界杯决赛之一,数百万观众观看了这场比赛。而在这之前三年,法国领先的私人电视频道 TF1 就启动了一个旨在重新定义其播出平台基础的项目,其中包括采用新的基于云的架构。
他们以及其他所有广播电视公司,都观察到,传统的电视观众越来越少,而数字平台则越来越受欢迎,例如智能电视、电视盒子(如 FireTV、ChromeCast 和 AppleTV 等),以及笔记本电脑、平板电脑和手机。我最近为 AWS 法语播客采访了 eTF1(TF1 内部负责数字平台的小组)的首席技术官 Thierry Bonhomme。他表示,数字广播观众的人数现在已经占到了 TF1 观众总数的 20-25%。
这种在线和移动使用推动了 IT 系统上非常特定的流量模式:在比赛开始前的几分钟内,连接和身份验证数量非常多,且数百万个视频流必须通过各种质量不断变化的网络可靠地传输。除了这些技术挑战外,还有经济方面的挑战:在关键时刻投放商业广告,例如在演奏国歌前或时长 15 分钟的半场休息期间。数字平台单独出售自己的商业广告时段,这些广告与传统电视上播放的广告不同,也可能因地区而异。所有这些视频流都必须通过各种设备和各种网络条件(从家里的 1 Gbs 光纤到偏远地区的 3G 网络,各种各样)传送给数百万观众。
TF1 做好了各种准备,包括重新设计其数字架构、建立显示新系统性能的指标,以及为团队成员定义流程、角色和责任。AWS 也参与到了这些准备工作之中,帮助 TF1 的系统做好准备,以满足可扩展性、性能和安全性要求。
在与我的对话中,Thierry 介绍了公司为未来的广播设计新的技术架构时,要实现的两个主要目标:第一,平台的可扩展性;第二,满足性能需求。可扩展性是承受同时在线观众峰值的关键。而性能必须确保视频流快速启动(小于 3 秒),且视频播放器不会出现中断(也就是不会重新缓冲)。毕竟,没有人愿意自己的屏幕上还没有播出,就通过邻居的尖叫声知道了自己支持的球队刚刚得分。
技术
自 2019 年开始,TF1 就开始重新设计其数字广播架构并重写代码的重要部分,例如后端 API 或在机顶盒、Android 或 iOS 设备上运行的前端应用程序。为了实现最佳性能,他们采用了微服务架构,该架构部署在 Amazon Elastic Kubernetes Service(EKS)之上,并以 Go 编程语言编写。为了最大限度地实现可扩展性,他们设计了一组 REST 和 GraphQL API 来定义前端和后端应用程序之间的契约,并设计了一个采用 Apache Kafka 的事件驱动型架构。他们采用了包括 Amazon CloudFront 在内的多个内容分发网络,将视频流可靠地分发到客户端设备。2020 年 8 月,拜仁慕尼黑在欧洲冠军联赛中以 1-0 击败巴黎圣日耳曼,TF1 通过这场比赛得以在大型体育赛事上测试新平台。
下面我们来看看从现场拍摄视频到您在移动设备上看到视频的全过程:首先,位于巴黎的 TF1 塔接收到高质量的视频流,硬件编码器会在那里创建适合您设备的必要视频流。AWS Elemental Live 硬件编码器能够生成多达八种不同的编码:适用于电视的 4K 编码、高清(1080)、标清(720),以及适合各种移动设备和网络带宽的各种其他格式。(有时候,您可能会发现传统电视上接收到的视频与移动设备上接收到的视频之间存在额外延迟,这个额外的视频编码步骤就是原因之一。) 系统将编码后的视频发送到 AWS Elemental Media Package 进行打包,并最后发送到 CDN(播放器应用程序在此提取视频片段)。播放器应用程序会根据您的设备大小和当前可用的网络带宽选择最佳的视频编码。
2021 年底,也就是在数百万人观看法国球员 Kylian Mbappé 自 1966 年以来首次在世界杯决赛中上演帽子戏法(进三个球)的前一年,TF1 就开始根据以往的经验确定风险和需要改进的地方,来为这一大型赛事做准备了。Thierry 介绍了他们如何根据不同的比赛场景建立可能的观众规模假设:法国国家队在比赛中走得越远,预期的流量就越高。他们对锦标赛每个阶段(小组赛、四分之一决赛、半决赛和决赛)的风险进行了分类。基于这些情况,他们认为平台必须具有在比赛开始前 15 分钟保持将 450 万观众连接到平台的能力(即每秒有 5000 名新观众进入)。
这种可扩展性级别不但需要 TF1 团队做好准备,同时也需要所有正在使用的外部系统(例如 AWS 云服务、身份验证和授权服务以及 CDN 服务)做好准备。
观众的到来会触发多个流和 API 调用。观众必须进行身份验证,有些观众必须创建新账户或重置密码。通过身份验证后,观众会看到主页。反过来,主页会触发多个 API 调用,其中一个调用针对目录服务。观众选择直播时,会进行其他 API 调用来接收视频流 URL。然后视频部分开始发挥作用。客户端播放器连接到所选的 CDN 并开始下载视频片段。视频播放后,平台必须确保高质量的流畅传输,不会出现导致重新缓冲的掉线。所有这些元素都是确保让观众实现最佳体验的关键。
准备
在法国进入决赛并在决赛中遭遇阿根廷的六个月之前,TF1 就开始与包括 AWS 在内的供应商密切合作,以确定要求、储备容量,并开始制定测试和执行计划。此时,TF1 与 AWS 基础设施事件管理合作,这是 AWS Enterprise Support 计划的一项专属计划。我们的专家会在计划事件的准备和执行期间提供架构和指导以及运营支持,例如购物节、产品发布、迁移。在本例中是全球规模最大的足球赛事。对于这些赛事,AWS 可帮助客户评测运营准备情况、识别和降低风险,让客户可在 AWS 专家的支持下自信地执行。
他们当时特别关注 API 的可扩展性测试。TF1 团队开发了一种负载测试引擎,模拟用户连接到平台、执行身份验证、选择程序并启动视频直播的过程。为精确模拟真实流量,TF1 使用另一家超大规模云提供商的服务向其 AWS 基础设施发送请求。通过这项测试,他们可以定义要在控制面板中观测的正确指标,以及用于生成警报的正确值。Thierry 表示,负载模拟器首次投入全速运行时,在每秒模拟的新连接数达到 5,000 个时,整个后端都崩溃了。
但与任何世界一流团队一样,TF1 将此视为优化的契机。他们花了 2-3 周的时间优化系统。他们消除了来自客户端应用程序的冗余 API 调用,并采用了较为激进的缓存策略。他们学会了如何扩展后端平台以应对此类流量,还学会了确定关键指标在负载下的值。经过数次后端部署并发布了 Android 和 iOS 应用程序的新版本后,系统成功通过了负载测试。此时距离赛事开始还有一个月时间。当时,TF1 决定暂停所有新的开发或部署,直至在卡塔尔首次启动,除非发现关键错误。
监控和规划
Thierry 告诉我,技术平台只是该项目的一部分。他们还使用 Datadog 和 Grafana 设计了指标控制面板,在赛事期间监控关键性能指标并检测异常。Thierry 指出,平均值往往会有所疏漏,无法表明整体状况。例如,他提到,观察 P95 百分位数值而非平均值可以显示百分之五的用户的体验。如果您有 300 万名客户,百分之五就等于 15 万名客户,了解他们的体验非常重要。(顺便说一句,亚马逊和所有 AWS 服务团队都经常使用这种百分位数技术,而且 Amazon CloudWatch 内置测量百分位数值的支持。)
他说,TF1 还为最糟糕的情况做好了准备,包括在比赛中让 300 万人盯着黑屏的可怕情况。TF1 很早就让社区经理和社交媒体负责人参与了这项工作,针对多种情景准备了新闻稿和社交媒体信息。该团队还计划在每场比赛中让所有关键团队成员聚集在“作战室”中,从而在需要立即采取行动的情况下更快地进行沟通并做出反应。该团队包括 AWS 技术客户经理、身份验证服务客户经理,以及其他 CDN 供应商。AWS 还安排服务团队和高级支持团队中随时待命的工程师监控服务的运行状况,并准备好在出现问题时立即做出反应。
激烈的比拼不止发生在绿茵场上
比赛开始时的三个关键时刻创造了真正对平台进行测试的机会:开幕式、首场比赛,还有 TF1 的观众特别重视的法国队首场比赛。随着比赛在后续几周的推进,比赛的强度、悬念和 IT 系统的负载随之增加,TF1 团队需要重新评估其流量预估,并在每场比赛结束后进行总结。绿茵场上的比拼十分激烈,而在幕后,TF1 的团队面临的局面也并不平静。
从四分之一决赛开始,团队注意到来自诸多分布式 IP 地址的异常活动,他们确定系统遭遇由受感染计算机网络的大规模分布式拒绝服务(DDOS)攻击;攻击者企图中断服务,造成数百万人无法观看赛事。TF1 早已习惯了此类攻击,控制面板能帮他们实时识别流量模式。AWS Shield 和 AWS Web Application Firewall 等服务可帮助他们抵御攻击事件,同时避免影响观众体验。TF1 安全团队和 AWS 专家开展了进一步分析,在下场赛事中主动屏蔽了部分流量模式和 IP 地址。
尽管如此,在半决赛和最后一场比赛中,攻击强度仍然有所增加,在峰值期间,十分钟内的请求数达到 4000 万次。Thierry 表示:“这些攻击犹如猫捉老鼠的游戏”,因为攻击者会尝试新策略并应用新模式,作战室的团队在检测到它们之后动态更新过滤规则,及时阻止攻击,避免观众感受到服务质量的变化。漫长而详尽的准备工作达到了目的,人人都知道应该做些什么。Thierry 指出,攻击得到了成功抵御,未造成任何后果。
激动人心的决赛
到 2022 年 12 月 18 日法国终于上场时,TF1 知道,他们的平台将创下新纪录。Thierry 表示,流量高于预期,但平台吸纳了这些流量。他还指出,在比赛的第一部分,阿根廷比分领先时,TF1 团队观察到连接数量缓慢下降…直至比赛结束前 10 分钟 Mbappé 打入第一个进球才有所改观。当时,所有控制面板都表明,观众数大幅回升,大家都回来观看比赛中这一激动人心的决战时刻。在峰值时,有超过 320 万个数字播放器同时连接,通过全部四个 CDN 提供的传出带宽达到每秒 3.6 Tb。
在全球范围内,Amazon CloudFront 还在帮助 18 家广播电视公司传送视频直播。在锦标赛期间,总共有超过 4,800 万个独立客户端 IP 连接到全球 450 多个边缘站点中的各个站点,在锦标赛的决赛中,这些客户分布的峰值达到每秒 23 Tb。
未来前景
尽管阿根廷最终夺冠,莱昂内尔·梅西终于得偿所愿捧起了大力神杯,但 2022 年 FIFA 世界杯为 TF1 团队证明,他们的流程、架构和实施方案能为数百万人提供优质观看体验。该团队现在充满信心,他们知道该平台已准备好应对正在筹办的下一场大型活动:2023 年 9 月的橄榄球世界杯和 2027 年的下一次法国总统大选。在我们的交谈结束时,Thierry 预测说,数字广播最终将吸引比 OTA 广播电视更多的受众,同时为超过 300 万名观众服务将成为新常态。
如果您的公司也希望利用云计算的力量实现业务转型,欢迎立即咨询我们的 AWS Enterprise Support 顾问。