Hacker News 中文摘要

RSS订阅

我们自建"S3"每年节省50万美元 -- We Saved $500k per Year by Rolling Our Own "S3"

文章摘要

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实现高效键值存储
  • 双重清理机制
    1. 下载即删除:处理完成后立即释放内存
    2. TTL垃圾回收:清理未被处理的滞留视频片段

实施效果

成本收益

  • 直接成本节约:消除S3请求费用和无效存储时间,年节省约50万美元
  • 间接收益:保持原有系统可靠性,摄像头端无需任何固件变更

经验总结

  • 明确边界约束:清晰定义短存储时长、有限重试等前提条件
  • 渐进式验证:通过镜像模式PoC提前发现网络瓶颈等关键问题
  • 经济性决策:当定制方案维护成本低于云服务费用时,自研成为合理选择

适用场景建议

该方案适合同时满足以下条件的企业: 1. 业务规模足够大,能产生显著成本节约 2. 数据具有明确的短暂存储特性 3. 能够容忍极小概率的数据丢失 4. 具备将复杂逻辑控制在有限范围内的架构能力

"大多数'自建vs采购'决策关注功能,但在规模效应下,经济因素会改变权衡标准。" —— 项目团队核心洞见

评论总结

以下是评论内容的总结:

  1. 对无服务器架构的质疑
    有评论认为无服务器架构在本案例中并不适用,反而增加了成本和复杂性。
    引用:

    • "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."
  2. 对工程成本的关注
    多位评论者质疑维护这一系统的工程师成本,并批评其工程实现。
    引用:

    • "I'm curious how many engineers per year this costs to maintain"
    • "Amazing example of absolutely horrible engineering."
  3. 替代方案的讨论
    评论者提出了多种替代方案,包括自托管存储、数据库方案等,并讨论了成本与稳定性的平衡。
    引用:

    • "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?"
  4. 对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."
  5. 对实际节省的质疑
    有评论指出标题夸大了节省金额,实际方案只是在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."

总结呈现了技术讨论、成本质疑和商业批评三个主要维度,反映了评论区的多元观点。