BBC改用AWS,采用无服务器的新网站架构

2020-11-10 04:44:03

英国人气排名第六的BBC网站大部分已经从广播公司的BIT谷仓迁移到亚马逊网络服务(AWS),现在大约一半的网站使用AWS Lambda,这是一个无服务器平台。

英国广播公司(BBC)建筑主管马修·克拉克(Matthew Clark)最近表示,直到最近,BBC的大部分网站都是用PHP编写的,托管在伦敦附近的两个数据中心。几乎所有部件都已在云上重建。

PHP在云中运行良好,但这不是升迁的问题。相反,BBC团队设计了一种基于无服务器计算的新架构。它还努力将过去的几个网站--如新闻、体育等--合并为一个网站,尽管克拉克说,世界服务、iPlayer视频和广播网站BBC Sound仍然是分开的。

其余的都被合并成了一种名为WebCore的新东西。克拉克说,通过专注于创建一个网站,而不是创建几个网站,我们正在看到性能、可靠性和搜索引擎优化方面的显著改善。

网络流量最初使用的是Global Traffic Manager(GTM),这是一个基于Nginx网络服务器的内部解决方案,部分在内部运行(表明BBC并未完全放弃其数据中心),部分在AWS上运行。克拉克说,GTM每秒处理数万个请求。AWS上的第二层负责缓存和路由,然后访问在AWS Lambda上运行的功能,这些功能使用JavaScript框架Reaction执行动态内容的服务器端呈现(SSR)。

服务器端呈现意味着浏览器无需做很多工作就可以查看页面,因此它应该会立即出现,尽管它增加了服务器的负担-我们注意到缓存减轻了这一点。沃尔玛工程师亚历克斯·格里戈里安(Alex Grigoryan)也监督了向SSR的迁移,他测试了SSR与客户端渲染(CSR),并表示:当我们在SSR与CSR上进行A/B测试时……。我们的数据显示,客户对提前渲染的参与度更高,不过他指出,服务器负载增加是一个主要缺点。

在BBC的例子中,使用了Lambda,它能够根据需要自动缩放。克拉克说,为了创建BBC网站,每秒大约有2000个Lambdas在运行;我们预计这个数字还会增加。他补充说,Lambda的可扩展性比AWS弹性计算云(EC2)上的虚拟机更好,他说,我们的流量水平可以在瞬间飙升;Lambda能够以EC2自动伸缩无法做到的方式处理这一问题。

BBC网站的另一个方面是请求内容的逻辑,克拉克称之为业务层。他说,内容通过REST API提供给Web渲染层,而一种名为Fast Agnostic Business Layer的解决方案允许不同的团队创建自己的业务逻辑,从而在满足不同需求的同时,仍然共享访问控制和缓存等方面的相同系统。克拉克没有太多地谈论内容本身是如何存储的,尽管他承诺在未来的帖子中会回到这个话题。

WebCore平台使用CI/CD来实现快速迭代,Clark展示了一个示例月度报告,其中显示了110个版本,或者说每天大约发布3个版本。构建大约需要3.5分钟,在这个特定的月份,从请求拉入(合并新代码)到在生产中运行它的平均时间是1天23分钟。平均而言,67%的拉取请求实际上合并到了代码中。

干得好吗?黑客新闻上的评论显示,人们的看法各不相同。在Lambda上运营一个英国广播公司(BBC)规模的网站简直就是对政府补贴预算的巨大浪费,这绝对是疯了。与常规计算相比,Lambda虚拟机时间有很大的提升……。一位网友说:我看,这就是无服务器出错的缩影。

约翰·利奇(John Lach)经营着一家名为News Sniffer的头条聚合网站,他的另一条评论说,生成的HTML很难分析。我运行的是News Sniffer项目,它必须解析BBC新闻页面。几周前,当HTML完全改变了格式,我的解析器崩溃时,我就知道了这个功能的推出。顺便说一句,新的HTML比以前复杂得多,也更难解析--我知道它的目的不是帮助解析内容,但看到它的结局,我仍然感到难过。

还有人对悬而未决的问题感到好奇。从内部部署迁移到AWS会带来什么成本影响?与使用EC2相比,Lambda对成本有何影响?如果缓存和内容交付网络像预期的那样工作,为什么还需要2,000个lambas呢?

BBC的马修·克拉克(Matthew Clark)联系到:尽管EC2的Lambda计算成本更高,但你需要的量更少,这抵消了这一点。他补充道,由于EC2可以自动缩放,所以有点神秘地补充道,有了EC2,我们为网络服务器提供了足够的容量来处理突然的流量变化(例如,由于突发新闻)。而在Lambda,我们只为我们实际使用的东西付费。

对于为什么该组织没有利用服务器端渲染的机会来提供更多可读的HTML,以便更好地用于解析和可访问性工具,他回答说:网页HTML看起来不同,因为它主要是由使用的框架(REACT)生成的。BBC在可访问性和性能方面有很高的门槛,我们继续测试该网站,以确保它在浏览器和屏幕阅读器之间运行良好。最后,我们问道,如果缓存和内容交付网络像预期的那样工作,为什么每秒需要2000个Lamdbas。

克拉克声称:Lambdas在处理更新方面至关重要,这样网站才能保持最新状态。每个BBC页面通常包含多个简单的Lambda执行--其中大部分在150ms内完成。

The Register-独立于科技界的新闻和观点。情况发布的一部分