上云上的差点破产是什么体验?
前言
2020年,很多小的初创公司因为疫情的原因,纷纷倒闭关门,哪怕是勉强支撑的也大多是一蹶不振濒临破产。
有一家名为Milkie Way的美国小公司,没有因为疫情受到影响,本该是大展宏图之际,却差点被自己坑的申请破产,这到底是怎么一回事呢?我们一起来看下吧。
这家Milkie Way是一个仅仅拥有8人团队的初创公司,创始人Sudeep Chauhan曾在谷歌工作,他们公司的作品https://announce.today 服务是一款类似于自动发布各种警告信息,包括地震、海啸、各类事件、各类新闻的安全通知平台,随着疫情的发展,线上发布各种公告也让他们看到了大展拳脚的最佳时机。但是没想到的是因为内部测试期间的一些小疏忽,他们收到的是一纸 72000 美元(约 47 万人民币)的天价账单!
为了能更好的服务于疫情期间,Milkie Way原本准备开发一个 Announce-AI 项目,旨在自动发布由 AI 创建的上述各类安全内容。为了开发 Announce-AI,他们决定使用 Cloud Functions(谷歌发布的无服务器平台),但是很快他们遇到一个问题,Cloud Functions 的超时时间长达 9 分钟,无法满足他们的使用需要,于是他们转而开始研究Cloud Run(谷歌发布的另一款无服务器服务)。
虽然当时团队中的成员都对Cloud Run不太了解,但是码农的特质就是在探索中不断学习,所以他们也没觉得有什么不妥。同时因为 Cloud Run 不提供任何存储功能,他们使用了 Firebase 作为数据库。(因为站点规模很小,完全用不上 SQL Server 或者任何其他成熟的商业数据库)
Sudeep Chauhan还非常小心的对这个GCP项目设置了 7 美元的云资源使用预算,很多小伙伴看到这里肯定会想,那这个项目最多也就是用光这7美元的预算咯,Sudeep Chauhan当时肯定也是这样想的。
部署完成之后他们就开始了一些常规的测试,并保持程序运行,到了第二天,噩梦开启!
首先,Sudeep Chauhan收到了一封关于Firebase自动升级的邮件,然后马上又收到了7美元预算超支的邮件,当时他倒是没有怎么紧张,因为他的信用卡设置了100美元的消费限额。但是当他登录Google Cloud Billing之后,看到了一张价值5k美元的账单,瞬间脑海中一片空白。
不难想象,如果我在起床刷牙的时候看到我500额度的信用卡刷了一个几万的账单出来,我也会当场晕倒。当时的Sudeep Chauhan一脸懵逼,真就像电影里拍摄的一样,一方面他是完全不知道哪里在产生费用,一方面这个费用还在不停的增长,5 分钟之后,账单数额增长到了 15000 美元;20 分钟后,数额增长至 25000 美元;2 个小时后,数额最终定格在 72000 美元。 是不是很夸张?
最后一筹莫展的Sudeep Chauhan和他的小伙伴只能关闭所有的服务用来停止账单的增长。
第二天Sudeep Chauhan还联系了许多律师事务所,甚至没有一家事务所肯受理他的预约,不过也难怪,连他自己都没搞明白这件事的来龙去脉。
最后经过他们彻夜不眠的调查,终于发现事件的因果:
首先,Firebase 在提示条款中没有提及会自动升级的情况下自动升了级
然后,谷歌的账单结算有着一天的延迟,导致他们一天后才发现账单已经欠下巨款
再者,谷歌无视信用卡100美元的设置,导致天价账单的产生
最后,关键的关键,就是为了解决Cloud Run 中的超时问题,使用了 POST 请求(将 URL 作为数据)将作业发送至某一实例,且并发使用多个实例以替代串行使用单一实例。这样 Cloud Run 中的每个实例只会抓取一个页面,所以永远不会超时。这样做的隐患就是:
1、不中断的指数递归:由于没有 break 语句,因此实例不知道该何时中断。
2、POST 请求可以具有相同的 URL。Cloud Run 服务将陷入无限递归当中;而最糟糕的是,这个递归将呈指数增长
从最后的数据来看,这套部署在 Cloud Run 的“Hello World”版本一共执行了 1160 亿次读取与 3300 万次写入!
1160 亿次!
所以按照Firebase 上的读取操作成本:
(0.06 美元 / 100,000) * 116,000,000,000 = 69,600 美元!无怪乎那么贵了
从这个事情我们可以看到,云服务上部署了一个错误的算法,在完全不了解的情况下使用了Firebase,最终导致了天价账单的产生,所以一般常识里面的一边学习一边开发,其实是很危险的一个行为。
尤其是在云平台上进行一些不确定的开发测试,云平台像是一把双刃剑。如果使用得当,它确实威力巨大;但如果使用不当,后果也将极为严重。Firebase 也不像是能够直接学习的编程语言,它是谷歌提供的一项容器化平台服务,其中使用的是大量预定义规则。
也千万不要因为设置了某些消费上限而掉以轻心,无论什么时候,一定要严谨的对待自己的每一段代码每一个程序,清楚自己的程序做了什么产生了什么,尤其是那些容易在后台持续运行的进程。
后记
不幸中的万幸,谷歌在收到Milkie Way的完整事件反馈后,还是免除了这笔天价账单,Milkie Way也避免了公司破产的厄运,当然凡事也不会每次都那么幸运,Milkie Way的成员深知这个道理,在那之后花了几个月时间学习云架构和他们自己的业务体系,避免类似问题再次出现。
所以,无论什么时候,没有投机取巧,没有捷径,只有不断刻苦钻研避免问题发生才是王道。
题外话,如果你觉得谷歌换成了国内的那些巨头,会免了这个账单吗?
喜欢本文的朋友,欢迎点击下方卡片
关注我,订阅更多精彩内容
往期推荐
一个员工的离职,背后都意味着什么?
彻底解决 gcr、quay、DockerHub 镜像下载难题!
OpenAPI 规范 3.1.0 发布,赶紧来尝尝鲜!
合格的后端Coder都应该写好UT和Mock测试
Spring Boot 2.4.3、2.3.9 版本发布,你准备好了吗?
“智能”坐垫记录离座时间,是高科技福利还是又一个员工压榨机器?
上云上的差点破产是什么体验?相关推荐
- 【观察】解读浪潮云遇上“云上云” 技术赋能驱动数字经济落地
毫无疑问,对于今天的中国,云计算已经成为了一种最基础的能力. 尤其是近几年国家先后发布<互联网+行动计划>.<云计算发展行动计划>等一系列政策,加上此前不久浙江.江苏.济南等地 ...
- 上云实践操作(漫步云端)之上云动力
上云之前 在选择使用阿里云之前,整个技术部门采用的是自购服务器+机房托管的方式来部署所需要的程序.并且考虑到不同区域的业务以及灾备的问题,一共在南北两个城市的IDC机房都部署有服务器来支撑日常业务的运 ...
- 深度!推动“企业上云”光有补贴不够,还要看这5点
作者 | 中国软件网 李翘 校对 | 中国软件网 王锦宝 一个月前,阿里巴巴集团发布2021财年第二季度业绩:截至2020年9月30日,云计算业务营收为22.3亿美元,较同年同期的14.0亿美元增长6 ...
- 企业混合多云“芯”体验,上云、用数、赋智“组合拳”
导读:前不久,发改委和中央网信办联合发文<关于推进"上云用数赋智"行动 培育新经济发展实施方案>,其中"上云"."用数".&qu ...
- 上云 企业 过程_企业上云有什么好处?该怎么上云?附操作步骤
"工业互联网"作为新基建的细分领域之一,不仅被市场广泛关注,更在高层中被着重点名.先有国务院常务会议指出,发展数字经济新业态,依托工业互联网促进传统产业加快上线上云.后有工业和信息 ...
- DNSPod十问巩书凯:制造业小工厂上云是个伪需求吗?
问答时间:2021年8月18日 嘉宾简介: 巩书凯,重庆忽米网络科技有限公司CEO,任天津市政协委员.天津市红桥区团委副书记.红桥区人大代表.入选创业邦"2017年30位30岁以下创业新贵& ...
- 携手阿里 “云上贵州”再发力
--7+N云工程观摩汇报会暨阿里云开发者大会西南峰会将在贵阳召开 本文讲的是携手阿里 "云上贵州"再发力,12月11日消息,贵州联合阿里巴巴将于本月20日-22日在贵阳联合举办&q ...
- 系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术
文/龙蜥社区高性能网络SIG 引言 Shared Memory Communication over RDMA (SMC-R) 是一种基于 RDMA 技术.兼容 socket 接口的内核网络协议,由 ...
- 看完你就懂了,企业上云为什么大势所趋...
随着云计算产业的发展,云计算概念的普及和人们对云计算技术认知的加深,企业客户开始对云计算服务有了更多的要求,致使越来越多的传统企业开始转型.所以上云也就成为现在很多企业的刚需. 而当今互联网流行词是& ...
最新文章
- mysql数据类型分析_MYSQL数据类型分析整理
- 常用七大经典排序算法总结(C语言描述)
- 在Bootstrap开发框架中使用bootstrap-datepicker插件
- ubuntu linux本地源,如何制作UbuntuLinux操作系统的本地源?
- java三个数比大小_三个数的比较 不同的实现方法java
- Make.am中生成.la动态库的同时要链接.a静态库的问题
- 【批处理学习笔记】第二十二课:系统变量
- python控制风扇_如何使用Python在raspberrypi3上使用GPIO控制风扇?
- ensp动态路由ospf基础配置
- 3D STL文件解析
- SignalR 循序渐进
- cms32L051 掉电深度睡眠的唤醒
- 计算机技术与环境,大学计算机基础:Windows 7与Office 2010环境
- 计算机键盘上clr是什么意思,CLR是什么意思
- LeetCode 213. House Robber II(小偷游戏)
- 网络切片使能千行百业,助5G无所不能,5G网络切片“切”的是什么?
- 基于SCA(tuscany)的SOA实践之一(发布服务是如此的简单)
- 硬件SPI控制ST7789V
- java学习四个月以来的想法
- Gradle的卖家秀和买家秀