写点什么

上云一年烧掉超过 100 万美元,我们的钱都去哪儿了?

  • 2022-04-27
  • 本文字数:4063 字

    阅读完需:约 13 分钟

上云一年烧掉超过100万美元,我们的钱都去哪儿了?

ConvertKit 是一家全功能电子邮件服务提供商 (ESP),是发展最快的电子邮件营销公司之一。但作为一家自力更生的私营企业,没有外部资金的支持,云成本控制对 ConvertKit 来讲非常重要。


近日,ConvertKit 详细列出了 2021 年在 AWS 上的花费,回顾了自己到底花掉了多少钱,并思考哪里还能进一步优化。“过去这一年我们也犯了不少错,但好在这些问题都可以修正。”ConvertKit 基础架构工程师 Kris Hamoud 表示。


2021 年,ConvertKit 在 AWS 上一共花了 106 万 5754.35 美元,跟 2020 年比增长了 12.5%,占去年全年净收入的 3.9%。从 1 月到 12 月,ConvertKit 的 EC2 实例支出增长达 96%,主要原因是其扩展了 Cassandra 与 Elasticsearch 集群。


另外,ConvertKit 还投资建立了数据管道,并着手把客户从 FanBridge 迁移到 ConvertKit。虽然 EC2 实例增加了 96%,但其他 EC2 支出却只增长了 49.5%,这主要得益于更高的区域数据传输效率。最后,通过提升 CDN 使用率并优化备份流程,ConvertKit 将 S3 成本降低了 33%。



ConverKit 在 AWS 上的各项支出占比


“尽量提高效率,把好钢用在刀刃上”已经成为 ConvertKit 维持收入平衡、保障业务正常运转的核心指导思想。


钱都花哪里了?


从 1 月到 12 月,ConvertKit 的月度账单总额增长了 44%,主要原因是 EC2 实例和 Redshift 支出的提升。ConvertKit 需要在主 MySQL 服务器上执行强制维护,所以 11 月和 12 月的关系数据库服务支出也出现了一波上扬。更多细节,稍后会具体讨论。


9 月份的支出比整个 8 月要低出 36%,也比 10 月低了 38%。之所以成本下降,是因为 ConvertKit 跟 AWS 协商换得了不少抵扣积分。



“EC2 实例”花费约 34.8 万美元


去年 1 到 12 月,ConvertKit 的 EC2 支出共增加达 96%。其中涨幅最大的部分(18.3%)发生在 11 月(38636.86 美元)和 12 月(45730.12 美元)。这波飙升主要有以下几个原因。


首先,黑色星期五和网络星期一两大购物季让年末双月成为巅峰时段。ConvertKit 在黑色星期五内共发送 8510 万封邮件,网络星期一则为 9390 万封邮件。ConvertKit 因此增加了基础设施容量,以确保用户、待命工程师和支持人员都能安然度过这个假期。


其次,CovertKit 于 2021 年 4 月收购了 Fanbridge,并在下半年加快了相应的迁移过程。业务量的增加必然消耗更多资源。再者,ConvertKit 上调了多区域 Cassandra 集群与 Elasticsearch 集群的容量。


最后,ConvertKit 的很多计算类资源节约计划(Savings Plan For Compute Usage)其实 12 月就到期了,直到今年 1 月才重新续上。如果好好把握,成本应该会更低一些。



“关系数据库服务”花费约 24.2 万美元


ConvertKit 的关系数据库服务(RDS)账单可以算是“平地一声雷”。在前 11 个月,月平均支出仅为 19155.60 美元,跟 2019 年 8 月以来的各月份基本保持一致,但到了 12 月开销陡然上扬。



那么,12 月份究竟发生了什么?


11 月下旬,AWS 方面通知 ConvertKit 出于安全原因,需要进行一波强制操作系统更新,更新工作必须在 2022 年 1 月之前完成,否则 AWS 就要自动执行。


保障安全当然重要,但保障正常运行时、数据完整性和稳定性也同样重要。ConvertKit 拥有一套 9 TB 以上的 MySQL 数据库,而其中提供的默认维护选项在可预测性和可靠性方面都不太好。因此,ConvertKit 决定创建一个全新 MySQL 服务器,并将操作系统更新以只读副本的形式安装。之后,ConvertKit 在空闲时段把只读副本提升成主副本,这样就能把停机时间控制到最短。


由于 RDS 会将数据延迟加载到只读副本中,所以 ConvertKit 得在 12 月初就启动这个副本,给它时间慢慢与主节点同步起来。换句话说,整个 12 月份 ConvertKit 同时运行着两倍大小的 RDS 实例,成本自然也就翻了一番。


“事实证明,我们的努力完全值得。12 月 28 日凌晨 1 点(EST)我们完成了数据库更替,整个过程耗时约 30 分钟而且一切顺利。”Hamoud 表示。


“EC2 其他”花费约 14.7 万美元


大部分 EC2 其他成本来自数据传输。前文已经提到,第四季度整个基础设施的运行强度都比前三个季度要大一些。再加上 ConvertKit 在此期间组织了一次 Fanbridge 迁移,所以年底的支出肯定要比年初高得多。


ConvertKit 还用到了 AWS 托管的 NAT 网关。在 Hamoud 看来,这项服务价格不菲,但也确实很可靠,成本占 2021 年全年 AWS 开销的 3.5%(36829.50 美元)。“对于我们这种要靠一个团队支持两大项目的用户来说,花点钱换可靠性、换安心还是划算的。”



“计算类资源节约计划”花费约 9.7 万美元


2021 年,ConvertKit 通过购买节约计算省下了 35384 美元。从图表上看,月度开支呈现出下降趋势,这是因为 ConvertKit 购买了多项节约计划,而且都是在年内到期。这方面开支的下降,对应的就是 EC2 实例支出的上升,其中最大的问题出在 12 月。


“所以大家千万别忘了续订节约计划,否则浪费掉的可是真金白银。”Hamoud 建议道。另外,因为拿到了不少积分,所以 ConvertKit 整个 9 月份的节约计划一分钱都没花。



“S3 存储”花费约 7.4 万美元


2020 年底,ConvertKit 改进了备份流程,让 S3 账单降低了 47%。之后,ConvertKit 支出逐渐增加,是因为其产品使用量迎来了预期增长。ConvertKit 在电子邮件附件、登录页面、商务、备份及应用程序的各个位置都会用到 S3 存储。


“S3 开销的增加其实是件好事,代表使用我们产品的用户群体有所增长。”Hamoud 表示。



“支持”花费约 6.5 万美元


支持成本同样是跟着使用量来走的。由于 ConvertKit 的 AWS 总体成本开始逐月增加,所以在支持方面花的钱自然更多。其中的例外同样出现在 9 月份,原因也是前边提到的:积分兑换。



“EC2-ELB”花费约 3.7 万美元


ConvertKit 的 ELB 成本在 1 月到 12 月之间增长了 12.5%。考虑到 ConvertKit 在 2021 年的月度经常性收入(MRR)增长了 12.8%,这部分新增账户肯定形成了新的收入来源,但同时也会给连接和传输带宽带来额外的负载均衡成本。


ConvertKit 主要在 Web 应用程序中使用 ELB。随着服务用户数量的增长,Hamoud 预计这部分成本也将继续水涨船高。



“Redshift”花费约 2.1 万美元


多年以来,ConvertKit 的分析团队一直使用 Redshift。但 ConvertKit 2021 年在数据和分析管道上投入的资金确实创下了历史新高。


改进数据流意味着在 2021 年开始摄取更多数据并转而使用更强大的配套硬件。ConvertKit 在 7 月和 8 月完成了对旧 Redshift 集群的迁移。在此次迁移期间,ConvertKit 同时运行着两套 Redshift 集群,所以 8 月份内出现了一波成本峰值。



“其他成本”花费约 3.2 万美元


3 月到 5 月之间,ConvertKit 引入了由 AWS 提供的 Apache Kafka 托管流(Managed Streaming for Apache Kafka)服务。ConvertKit 之前在某个项目里用过 Kafka,但后来又因为发展方向的变化而选择放弃。如果要继续使用该项目,那么 Kafka 集群的月度托管成本约在 1100 美元左右。


除此之外,其他 AWS 开销都基本保持稳定、没什么大的波动。



云使用不当便是“杀器”


越来越多的企业应用迁移到云原生架构上,但如果不把云成本控制当回事儿,原本天然具备降本增效特点的云原生架构也会引起大量云上资源闲置、云支出浪费。


比如,2020 年 3 月,新冠疫情的全面爆发使得云的使用量迅速增加,初创公司 Milkie Way 便是其中之一。因为团队规模很小,Milkie Way 关注的重点就放在编写代码、设计 UI 以及准备产品身上,根本没在云管理上花多少心思。


因此, Milkie Way 在对 Firebase 和 Cloud Run 进行内部测试的期间,一不小心在几个小时里就烧掉了 72000 美元(约 47 万人民币),这差点导致这个创业公司破产。幸运的是,经过一系列咨询、讨论与内部研究后,谷歌免除了该笔账单。该事件后,Milkie Way 花了几个月时间学习云架构和研究自己的业务体系。


更多详情可以查看:应用上云 2 小时烧掉近 50 万,创始人:差点破产,简直噩梦


2021 年 CNCF《FinOps Kubernetes Report》调研报告显示,迁移至 Kubernetes 平台后,68% 的受访者表示所在企业计算资源成本有所增加,36% 的受访者表示成本飙升超过 20%,这都说明即使是资源利用率更高的云原生架构也需要合理的资源成本管理。


像 ConvertKit 这样了解自己的账单只是第一步。星汉未来联合创始人 &CPO 胡忠想在此前的文章中在优化云成本方面提出了四点建议,不同企业可以根据自己现阶段情况有条件地加以选择:


  • 做到成本可观测。通过建立资源利用率指标和每日对账机制,让企业各部门对成本的认识及管理能力保持一致。

  • 公有云物尽其用。企业由于对云产品了解不够、对云成本认识不足,引入公有云从而导致业务复杂度提升、相应成本提高。企业可以通过定时扩缩容和机型降配两种手段,充分利用公有云的弹性和退改灵活性,直接有效降低公有云的使用成本。

  • 充分利用弹性与共享。企业可以利用 Kubernetes 切割现有资源并以固定 IP 形式交付资源,并对流量模型进行抽象,结合具体业务建立自动扩缩容和错峰调度等。

  • 异地部署、混合编排和在离线整合。这些方式需要从企业整体层面考虑,通常不是一个部门能解决的。企业内部可以公司名义成立专项来实施,先从小业务入手,待验证平台功能完善后,再考虑逐步把核心业务迁移到平台,最终达到优化企业整体资源利用率的目的。


更多详情可以查看:来自一线大厂的云原生成本优化实践指南


降低云成本会对企业利润产生重大影响。Zoom 公司在 2021 年一季度的财报中称,其毛利率从前一季度的 69.4% 上升至 73.9%,这主要是由于在公共云资源的优化上下了很大功夫。Spotify 自研追踪云计算开支的工具,同时鼓励工程师们掌握云计算支出的所有权,使其每年节省了几百万美元的云计算开支。


显然,企业在云计算成本优化上下一番功夫是很值得的。


了解更多:


https://convertkit.engineering/2022/04/22/aws-2021-year-in-review/


好文推荐


程序员的自白:我如何让失败项目起死回生,变成价值 270亿美元的应用程序?


保卫腾讯云,专访云鼎实验室董志强(Killer)团队 | 卓越技术团队访谈录


GitHub热榜项目“程序员延寿指南”一周获上万Star;快手前副总裁巨额受贿案宣判;小红书辟谣大裁员:正常人员汰换 | Q资讯


五年官司终败诉,万亿爬虫大军蠢蠢欲动


2022-04-27 14:502439

评论

发布
暂无评论
发现更多内容

字节跳动数据质量动态探查及相关前端实现

字节跳动数据平台

字节跳动 数据监控 数据探查

李宏毅《机器学习》丨2. Regression(回归)

AXYZdong

机器学习 7月月更

不是我说,Nacos和Apollo中的长轮询定时机制,真的太好用了

Java全栈架构师

Java 程序员 面试 微服务 nacos

算法题每日一练---第1天:猴子分香蕉

知心宝贝

算法 前端 后端 云开发 7月月更

不吹不黑JAVA Stream的collect用法与原理,远比你想象的更强大

程序员小毕

Java 程序员 程序人生 stream collect

Mria+RLOG新架构下的EMQX 5.0如何实现1亿MQTT连接

EMQ映云科技

物联网 IoT mnesia emqx 7月月更

易观千帆银行用户体验中心成立,助力银行业用户体验升级

易观分析

银行 用户体验

值得一看的智能运维AIOps关键核心技术概览!

云智慧AIOps社区

人工智能 机器学习 运维 智能运维 自动化运维

Redis 持久化 - RDB 源码详细分析|保姆级别分析!全网最全

领创集团Advance Intelligence Group

持久化 rdb redis 底层原理

不同学习方式的web前端程序员有什么区别

小谷哥

软件研发落地实践,要从设计就开始

华为云开发者联盟

云计算 后端 开发

动手实践丨手把手教你用STM32做一个智能鱼缸

华为云开发者联盟

物联网 IoT

万物皆可Cassandra:HUAWEI Tag背后的神仙数据库

华为云开发者联盟

数据库 后端

Vue3:显示markdown文档

空城机

markdown Vue3 7月月更

Kafka Topic Partition Offset 这一长串都是啥?

华为云开发者联盟

后端 华为云

字节跳动CVPR 2022多项目夺魁,获模拟人脑感知、长视频理解挑战双料冠军

字节跳动视频云技术团队

计算机视觉 图像处理 图片处理 视频理解 视频云

快速构建企业级应用的开发平台

力软低代码开发平台

模块七

Geek_2ce415

四个简单例子教你通过用户行为记录提高用户体验

观测云

深入揭秘 epoll 是如何实现 IO 多路复用的

C++后台开发

网络编程 epoll IO多路复用 C++后台开发 C++开发

通过 MSE 实现基于Apache APISIX的全链路灰度

阿里巴巴云原生

Apache 阿里云 微服务 云原生 灰度发布

面试官:你确定Redis是单线程的进程吗?

Java永远的神

Java redis 程序员 架构 面试

2022年5月视频用户洞察:用户使用时长增长 平台降本增效初见成效

易观分析

视频行业

怎么学自动化测试

和牛

测试

软件研发团队如何管理成员工时,科学分配资源?

万事ONES

web前端技术学习完后怎么找工作呢

小谷哥

Verilog HDL

贾献华

7月月更

vueCli3.x版本中如何修改打包好的css、js、img文件名

木叶🐱

7月月更

如何使用IDEA数据库工具连接TDengine?

TDengine

数据库 tdengine 时序数据库

WhaleDI消息队列稳定性提升实践

鲸品堂

中间件

零基础小白该如何选择web前端课程呢

小谷哥

上云一年烧掉超过100万美元,我们的钱都去哪儿了?_文化 & 方法_核子可乐_InfoQ精选文章