Serverless 工作流主要用来协调分布式应用和微服务以构建复杂的、多步骤的、有状态的(Stateful)和长时间运行的业务流程。

事务型业务流程编排

复杂的业务场景如电商网站、酒店、机票预定等应用通常要访问多个远程服务,并且对操作事务性语义(即所有步骤全部成功或全部失败,不存在中间状态)有较高要求。在流量较小、数据存储集中的应用中,事务性可以通过关系型数据库提供的 ACID 特性满足。然而在大流量场景下,为了高可用和可扩展性,业务通常选择向微服务的分布式架构方向演进。在这样的架构中提供多步骤事务性的保证通常需要引入队列和数据库来持久化消息以及展现流程状态,这类系统的开发和运维会给业务方带来额外的成本和负担。使用 Serverless 工作流可以提供长流程分布式事务保证,帮助用户聚焦于自身业务逻辑。

如何使用 Serverless 工作流编排事务型业务流程,请参见分布式多步骤事务

多媒体文件处理

使用 Serverless 工作流可以帮助您将多个任务,如转码、截帧、人脸识别、语音识别、审核上传等,编排成一个完整的处理流程,通过函数计算,提交媒体处理(IMM)任务,或自建处理器,产出一个符合业务需求的输出。各任务的执行错误异常可以被可靠的重试,大大提升多媒体任务处理吞吐量。

示例应用请参见轻松构建基于 Serverless 架构的弹性高可用音视频处理系统

基因数据处理

Serverless 工作流可以将多个批量计算分布式作业串联或并行编排,可靠地支持执行时间长、并发量大的大规模计算。如基因数据分析中将基因序列对齐,将所有染色体并行做变异分析,最终将各染色体数据聚合产出结果。Serverless 工作流根据指定的依赖关系提交不同 CPU、内存、带宽规格的批量计算作业,提升执行可靠性,提高资源利用率,优化成本。

数据处理流水线

使用 Serverless 工作流可以快速搭建一个高可用的数据处理流水线(Data Pipeline)。例如,来自不同数据源的计量数据被收集到日志服务,函数计算的定时器每小时触发 Serverless 工作流Serverless 工作流利用函数计算对多个 Shard 的计量数据做并行处理,并将结果分别写回日志服务;然后可以将所有 Shard 产生文件进行聚合,写入表格存储,最后为每个用户生成账单。Serverless 工作流支持对流程中的单个步骤失败进行重试,降低流程失败概率。Serverless 工作流支持动态并行任务执行,实现数据处理能力的高可扩展性。

示例应用请参见使用 Serverless 工作流+函数计算轻松构建 ETL 离线数据处理系统

自动化运维

自动化运维常见有步骤繁琐时间长短不一、单机脚本可靠性低、依赖复杂等常见的挑战,另外进度无法可视化。Serverless 工作流+函数计算的流程可以很好地应对这些挑战。例如自动化的软件部署从构建 Docker 容器、上传容器镜像,开始并追踪各节点下拉镜像并启动新版本镜像的容器,每一步函数产生的日志会被保存到日志服务可供查询分享。基于 Serverless 工作流的自动化工具比单机运维脚本具有高可用、自带的错误处理机制和进度图形化的特点。