Prime Video 从无服务器架构转向 EC2 和 ECS 以节省成本

Prime Video 重新架构音视频质量检测解决方案以降低成本并解决扩展性问题

Prime Video 是亚马逊的视频流媒体服务,最近分享了其如何通过重新架构音视频质量检测解决方案,显著降低运营成本并解决扩展性问题的经验。通过将工作负载迁移到 AWS 的 EC2 和 ECS 计算服务,运营成本降低了 90%。

初始架构与挑战

Prime Video 的视频质量分析(VQA)团队最初开发了一个用于检测音视频流质量的工具,能够识别用户体验问题并触发相应的修复操作。该工具的初始架构基于微服务,利用无服务器基础设施栈执行分析过程的各个步骤。微服务包括将音视频流分割为视频帧或解密的音频缓冲区,并通过机器学习算法分析帧和音频缓冲区来检测流缺陷。

架构中的主要流程协调机制是 AWS Step Functions,用于协调多个 Lambda 函数的执行。所有音视频数据,包括中间工作项,存储在 AWS S3 桶中,分析结果通过 AWS SNS 主题传递。

尽管该分布式架构设计旨在实现水平扩展,并利用无服务器计算和存储以加快实施速度,但在实际运行中,该架构只能支持约 5% 的预期负载。随着更多流媒体服务的接入,团队发现运行高规模基础设施的成本非常高,并且存在扩展瓶颈,无法监控数千个流媒体。

问题根源

高运营成本的主要原因是存储中间工作项(视频帧和音频缓冲区)的 S3 桶的大量读写操作,以及大量的 Step Function 状态转换。此外,由于流程协调涉及每个分析音视频流的每个状态转换,导致达到账户状态转换总数的限制。

重新设计与优化

团队决定将所有业务逻辑整合到单个应用程序进程中。Prime Video 的高级软件工程师 Marcin Kolny 表示,分布式方法在特定用例中并未带来显著优势,因此他们将所有组件打包到单个进程中。这一变化消除了对 S3 桶作为中间存储的需求,因为数据传输现在在内存中进行。此外,团队还实现了在单个实例内控制组件的编排机制。

最终的架构将整个流分析过程运行在 ECS 上的 EC2 实例上,检测器实例组分布在不同的 ECS 任务中,以避免在添加新检测器类型时达到垂直扩展限制。

成果与未来展望

在推出重新设计的架构后,Prime Video 团队不仅大幅降低了成本(降低了 90%),还通过利用 EC2 成本节省计划确保了未来的成本节约。此外,架构的变化还解决了之前未预见到的扩展性限制,使解决方案能够处理客户观看的所有流媒体。

通过这次优化,Prime Video 展示了如何通过重新思考和调整架构,在降低成本的同时提升系统的扩展性和性能。

阅读 43
0 条评论