BBC切换到Serverless支持的新网站架构 - Register


BBC网站是英国第六大最受欢迎的网站,大目前部分已经迁移到了Amazon Web Services(AWS),现在约有一半的网站是使用无服务器平台AWS Lambda呈现的。
BBC网站的大部分内容都是用PHP编写的,之前是托管在伦敦附近的两个数据中心,PHP其实也可在云中正常运行,迁移到云环境不是繁琐的事情,但是,BBC团队还是设计了一种基于无服务器计算的新架构。
Web流量最初会命中全球流量管理器(GTM),这是一种基于Nginx Web服务器的内部解决方案,其部分运行在本地(表明BBC并未完全放弃其数据中心),部分运行在AWS上。GTM“每秒处理数万个请求”。在访问AWS Lambda上运行的函数之前,AWS的第二层处理缓存和路由,这些功能使用JavaScript框架React来执行动态内容的服务器端呈现(SSR)。
服务器端渲染意味着浏览器无需进行大量工作就可以立即查看页面,因此页面应立即显示,尽管这会增加服务器的负担,但是,缓存可以缓解这种情况。工程师Alex Grigoryan负责向SSR的迁移,他测试了SSR与客户端渲染(CSR),并说:“当我们对SSR与CSR进行A / B测试时……我们的数据显示会尽早呈现”,尽管他指出服务器负载增加是SSR主要缺点。
使用Lambda能够按需自动缩放。每秒大约有2,000个lambda运行以创建BBC网站,Lambda的伸缩性比AWS Elastic Compute Cloud(EC2)上的VM更好,访问流量可能会立即上升; Lambda可以用EC2自动伸缩无法做到的方式来处理此问题。
 Lambda对于处理网站内容更新至关重要,这样网站就能保持最新状态。每个BBC页面通常都包含多个简单的Lambda执行,其中大多数在150毫秒内完成。
BBC网站的另一方面是请求内容的逻辑,Clark称之为“业务层”。内容是通过REST API提供给Web渲染层的,而一种称为快速不可知业务层的解决方案可以做到:允许不同的团队创建自己的业务逻辑。在满足相同要求的同时仍可以共享相同的系统如访问控制和缓存。
WebCore平台使用CI / CD来实现快速迭代,每天大约3个版本。构建大约需要3.5分钟,从拉取请求(合并新代码时)到在生产环境中运行它的平均时间为一天23分钟。
有人认为:在Lambda上运行一个BBC大小的站点绝对是浪费了政府补贴的预算,这绝对是疯狂的。与常规计算相比,Lambda VM时间有很大的增加。