近期,科技圈内一场由亚马逊Prime Video引发的讨论热度不减。该平台于2023年3月22日发布的博客文章,详细阐述了其音视频监控服务成本锐减九成的过程。文章指出,通过从原有的分布式微服务架构过渡到单体应用程序,他们不仅实现了更高的可伸缩性和弹性,还显著降低了运营成本。这篇技术分享随后在“五一”期间被转载至Reddit和Hacker News等平台,迅速成为焦点话题。
由于亚马逊此举与当前业界盛行的微服务架构理念背道而驰,加之DHH紧随其后发文批判微服务,进一步点燃了技术社区的热情,使得围绕微服务架构的争议达到了顶峰。
面对众多跟风解读和片面评论,有必要对Prime Video的原始文章进行一次深入剖析。该文章内容并不复杂,技术细节亦不多,其核心观点可归纳为几点:
首先,该系统旨在监控海量用户点播视频流的质量和表现,如视频损坏、音画不同步等问题。其中,一个关键的微服务负责将视频拆帧并暂存至S3,即文中的Media Conversion服务。
其次,为快速构建系统,Prime Video团队采用了Serverless架构,即AWS Lambda和AWS Step Functions。Lambda作为用户请求的网关,Step Function则执行监控任务。当检测到问题时,系统会通过SNS发送通知。Step Function从S3获取Media Conversion处理的数据,并将结果汇总后由另一个Lambda存储至S3。
此架构看似简洁高效,完全基于Serverless,省去了对底层服务器的担忧。通过AWS的Lambda、Step Function、SNS和S3等服务,一个功能完备的监控系统得以快速部署,初期看似极具吸引力。
然而,Prime Video团队很快遭遇了重大挑战:AWS Step Function的伸缩性问题。他们发现,系统所需的并发Step Function数量远超账户硬性限制。更关键的是,Step Function按状态转换计费,导致成本高昂得难以承受。
面对这些问题,Prime Video团队着手进行改进:
他们将Media Conversion与Step Function的功能整合进一个程序,通过内存通信取代原先的S3交互,最终在一个线程内汇总结果并写入S3。
随后,这个单体架构被分布式部署,仍使用AWS Lambda作为入口调度。
这种新方案带来了显著优势:不再受限于Step Function的容量和高昂费用,技术主导权更强,成本也因此降低。如果能进一步将Lambda替换为Nginx或Spring Gateway,S3替换为MinIO,SNS替换为Kafka,成本还有进一步下降的空间。
从这个案例中,我们可以进行一些独立思考:
1. AWS的Serverless、微服务乃至单体架构,在各自适用的场景下都具有优势,如同不同类型的车辆服务于不同需求,关键在于选择与业务场景最匹配的方案。
2. Prime Video案例中的业务流程相对简单,本质上仅包含视频转码和分析两部分。将其拆分为两个微服务(一个负责转码,一个负责分析)或者合并为一个单体应用,从微服务的粒度划分原则来看都是可行的。微服务的划分应遵循边界上下文、单一职责、高内聚低耦合、事务与一致性及组织架构匹配等原则。
3. Prime Video面临的并非微服务架构本身的技术问题,而是AWS Step Function的处理能力不足和高昂费用所引发的产品问题。这反映了对Step Function的不当使用,此类大量数据分析处理场景并非其优势所在。因此,不能将一个特定的产品限制等同于微服务架构的普遍缺陷。若Step Function能无限扩展且经济实惠,Prime Video团队或将对其赞不绝口,而非转型至单体架构。
4. Prime Video与AWS作为亚马逊旗下独立核算的两大业务实体,与电商和AWS之间的关系类似。其对服务化和微服务架构的理解与实践经验,在全球范围内 arguably 无出其右。早前的文章亦曾对比过亚马逊和谷歌平台在这方面的差异。
5. Prime Video的案例本质上可视为一次“下云”行动,即从高成本的AWS Serverless云服务中剥离出来。云成本不仅体现在费用上,还涉及供应商锁定问题。Prime Video团队的监控系统复杂度适中,重构周期短,使得他们能够迅速切换到更传统的“服务化”+“云计算”分布式架构。这与Basecamp等公司选择彻底“下云”以节省巨额成本,背后逻辑异曲同工。
最后,如果您在分布式、微服务、云原生及云计算成本优化等方面遇到类似挑战,欢迎通过邮件联系:haoel@hotmail.com。
我们今年推出的平台MegaEase Cloud,旨在提供不失云计算体验的前提下,通过自建高可用基础架构,帮助用户实现至少50%的云计算成本节约。目前,可通过开源软件自建、MinIO与Cloudflare免费CDN组合等方式降低成本。未来还将推出与底层IDC合作的廉价GPU计算资源。欢迎体验。用户可选择中国区或国际区访问,请注意两区域独立且账号不互通,避免跨区使用。
相关产品演示和介绍文章将陆续发布。欢迎关注MegaEase Cloud。
