文章摘要
Nanit公司通过自研Rust内存存储系统N3替代S3作为视频处理管道的临时存储,解决了S3按请求计费和高昂的24小时最低存储费用问题,每年节省约50万美元成本。N3仅将S3作为溢出缓冲区,实现了高效低成本的数据处理。
文章总结
自研"S3"存储系统如何帮我们年省50万美元
核心摘要
Nanit公司通过自研Rust内存存储系统N3替代S3作为视频处理管道的临时存储层,在保持系统可靠性的同时,实现年成本节约约50万美元。该系统仅将S3作为溢出缓冲区,解决了S3按请求计费和高昂的存储时间税问题。
项目背景
原有架构痛点
- 请求费用高昂:每天数千次PutObject操作,请求费用成为最大成本项
- 存储时间浪费:即使视频仅存储2秒处理,S3生命周期规则强制按24小时计费
- 扩展成本线性增长:提高视频分块频率会直接增加请求次数
技术方案
N3系统核心设计: - 内存存储:视频数据仅保留约2秒处理时长 - 双组件架构: - N3-Proxy(无状态):处理摄像头签名URL请求和上传 - N3-Storage(有状态):内存存储视频片段并提供下载URL - 两级回退机制: 1. 代理级回退:单个请求失败时自动转存S3 2. 集群级切换:整个N3系统异常时全面切回S3
关键技术突破
性能优化
- 网络优化:采用AWS c8gn.4xlarge网络优化型实例,解决网络突发限制
- TLS加速:从stunnel迁移至原生rustls,结合Graviton4芯片获得30%性能提升
- 内存管理:通过jemalloc分析解决连接泄漏问题,严格限制连接生命周期
存储设计
- 纯内存存储:使用DashMap实现高效键值存储
- 双重清理机制:
- 下载即删除:处理完成后立即释放内存
- TTL垃圾回收:清理未被处理的滞留视频片段
实施效果
成本收益
- 直接成本节约:消除S3请求费用和无效存储时间,年节省约50万美元
- 间接收益:保持原有系统可靠性,摄像头端无需任何固件变更
经验总结
- 明确边界约束:清晰定义短存储时长、有限重试等前提条件
- 渐进式验证:通过镜像模式PoC提前发现网络瓶颈等关键问题
- 经济性决策:当定制方案维护成本低于云服务费用时,自研成为合理选择
适用场景建议
该方案适合同时满足以下条件的企业: 1. 业务规模足够大,能产生显著成本节约 2. 数据具有明确的短暂存储特性 3. 能够容忍极小概率的数据丢失 4. 具备将复杂逻辑控制在有限范围内的架构能力
"大多数'自建vs采购'决策关注功能,但在规模效应下,经济因素会改变权衡标准。" —— 项目团队核心洞见
评论总结
以下是评论内容的总结:
对无服务器架构的质疑
有评论认为无服务器架构在本案例中并不适用,反而增加了成本和复杂性。
引用:- "Sticking something with 2 second lifespan on disk to shoehorn it into aws serverless paradigm created problems and cost out of thin air here"
- "Video processing is one of those things that need caution when doing serverlessly."
对工程成本的关注
多位评论者质疑维护这一系统的工程师成本,并批评其工程实现。
引用:- "I'm curious how many engineers per year this costs to maintain"
- "Amazing example of absolutely horrible engineering."
替代方案的讨论
评论者提出了多种替代方案,包括自托管存储、数据库方案等,并讨论了成本与稳定性的平衡。
引用:- "Has anyone tried self-hosted alternatives like MinIO or SeaweedFS?"
- "Have you ever thought of using a postgresql db to store those files and use CDC to publish messages?"
对Nanit公司的批评
部分评论转向对Nanit公司的商业模式和隐私政策的批评,认为其过度依赖云端存储且存在隐私风险。
引用:- "Every Nanit user is uploading video and audio of their home/baby live to Nanit without any E2EE."
- "It just pains me to see cloud based in-home audio/video storage being so normalized."
对实际节省的质疑
有评论指出标题夸大了节省金额,实际方案只是在S3前增加了内存缓存。
引用:- "They didn’t actually do what the headline claims. They made a memory cache which sits in front of S3."
- "the savings are just $500k. Definitely money saved but not a lot."
总结呈现了技术讨论、成本质疑和商业批评三个主要维度,反映了评论区的多元观点。