优化 20% 资源成本,新东方的 Serverless 实践之路

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 以下内容是由新东方教育科技集团云教室直播平台技术负责人 么敬国 在云栖大会的分享。

作者:么敬国(新东方教育科技集团云教室直播平台技术负责人),灏正(阿里云 Serverless 架构师)


新东方教育科技集团定位于以学生全面成长为核心,以科技为驱动力的综合性教育集团。新东方线上教育业务的云教室系统支持了视频直播、转码、点播等新东方所有在线教育场景。随着业务量的增大,由于直播转录及视频转码任务处理平台具有明显的波峰波谷特性,自建机房较低的资源利用率成为了业务的核心痛点。为了提升计算资源利用率,进一步实现降本提效目标,在几次尝试之后,新东方踏上了 Serverless 实践之路。以下内容是由新东方教育科技集团云教室直播平台技术负责人 么敬国 在云栖大会的分享。


如何应对难以预测的业务量?


新东方除了自己的线上教育业务使用云教室平台以外,还通过美刻云直播对外开放了新东方的直播能力。云教室直播平台主要支持四种业务模式:


  • 云教室:在线直播互动课,讲究互动性。
  • 云点播:录播课。
  • 云直播:大型直播,以主播为主。
  • 智慧教室:软硬件结合的方案,提供类似于双师的教育模式。


直播+录播是新东方主推的课程交付模式。直播课程互动性强,可以实现良好的课堂互动,激发学生的学习兴趣;教师可以基于学生的课堂反馈或互动直接与学生进行互评,便于教师及时对教学环境作出微调,从而让教学过程更有针对性;通过互动和课堂答疑,可以让教学过程和效果更有保障,直播课程比较适合低幼年龄段的学生。


而面对高中及高中以上年龄段的学生,录播课更为合适,录播课特点为学习时间灵活,学生可以自主对学习内容进行检索,进行有选择性的学习,一般适用于高中和高中以上年龄段学生。录播课的优点在于可以对授课内容不断进行打磨、编辑,制作精品课程,需求量逐步加大。


最初团队采用地录制技术方案为客户端录屏,将老师的直播进行录制,方便学生反复观看,但这样的方式出错率高, CPU 占用率也较高,无法对录制 UI 布局进行灵活定制,只能是看到什么录什么,这样的方式仅能满足低幼年龄段的课程需求。


今年,新东方开始对接大学生线上教育业务,对录播课程的质量提出了更高的要求。团队开始考虑采用服务端录制的方式解决问题。服务端录制的两个核心点在于直播录制和视频标准化生产。我们的业务模式决定了我们很难准确预测业务量,因此,新东方关键的技术任务是实现计算弹性


三种选择,函数计算脱颖而出


三种选择,函数计算脱颖而出要解决服务端录制的问题,摆在团队面前的有三个可选的技术路线:


  • 直接使用 ECS 自建,该方案的优势是灵活性比较高,但问题在于计算没有弹性,虽然云厂商提供了弹性分配 ECS 资源 API ,但是自己实现整个计算弹性需要巨大的开发量,同时后续运维比较复杂,资源成本高,难以做到标准化。


  • 云录屏 SaaS 方案,这个方案的优势是具备标准化的服务,研发投入比较少,运维工作也较少,但是问题在于灵活性差,资源成本极高,难以进行进一步的性能优化。我们希望寻找一家成熟的 SaaS 厂商提供地服务以快速支持业务,但是经过试用,这些平台的成熟度和技术指标等均无法满足我们的需求。


  • 采用阿里云函数计算 FC,我们发现阿里云的函数计算产品可以完美满足计算的弹性需求,只需要关注具体需求在平台上做开发即可,研发投入小同时免运维,开发过程自主可控,灵活性高,可按需使用极大降低了使用成本,实现标准化相对容易。不过函数计算是一个比较新的技术,团队需要一段时间来熟悉。


经过反复比对,新东方团队选择使用函数计算来解决服务端录制问题。


新东方的 Serverless 实践


录播转码,函数计算小试牛刀


我们首先在录播转码场景下进行了尝试。录播转码的核心诉求是对直播流进行实时转码,保存为标准的视频格式,方便后续加工使用。


1.png


在这个场景中,我们第一次感受到了函数计算 FC 带来的弹性优势。在老师进入房间发起转码请求后,可快速启动函数实例进行转码。在上课结束后,结束转码任务,将临时音视频结果上传至云存储后即可立即释放函数实例,不会存在任何计算资源的浪费。有了在录播转码项目中应用函数计算的经验以后,我们对函数计算方案有了更大的信心。


初露锋芒,函数计算直播合流转码方案


之后,我们启动了云端录制项目。使用 Chrome 浏览器加入直播房间,对浏览器界面进行截屏录制,该方案的关键在于弹性提供浏览器实例

2.png


因此,我们利用阿里云函数计算启动 Linux 容器,在 Linux 容器运行 Chrome 浏览器实现弹性提供浏览器实例。整个的录制流程是这样的:老师进入教室以后,开始进行音视频推流以及白板操作。同时,录制平台发起录制请求,启动函数处理,开始接收教室的音视频流和白板操作,并在浏览器展现整个教室的画面,同时做截屏。课程结束后,平台发起结束录制请求,函数计算平台会优雅地终止实例。终止之前,实例会将临时结果上传至云存储,随后函数实例被销毁,不存在任何资源浪费。


开箱即用的可观测能力


我们认为,可观测能力对于函数计算平台至关重要。首先,业务高峰期需要启动大量函数实例,因此,必须要完整的 metrics、log 和 trace 才能有效对海量实例进行监控。其次,因为函数计算实例按需创建,完成任务之后被销毁,平台必须保存完整的日志,以便发现问题后开发人员进行排错。


我们曾在开发录制服务的过程中面临的问题是:启动函数实例以后,Chrome 浏览器要访问直播服务,此时网络出现问题,导致录制失败。后续我们使用阿里云 SLS 日志平台查看日志,发现 Chrome 浏览器内核对网络处理过于敏感。找出问题后,对症下药,加入了重试机制,问题得以解决。


超出预期,函数计算带来更多惊喜


在使用函数计算技术之前,我们期望它能通过百毫秒拉起上万个实例,定时预热彻底解决冷启动困难,帮助我们承载直播转码和录屏业务业务洪峰。有效应对大规模突发在线流量,按量付费,提高资源利用率,减少 20% 资源成本开支,极大程度降低运维成本,让我们可以只专注业务创新。在实际使用的过程中,我们发现函数计算不但能够中我们完美满足我们的需求,还带来了惊喜:让我们的开发人员只需掌握几个新概念、使用几个 API ,即可轻松使用平台。函数计算方案运行一段时间以来,云资源费用得到较大降低。另外,函数计算允许根据自己的业务场景制作模板,并且可供其他业务方使用,也为我们带来意外收获。


点击此处,查看新东方完整视频讲说!

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
25天前
|
SQL 数据采集 DataWorks
DataWorks重磅推出Serverless通用型资源组,实现低成本灵活付费和动态平滑扩缩容
DataWorks资源组2.0上线,提供低成本、动态扩缩容的数据计算资源服务。
54168 6
DataWorks重磅推出Serverless通用型资源组,实现低成本灵活付费和动态平滑扩缩容
|
6天前
|
分布式计算 Hadoop Serverless
数据处理的艺术:EMR Serverless Spark实践及应用体验
阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。
|
12天前
|
存储 关系型数据库 Serverless
PolarDB产品使用问题之开启Serverless功能后如何设置资源的扩缩范围
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
20天前
|
分布式计算 运维 Serverless
通过Serverless Spark提交PySpark流任务的实践体验
EMR Serverless Spark服务是阿里云推出的一种全托管、一站式的数据计算平台,旨在简化大数据计算的工作流程,让用户更加专注于数据分析和价值提炼,而非基础设施的管理和运维。下面就跟我一起通过Serverless Spark提交PySpark流任务吧。
56 1
|
27天前
|
消息中间件 Serverless PyTorch
Serverless 应用引擎产品使用合集之FC内网访问VPC内的资源不通是什么导致的
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
27天前
|
运维 Serverless 文件存储
Serverless 应用引擎产品使用合集之函数实例运行期间相关的依赖资源(vcpu、临时磁盘、GPU)是否会随函数运行完毕而释放
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
9天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
8天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
Serverless 应用引擎产品使用合集之关于OSS映射目录的大小限制,如何可以跳过
|
8天前
|
运维 Serverless API
Serverless 应用引擎产品使用合集之通过 API 调用 /tagger/v1/interrogate 时,出现unsupported protocol scheme "" 错误,如何处理
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
8天前
|
缓存 运维 监控
Serverless 应用引擎产品使用合集之在使用函数计算 FC 部署 stable-diffusion 应用时,选了 tagger 扩展插件却拿不到提示词,还报错“Error”,是什么原因
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

相关产品

  • 函数计算