Language:Chinese VersionEnglish Version

独立项目的云成本优化:真实数字,真实节省

我认识的大多数独立SaaS创始人都有过同样的经历:盯着一张云账单,它在六个月内从40美元涨到了220美元,而收入却没有相应增长。产品架构上没有任何变化。没有人刻意做出选择。服务只是不断累积,每次添加时都有看似合理的理由,直到月度账单开始看起来像一个获得融资的初创公司的基础设施账单。有效的独立项目云成本优化不是关于过分吝啬每一分钱——而是要建立对每一美元花在哪里的有意识认知,并为每个支出类别制定有原则的策略。

我曾在AWS、GCP、Hetzner和Vultr上运行过从个人副业项目到拥有数千月活跃用户的生产工作负载。导致过度支出的模式惊人地一致,解决方案也是如此。以下分解从结构性原因开始,涵盖每个主要成本类别并提供具体数字,最后提供一个可直接应用的分层预算框架。

“只需添加一项服务”的陷阱

云服务提供商的设计旨在促进增量式采用。添加一项托管服务只需三分钟和几次点击。评估该服务的长期成本是可选的——账单会在三十天后送达。这种采用成本与评估成本之间的不对等,是大多数独立项目云过度支出的根本原因。

这种陷阱之所以形成,是因为每个单独的服务在单独看来似乎都很便宜。一个 CloudWatch 告警是每月每告警 0.10 美元。一个应用负载均衡器是每 LCU 小时 0.008 美元。AWS Secrets Manager 是每月每密钥 0.40 美元,外加每 10,000 次 API 调用 0.05 美元。当你把这些数字加起来时,没有一个是令人震惊的。但它们共同代表了在计算任何实际计算或存储之前,每月在基础设施管道上花费 25 到 45 美元。对于一个每月经常性收入(MRR)为 40 美元的产品来说,这部分收入中有相当大的比例流向了项目没有也能正常运行的支持服务。

有效进行云成本优化所需的自律是每月带着真正的怀疑态度审查账单,而不是将其视为固定支出。对于大多数独立项目,两三个最大的项目项会有更便宜或免费的替代方案,且不会带来有意义的权衡。

典型的独立 SaaS 实际成本是多少

抽象的百分比很容易被忽视。以下分解涵盖了一个自筹资金的 Web 应用程序的真实生产堆栈,该应用程序有 1,500 到 5,000 的月活跃用户:Next.js 应用服务器、PostgreSQL 数据库、用于会话缓存的 Redis、基本监控以及用于用户上传的文件存储,总计约 15GB。

AWS 基准价(us-east-1,按需)

类别 服务 月成本
计算 EC2 t3.small (2 vCPU / 2GB RAM) ~$17
数据库 RDS PostgreSQL db.t3.micro (1 vCPU / 1GB RAM) ~$28
缓存 ElastiCache Redis cache.t3.micro ~$18
存储 S3 (15GB 存储量 + 每月 50GB 出站流量) ~$5
监控 CloudWatch(基本指标 + 3 个仪表板) ~$10
网络 ALB + 100GB 出站数据传输 ~$27
总计 ~$105/月

这 105 美元的数字假设没有使用 NAT 网关、没有 AWS 备份、没有多可用区 RDS,也没有 CloudTrail 日志。随着产品的成熟而添加这些功能,在产品产生 500 美元 MRR 之前,你的月成本将达到 160 到 200 美元。这个比率——早期阶段基础设施成本占收入的 20% 到 40%——正是云成本优化的目标。

计算:预留、竞价,或者完全离开 AWS

计算成本是最显眼的开支项,也是最容易管理不善的部分。大多数开发者默认使用的按需定价方式,其价格相比其他选项要高出不少。

在 us-east-1 区域,一个为期 1 年的预留 EC2 t3.small 实例每月约需 10.40 美元,而按需定价则为 16.79 美元——对于正在生产环境中运行的产品,这是一个你几乎肯定会保持的承诺,可节省 38% 的费用。3 年的预留实例价格降至每月约 6.50 美元。对于任何持续运行的计算实例,承诺预留定价是在纯 AWS 上可获得的最具投资回报率的变更之一。

Spot 实例更进一步:价格可低至按需定价的 90%,但代价是存在中断风险。对于无状态的工作器——如图像处理任务、邮件队列消费者、批量数据导出任务——Spot 实例是正确的默认选择。通过使用混合匹配 Spot 策略(多种实例类型、多个可用区)的自动扩展组来运行它们,可以使大多数异步工作负载的中断风险变得可控。对于任何有状态或面向用户的服务,Spot 会带来比节省的成本更多的运营复杂度,对于小型团队来说尤其如此。

第三个选项是大多数在 AWS 上起步的开发者最容易忽视的:对于非企业级工作负载,完全离开 AWS。Hetzner CX22(2 vCPU / 4GB RAM)每月 5.47 美元。Vultr 的高频实例(2 vCPU / 2GB RAM)每月 12 美元。DigitalOcean 的基础 Droplet(2 vCPU / 2GB RAM)每月 18 美元。这三者的辅助定价开销都比 AWS 少得多——没有 API 调用费用,没有出口流量复杂性,也没有为你当前流量级别可能根本不需要的负载均衡器单独收费。

GCP 的等效方案:e2-micro 微型实例第一年免费,之后每月 6.11 美元。GCP 的 Spot VM 用于可抢占工作负载,价格比标准定价低 60% 到 80%。GCP 的免费套餐还包括在某些地区永久性地每月提供 1 个 f1-micro 微型实例,这对于轻量级监控或代理实例很有用。

带宽陷阱

AWS 的出口流量定价是最常让开发者感到意外的开支项。从 EC2 到互联网的出站数据传输在每月前 100GB 后每 GB 收费 0.09 美元。这听起来很少。每月 1TB 的出口流量——对于提供媒体文件或向数千用户返回大型 API 响应的产品来说并非不现实——仅传输费用你就需要支付 90 美元,这还不包括其他所有服务成本。达到 5TB 时,出口流量成本甚至超过了运行应用程序的计算成本。

GCP 的出口流量定价与之相当。Azure 稍微便宜一些,每 GB 0.087 美元,但结构上是同样的问题。

这个修复是架构性的。资产、媒体和任何用户下载的内容不应直接从您的 EC2 实例或通过直接桶访问从 S3 提供。它们应通过 Cloudflare 提供,Cloudflare 的 CDN 没有出口费用——流量在 Cloudflare 的边缘被吸收,永远不会向您收取源站费用。Cloudflare 的免费套餐涵盖无限带宽。唯一成本是首次加载时填充缓存的源站请求。

专门针对存储,对比非常明显:

  • AWS S3: $0.023/GB 存储费 + $0.09/GB 出网流量费
  • Backblaze B2: $0.006/GB 存储费 + $0.01/GB 出网流量费(通过带宽联盟向 Cloudflare 免费传输)
  • Cloudflare R2: $0.015/GB 存储费 + 零出口费用
  • Hetzner 对象存储: ~$0.014/GB 存储费 + 在 Hetzner 网络内免费

对于一个存储 100GB 并有 200GB 月度下载量的产品:AWS S3 每月成本约 $20.60。Cloudflare R2 每月成本 $1.50 加上 10 万次 B 类操作。通过 Cloudflare 使用的 Backblaze B2 每月成本约 $0.60。迁移只需更新一个环境变量——您的 S3 端点,因为 Cloudflare R2 和 Backblaze B2 都是 S3 兼容的。

数据库成本:托管高级版及其替代方案

数据库支出是计算之后第二大可控成本类别,也是提供商之间定价模型差异最明显的领域。

在 us-east-1 区域,AWS RDS PostgreSQL 在 db.t3.micro(1 vCPU / 1GB RAM)上的按需价格为每月 $28.69。相比之下,Supabase 免费套餐项目包含 Postgres 数据库、认证、对象存储和 REST API。免费套餐限制为 500MB 数据库存储和每天 2 CPU 小时,这足以满足早期产品和轻负载下的副项目需求。每月 $25 的 Supabase Pro 包括 8GB 存储空间、5GB 数据库大小,并取消了项目暂停功能——对于相同规格来说,比 RDS 便宜得多。

PlanetScale 提供通过 MySQL 兼容的 Vitess 层实现的水平扩展。其免费套餐包括 5GB 存储空间和每月 10 亿次行读取——对于大多数独立 SaaS 数据量来说非常慷慨。权衡之处在于 MySQL 语义和 Vitess 分片模型中缺乏外键强制执行,这对复杂的关系型模式很重要。

Turso 基于 LibSQL(SQLite 的一个分支)构建,对于跨区域分布的读密集型工作负载的产品值得关注。其免费套餐涵盖 500 个数据库和总共 9GB 存储空间。边缘副本模型显著降低了全球分布式用户的读取延迟,价格从免费开始且可扩展成本低廉。它不是写密集型应用的正确选择,但对于内容密集型产品(其中大多数查询是读取操作)来说非常有吸引力。

在 Hetzner 或 Vultr VPS 上自管理的 Postgres 对于团队具备任何数据库运维经验的产品来说,仍然是投资回报率最高的选择。在每月 12 美元的 Hetzner CX32 上运行 PostgreSQL,与应用和 Redis 一起,能够轻松应对大多数独立 SaaS 的负载,通过 pgBackRest 或 Borgmatic 进行适当的备份到对象存储,每月额外花费 1 到 3 美元。

在独立规模下优化云成本的正确数据库策略是:使用 Supabase 免费层或自托管 Postgres,直到月度经常性收入(MRR)达到 500 美元,然后根据实际增长轨迹重新评估。在数据库规模或可用性要求证明您实际依赖的托管 SLA 合理之前,不要为 RDS 付费。

监控成本:Datadog 的每主机模式与开源替代方案

Datadog 确实是优秀的可观测性软件。其每主机每月 15 至 23 美元(基础设施专业版计划)的定价对于小型项目来说确实相当苛刻。一个适中的四服务器设置仅在 Datadog 代理费用上每月就要花费 60 到 90 美元,这还不包括 APM 追踪、日志摄取或自定义指标——每一项都是单独定价,如果不小心启用,可能使账单翻倍或三倍。

对于独立项目,开源监控堆栈——Prometheus、Grafana 和 Alertmanager——提供了同等的基础设施可见性,成本仅为运行它的计算资源。在所有服务都在本地公开指标的单服务器设置中,Prometheus 抓取配置和几个 Grafana 仪表板只需一个下午即可配置,之后只需最少的维护。Uptime Kuma 在不到 200MB 内存的情况下处理外部 HTTP 检查、TCP 监控和 Webhook 警报。

Grafana Cloud 的免费层每月涵盖 Prometheus 中的 10,000 个活跃序列、50GB 日志和 50GB 追踪。对于大多数独立产品,这个上限涵盖了整个可观测性堆栈而无需付费。托管选项消除了自行运行 Prometheus 的维护开销,同时在独立规模的数据量下保持免费。

两服务器生产设置的对比:

  • Datadog 基础设施专业版: 2 台主机每月 46 美元
  • New Relic(全栈可观测性): 每月免费至 100GB 数据,之后按使用量计费
  • Grafana Cloud 免费层: 在上述限制内免费
  • 在 6 美元 Hetzner CX11 上自托管 Prometheus + Grafana: 每月 6 美元,本地磁盘无限保留

自托管 Prometheus 是当你想要完全控制数据保留期、自定义记录规则和复杂告警逻辑,且无需按系列付费时的最强大选择。如果你希望零基础设施开销并且在其限制范围内,Grafana Cloud 免费层是正确选择。Datadog 和 New Relic 的付费层仅在你需要统一的 APM、分布式追踪和支持 SLA 时才值得其成本——这对团队有意义,但对个人独立产品通常不适用。

免费层叠加:零成本基础架构组件的艺术

多项服务提供真正有用的免费层,经过巧妙组合,可以覆盖早期产品的整个辅助基础设施。

Cloudflare 免费计划包含无限带宽的 CDN、DNS 托管、DDoS 缓解、SSL 终止和 Cloudflare Workers(每天 100,000 次请求)。Workers 在边缘运行 JavaScript 和 TypeScript,支持基于地理位置的路由、A/B 测试、请求转换和轻量级 API 端点——无需服务器,对大多数独立流量水平而言成本为零。Workers KV 添加了分布式键值存储,Cloudflare D1 在同一免费计划上添加了全局复制的 SQLite 数据库(5GB 存储,每天 500 万行读取)。

Supabase 免费层提供 Postgres(500MB)、魔法链接和社交 OAuth 认证、对象存储(1GB)以及基于数据库模式的 REST/GraphQL API。免费层中的项目在 7 天不活动后会暂停——对于副项目可以接受,但不适用于生产产品。升级到 Pro 版(25 美元/月)可移除此限制,同时比等效的 AWS 服务便宜得多。

Vercel 兴趣计划为非商业项目提供无服务器函数托管、CDN、预览部署和分析。商业限制是相关约束:任何产生收入的项目都需要 Pro 计划(20 美元/月/席位)。对于发布前或无收入的副项目,它是一个有用的零成本部署平台。

Railway 免费层提供每月 5 美元的计算额度,如果你在内存限制范围内,可以覆盖持续运行的应用服务器。Neon 的免费层提供无服务器 Postgres,具有 0.5GB 存储和自动扩展至零功能——适合开发和查询不频繁的早期生产环境。

有效的策略是在早期阶段叠加这些服务:Cloudflare 用于 CDN 和 Workers,Supabase 用于数据库和认证,Vercel 或 Railway 用于应用托管。在此配置下的产品可以在数月内无需基础设施费用,同时验证商业模式。一旦收入证明升级合理,迁移到付费基础设施的路径就非常直接。

按阶段划分的月度预算框架

$0–$50/月:收入前和早期验证

在这个层级,目标是在免费套餐和低成本基础组件上运行生产级堆栈。可行的配置:

  • Cloudflare 免费套餐(CDN、Workers、D1 用于轻量级数据)
  • Supabase 免费套餐(Postgres、认证、存储)
  • Railway $5 信用额度或 Fly.io 免费套餐(应用服务器)
  • 在共享 VPS 或免费云上运行 Uptime Kuma(监控)
  • Backblaze B2 免费套餐(10GB 存储)

在许多情况下,此配置可以处理发布前流量和早期付费用户,且每月零账单。权衡的是 Supabase 免费套餐的项目暂停风险和无服务器平台的冷启动问题——在此阶段是可以接受的。

$50–$200/月:早期收入,已确立产品

在 $50 到 $200 月度经常性收入(MRR)的情况下,优先级从免费套餐转向可靠性和运营简便性。推荐的堆栈:

  • Hetzner CX22 或 CX32($5–12/月):应用 + 自托管 Postgres + Redis
  • Cloudflare Pro(如需要 WAF 规则为 $20/月,否则使用免费套餐)
  • Cloudflare R2 或 Backblaze B2(典型独立开发者文件存储几乎零成本)
  • Grafana Cloud 免费套餐(监控)
  • Resend 或 Postmark 免费套餐(每月约 3,000 封事务性邮件)
  • Clerk 或 Auth0 免费套餐(最多 10,000 月活跃用户)

实际总成本:$25 到 $60/月,大部分预算用于计算资源。这是在独立开发者规模下最能证明云成本优化价值的配置——与 AWS 相比有显著节省,且没有明显的可靠性妥协。

$200–$500/月:增长阶段,多项服务

在此阶段,修复时间变得更加宝贵,一些托管服务证明了自己的价值。推荐调整:

  • Hetzner CX42 或 CX52($20–35/月)或专用 Hetzner 服务器用于大型数据库
  • Supabase Pro($25/月)或 DigitalOcean 托管 Postgres($15/月),如果希望将数据库与计算资源分离
  • 使用 Cloudflare CDN 作为前端的 Backblaze B2 主要文件存储
  • Better Uptime 或 Freshping 付费套餐用于多区域正常运行时间监控
  • Sentry 开发者计划($26/月)用于有意义的保留期的错误跟踪

实际总成本:$80 到 $130/月。此阶段的收入应能轻松覆盖基础设施成本,同时保持可观利润。关于托管数据库的问题值得在此重新评估——如果团队对自托管数据库没有明确的运营所有权,在此收入水平迁移到托管选项是明智的。

何时停止优化并开始盈利

云成本优化存在一个值得明确指出的收益递减问题。从 S3 迁移到 Cloudflare R2 每月节省 15 美元,是两小时时间的良好利用。花费八小时迁移基础设施以每月节省 12 美元则不是明智之举——特别是当这些时间可以用于提升用户留存率或转化率的功能时。

优化 effort 的合理阈值大致是:当年度节省金额超过你每小时机会成本的三倍时,才值得投入时间进行成本优化。以每小时 100 美元的机会成本计算,一项每年节省 360 美元(每月 30 美元)的变更最多可以证明三小时的迁移工作是合理的。低于该阈值的变更应列入低优先级列表,而不是本月的冲刺任务。

还有一类优化实际上会损害产品。为了在 Supabase 上每月节省 25 美元而过度优化数据库,将其自托管到 Postgres,然后因备份配置不正确导致数据丢失事件,其成本远高于托管服务可能产生的费用。接触用户数据的基础设施值得保守选择,而非激进的成本最小化。

实用框架:每季度审核一次云账单。对于每月超过 20 美元的每一项,回答三个问题。我的工作负载是否有具有同等可靠性的更便宜替代方案?迁移是否需要我的团队具备的技能?年度节省是否值得投入迁移时间?对通过这三项检查的项目采取行动。其余的保持不变,专注于收入增长。

运行最高效基础设施的开发者并非那些痴迷于优化的开发者——他们是那些做出了良好初始决策、认真关注账单审查、并抵制那些看似免费直到账单到达才显现的增量服务添加的开发者。

By Michael Sun

Founder and Editor-in-Chief of NovVista. Software engineer with hands-on experience in cloud infrastructure, full-stack development, and DevOps. Writes about AI tools, developer workflows, server architecture, and the practical side of technology. Based in China.

Leave a Reply

Your email address will not be published. Required fields are marked *

You missed