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


在发布至今这七年里,Amazon Serverless 服务各方面都在不断改进:
2016 年,亚马逊云科技发布了 Amazon Step Functions,可以组合调用多个 Amazon Lambda 函数和其它 Amazon 服务,将复杂的业务逻辑可视化地表达为低代码、事件驱动的工作流。
2017 年,Amazon Lambda 的默认并发数提升到了 1000,并提供了分布式跟踪工具 X-Ray。
2018 年,亚马逊云科技发布了 Amazon Aurora Serverless v1 版本,正式宣告更复杂的关系型数据库(RDBMS)也能具备 Serverless 的特性,实现了云数据库基于负载的自动启停与弹性扩展。随着云服务的演化,亚马逊云科技相继发布了五项 Serverless 数据库服务,包括 Amazon Aurora Serverless、Amazon DynamoDB、Amazon Timestream(一种时间序列数据库服务)、Amazon Keyspaces(兼容 Apache Cassandra 的托管数据库服务)和 Amazon QLDB(一种全托管的分类账数据库)。目前,Amazon Aurora Serverless 已从 v1 版进化到 v2 版,Aurora Serverless v2 可以在一秒内将数据库工作负载从数百个事务扩展到数十万个事务,与为峰值负载配置容量的成本相比,最多可节省 90% 的数据库成本。
2019 年,亚马逊云科技发布了 Amazon EventBridge,它是一种无服务器事件总线服务,作为集中式枢纽连接到 Amazon Web Services 服务、自定义应用程序和 SaaS 应用程序,提供从事件源到目标对象(例如 Amazon Lambda 和其他 SaaS 应用程序)的实时数据流。现在 Amazon Lambda 可与 200 多种 Amazon Web Services 服务和 SaaS 应用程序相集成。
同年,亚马逊云科技还推出了 Amazon S3 Glacier Deep Archive,进一步按读写冷热程度完善了 S3 存储服务的智能收费档次。
2021 年 Amazon Lambda 计费功能调整为了 1ms 级别,并且还提供了容器镜像支持,以及 Amazon Graviton2 处理器支持,与基于 x86 的同类产品相比,Amazon Graviton2 性价比最高可提升 34%。
冷启动和厂商锁定
“冷启动”的性能改善算得上是一次标志性事件。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,可以自然地简化数据库的迁移路径......