Page 82 - 《软件学报》2025年第5期
P. 82
1982 软件学报 2025 年第 36 卷第 5 期
编程语言也适用于不同的用例和需求, 例如 Python 通常用于数据分析和智能化任务, 而 Go 通常用于高性能后端
开发. 多语言支持意味着开发者可以根据任务需求选择最合适的语言.
对于触发器类型, 4 个平台上的函数都可以通过 HTTP 请求触发. 此外, 这些平台上的函数还可以被各自平台
上的云服务触发. 考虑到先前的工作并没有具体指出可触发的云服务类型, 在本文中, 我们列出不同服务器无感知
平台目前所支持触发的一些云服务. 在亚马逊 Lambda 上, 函数可以被 API 网关、S3 云存储、DynamoDB 数据库、
Kinesis 数据流、SQS 队列、SES 邮件、SNS 通知、CloudFormation 资源管理和更新、CloudFront 内容分发网络、
CloudWatch Logs 日志流、CodeCommit 代码托管、CodePipeline 持续交付、Cognito 身份验证、IoT 物联网、
Lex 智能语音交付和 MQ 消息代理云服务触发; 在谷歌 Cloud Functions, 函数可以被 Pub/Sub 主题、Storage 存储、
Firestore 数据库云服务触发; 在微软 Azure Functions 上, 函数可以被 Blob 存储、Kafka 主题、Cosmos DB 数据库、
SQL 关系数据库、事件网格、事件中心、IoT 中心、队列存储、SendGrid 电子邮件、SignalR 实时 Web 和定时
器云服务触发; 在阿里巴巴 Function Compute 上, 函数可以被对象存储 OSS、API 网关、定时器、日志 SLS、内
容分发 CDN、表格存储 Tablestore、消息 MNS、消息队列 MQ 版、消息队列 Kafka 版、消息队列 MQTT 版和数
据流 DTS 云服务触发. 支持多种触发器类型允许开发者根据任务的具体需求选择合适的触发器. 而且, 这些服务
器无感知平台支持与特定云服务的集成, 例如存储、数据库、消息队列等, 且这些云服务具有伸缩能力, 适应于服
务器无感知计算的关键特性. 这使得开发者可以轻松构建可伸缩的复杂云应用, 且充分利用云计算生态系统的各
种功能. 然而, 不同触发器类型和云服务的使用也可能增加开发者的学习负担, 开发者需要进一步了解它们的工作
方式和配置.
在服务器无感知平台上进行应用开发时, 这 4 个平台都提供了图形化控制台、命令行工具、API 和软件开发
工具包 (SDK) 进行应用开发. 此外, 微软 Azure Functions 还可以使用 Visual Studio Code 工具以及 Visual Studio 进
行开发. 然而, 先前的研究忽略了 Visual Studio 工具. 通过分析微软 Azure Functions 的更新历史, 我们发现 Visual
Studio 和 Visual Studio Code 工具一直以来受到微软 Azure Functions 的积极支持. 提供多种开发工具选项有助于
满足不同开发者和团队的偏好. 对于某些团队和开发者, 他们可能已经在使用 Visual Studio 或 Visual Studio Code
等工具. 微软 Azure Functions 的支持使他们能够无缝集成这些工具, 从而提高开发效率. 然而, 针对特定平台的开
发工具通常会带来平台依赖性. 这也使得服务器无感知计算社区出现了面向不同平台的编程开发框架, 如
Serverless Framework [46] . 在本文后续的运行时性能分析实验中, 我们也将使用命令行工具或软件开发工具包来创
建、部署和调用不同的基准测试程序.
在工作流支持方面, 4 个云服务提供商都支持基于函数服务的工作流构建. 但是, 每个云服务提供商所使用的
工作流服务不同. 亚马逊使用 Step Functions 服务来编排 Lambda 函数, 这个服务自 2016 年 12 月发布以来已得到
广泛应用 [47,48] . 谷歌使用 Cloud Workflows 服务来编排 Cloud Functions 函数, 该服务在 2020 年 8 月发布. 微软使
用 Azure Durable Functions 来编排 Azure Functions 函数, 该服务自 2018 年 5 月发布以来也变得流行 [49] . 阿里巴
巴 Function Compute 使用 Serverless Workflow 服务来编排函数, 该服务自 2019 年 7 月发布以来逐渐崭露头角 [48] .
每个工作流服务各自使用特定的语言或形式来完成函数之间的编排. 例如, 亚马逊 Step Functions 使用状态定义语
言, 微软 Azure Durable Functions 使用代码形式的编排函数. 总结来说, 使用工作流服务可以轻松编排和协调多个
函数, 使它们在特定顺序和条件下执行. 亚马逊 Step Functions 和阿里巴巴 Serverless Workflow 还提供了可视化界
面, 允许用户检查工作流的创建流程.
发现: JavaScript、Python 和 Java 是 4 个平台都支持的编程语言. 谷歌 Cloud Functions 增加了对 PHP 语言的
支持, 阿里巴巴 Function Compute 增加了对 Go 语言的支持. HTTP 类型的触发器是常见的触发类型, 并且应用中
的函数都可以被各自平台上的多种云服务触发, 其中, 亚马逊 Lambda 支持最多种类的云服务触发. 开发者可以使
用各个平台的图形化控制台、命令行工具、API 或软件开发工具包进行应用开发. 另外, 微软 Azure Functions 还
可以利用 Visual Studio Code 和 Visual Studio 工具提高开发效率. 4 个平台都支持基于函数服务的工作流构建过
程, 但每个平台的工作流构建过程都需要使用特定的定义方式来完成函数编排.