亚马逊|经过七年演进,Serverless流行起来了吗?( 三 )


冷启动和厂商锁定
“冷启动”的性能改善算得上是一次标志性事件。FaaS 平台初始化函数实例需要一些时间。即使对于同一个特定的功能,不同的平台之间这种启动延迟可能会有很大差异,从几毫秒到几秒不等,取决于使用的库、函数配置的算力等大量因素。以 Amazon Lambda 为例,Amazon Lambda 函数的初始化要么是“热启动”,要么是“冷启动”。“热启动”是从前一个事件中重用 AmazonLambda 函数的实例及其宿主容器,“冷启动”需要创建一个新的容器实例,启动函数宿主进程。在考虑启动延迟时,“冷启动”更受关注。
亚马逊云科技在 2019 年提供了一项名为“预置并发(Provisioned Concurrency)” 的重要新功能,通过让函数保持初始化状态,从而更精确地控制启动延迟。用户需要做的就是设置一个值,指定平台需要为特定功能配置多少个实例,Amazon Lambda 服务本身将确保始终有该数量的预热实例等待工作。“冷启动”无疑是无服务器技术批评者指出的最大问题,而亚马逊云科技这项功能的出现,代表着关于“冷启动”的争议已经结束。
除此之外,“厂商锁定”也是一个极具争议的地方。几年前,作为无服务器技术的反对方,CoreOS 首席执行官 Alex Polvi 称 Amazon Lambda 无服务器产品“是我们在人类历史上见过的最糟糕的专有锁定形式之一”。而为 MongoDB 工作的 Matt Asay 撰文反驳他说,“完全避免锁定的方法是自己编写所有底层软件(事件模型、部署模型等)”。
总之,作为支持方,很多人认为“锁定”并不是一件非黑即白的事情,而是本身需要反复权衡的一种架构选择。还有技术专家表示,可以采用将应用程序和平台分离的设计方式,以及标准化技术的方法最小化迁移成本:如果使用标准化的 HTTP,那么可以使用 Amazon API Gateway 将 HTTP 请求转换为 Amazon Lambda 事件格式;如果使用标准化的 SQL,那么使用与 MySQL 兼容 Amazon Aurora Serverless,可以自然地简化数据库的迁移路径......
最佳实践案例
发展到现在,用户在哪些场景下会使用无服务器计算?实际上,每年的亚马逊云科技 re:Invent 大会都会有一些团队给大家分享实践经验,其中不乏具有代表性的案例。

亚马逊|经过七年演进,Serverless流行起来了吗?
文章插图

在 2017 年的亚马逊云科技 re:Invent 会议上,美国电信 Verizon 的 Revvel 团队介绍了他们如何使用 Amazon Lambda 和 Amazon S3 进行视频不同格式的转码。早先团队使用的是 EC2 实例,如果视频长达 2 小时或大到几百 G,问题就变得很棘手,高清转换可能需要 4-6 个小时,而转换工作中途一旦停止或中断就意味着前功尽弃。所以,Revvel 团队采用的新方法是将视频分为 5M 的小块分别存储在 Amazon S3 存储桶中,然后用 Amazon Lambda 启用上千实例并行计算,完成转码后再合并成一个完整的视频,整个过程缩短到不足 10 分钟,费用也降低到了原来的十分之一。
在 2020 年的亚马逊云科技 re:Invent 会议上,Coca-Cola 的 Freestyle 设备创新团队分享了他们的非接触式售卖机解决方案:使用 Amazon Lambda 和 Amazon API Gateway 构建后端托管服务,前端使用 Amazon CloudFront ,从而可以在一周内推出原型,并在三个月内将 Web 应用程序从原型扩展到 10000 台机器,进而在疫情期间快速占领市场。
在今年的亚马逊云科技 re:Invent 会议主题演讲里,Werner Vogels 博士讲述了 New World Game 多人游戏中的无服务器解决方案。这是一款非常复杂的大规模分布式实时游戏,可处理 30 次 /s 的动作或状态,重绘和计算需要大量的 CPU 资源。它通过每 30 秒 80 万次写入将用户的状态存储在 Amazon DynamoDB 中,这样用户即使意外中断游戏也能及时恢复到之前的游戏状态。同时通过日志记录用户操作,然后使用 Amazon Kinesis 传输日志事件,速度可达 2300 万事件 / 分钟,随后将事件流推送到 Amazon S3 中,再用 Amazon Athena 进行分析处理。利用该数据流,团队可即时预测游戏用户行为和更改游戏中的策略。游戏环境中的运营,比如登录、交易、通知等操作事件,都是通过 Amazon Lambda 无服务器计算来实现的。
无服务器在这款多人游戏中发挥了非常重要的作用,但这种大型架构也对无服务器的性能提出了非常大的挑战。Amazon Lambda 达到了每分钟 1.5 亿次的调用频率,这比行业里的平均水准高出数倍。

亚马逊|经过七年演进,Serverless流行起来了吗?
文章插图

3.无服务器的未来在今年年底,亚马逊云科技一口气推出了五款无服务器产品: