全面上云时代,一股“下云”风潮悄然涌现。作为“下云”的忠实拥护者,Ruby on Rails 的作者 DAVID HEINEMEIER HANSSON(DHH)早在一年多以前就宣布自家的公司开始采取下云操作,经过购买大量的服务器硬件产品,其摆脱了 Google 和 AWS 等云服务。并在今年 6 月,正式宣布事情已完成,公司的产品已经离开了云端,甚至还预估未来五年可以节省 700 万美元。
那么他到底是如何做到的?近日,针对社交平台上网友频繁提出的 14 个问题,他进行了汇总回答。
就在一年多以前,DHH 高调宣布其所创立的 37Signals 公司产品 Basecamp 和 HEY 服务开始全面下云。其中,作为一款软件即服务的产品,Basecamp 是 Web 端项目管理和团队协作平台,用户群来自五大洲 166 个国家的大大小小的企业,超 75,000 个组织在使用,已在云上运行十多年。全功能电子邮件服务 HEY 自 3 年前推出,就一直跑在云端。
前情:2022 年一年上云“烧掉”了 320 万美元
之所以在上云多年之后做出这样的决策,是因为 DHH 发现:
租用云计算服务对于稳定增长的中型公司来说,(大多数时候)是一笔不划算的交易。在降低复杂性方面承诺的节省从未实现。因此,我们正在制定计划离开。
与此同时,DHH 还对自己公司在 2022 年云上的开销算了一笔账。DHH 在博客的一篇文章中介绍道,自己公司并非所有应用程序都在云中运行。截至 2022 年,公司最大的应用程序 Basecamp,以及较早的 Basecamp 2,几乎完全在其自己的服务器上运行,包括应用程序、数据库和缓存服务器。仅有搜索(OpenSearch)、文件存储(S3)以及 CDN 服务(CloudFront)是由云端提供支持。
另一款产品 HEY 几乎完全在云中运行(除了某些电子邮件和图像处理服务在其自己的硬件上运行)。HEY 中使用了 AWS,包括通过 EKS 在 Kubernetes 集群上运行完整的 Rails 应用程序,通过 Aurora RDS 运行 MySQL 数据库服务器,通过 Elasticache 运行 Redis,并通过 OpenSearch 进行搜索。此外,37Signals 的其他传统应用程序也在 EKS 上运行,并使用 RDS 作为数据库。
总的来说,37Signals 在 2022 年为所有这些云服务花费了 3,201,564 美元,平均每月为 266,797 美元。
对于 HEY 来说,年度账单仅用于生产工作负载为 1,066,150 美元(每月 88,846 美元)。这个服务的支出主要分为以下几个大类:
就单服务而言,他们在 2022 年为所有应用程序数据库的 RDS 花费了 473,196 美元(每月39,433美元)。这些费用里面不包括 Basecamp 和Basecamp 2。因此,其中大部分是花在 HEY 应用上的,该服务占据了全年总额的 355,950 美元(或每月 29,662 美元),其余则用于其他旧版服务。
用来托管应用程序搜索集群和索引存储日志管道的 OpenSearch,在 2022 年花费了 519,959 美元(每月 43,330 美元)。这是 Basecamp 和 Basecamp 2 使用的云服务之一,大笔开支分别分布在 HEY 和 Basecamp Classic 上。
2022 年在亚马逊 Kubernetes 服务 EC2 和 EKS总共花费了 759,983 美元(每月 63,331 美元)。其中绝大部分用于 HEY 的生产和暂存环境,总计 272,359 美元(每月 22,696 美元),其余用于其他遗留应用程序。值得注意的是,这些支出都与当前的 Basecamp 或 Basecamp 2 无关。
对于 Elasticache 部分,2022 年花费了 123,852 美元(每月 10,321 美元)。其中最大部分再次由 HEY 所占据,通过使用该服务来获取基于 Redis 的缓存。
最后,在 S3 存储的 8 PB 文件上花费了 907,838 美元(每月 75,653 美元)的费用。值得一提的是,这个设置采用了双区域复制策略,目的是可以抵御整个 AWS 区域消失的风险,包括所有可用区。为了服务这些文件和其他静态资源,他们在 2022 年还花费了 66,742 美元(每月 5,562 美元)购买 CloudFront CDN 服务。
这就是他们 2022 年在云上所花费的巨额支出。
预估:未来五年节省 700 万美元
除了觉得上云实在是太贵了之外,DHH 还觉得应该摆脱第三方云服务商荒谬定价的束缚、遵循互联网最初自由的理念、不应该每隔几个月都要花费相当于购买新设备的费用来租用大型数据库和大容量 NVMe 存储....种种原因趋势之下,他决定做一次大胆的尝试。
就在 2022 年 10 月决定要下云的一个月后,DHH 订购了价值 60 万美元的戴尔服务器来支持下云动作,并经过计算保守估计未来五年可节省 700 万美元。
具体来看, DHH 解释道:
上文中提到 37Signals 于 2022 年在云上花费了 320 万美元。其中将近 100 万美元用于在 S3 中存储 8PB 的文件,完全在多个区域进行了复制。剩下的约 230 万美元用于其他一切:应用服务器、缓存服务器、数据库服务器、搜索服务器等等。
这是 37Signals 打算在 2023 年将云成本降至零的部分,并考虑在 2024 年退出 S3 中的 8PB 数据。
在经过深思熟虑、许多基准测试以及对 AMD 的新 Zen4 芯片与 Gen 4 NVMe 驱动速度考量之后,其打算向戴尔下订单,大约 60 万美元左右。
在云计算时代,花 60 万美元购买一堆硬件可能听起来很多。但如果在保守的五年内摊销,DHH 认为每年只需 12 万美元!
当然,这只是硬件的费用。它们还必须连接到电源和带宽。其目前通过 Deft 在两个数据中心之间每月花费大约 6 万美元来租用八个专用机架。然后,故意过度配置了空间,因此实际上只需要将所有这些新服务器放在现有机架中,而不需要更多的空间或电源。因此,支出仍然约为 72 万美元/年。
这总共是每年 84 万美元的费用。与云计算的 230 万美元相比,其将拥有更快速的硬件、更多的核心、极为便宜的 NVMe 存储,以及以非常低的成本扩展的空间(只要我们仍然可以放入每个数据中心的四个机架中)。
粗略地说,这可以让其每年节省 150 万美元。在此期间留出 50 万美元用于不可预见的费用,五年内仍然节省了 700 万美元!
今年 6 月,一切都完成了,DHH 称他们离开了云。
“如果说这次旅程充满争议,那还不算太夸张。数百万人通过 LinkedIn、X 和这个邮件列表阅读了我们的更新。我收到了数以千计的评论,有的要求澄清,有的人让提供反馈,还有人表达了对我们在其他人还在忙着追赶云浪潮时居然还有勇气继续前进的怀疑。
但事实胜于雄辩。我们不仅迅速完成了下云,客户也几乎没有察觉到任何变化,而且很快就开始节省开支。早在九月份,我们就已经节省了一百万美元的云账单。随着预留实例(提前预付一整年的费用以获得更优惠的价格)开始到期,账单也在不断缩水”,DHH 说道。
对 37Signals 公司而言,「下云」工作已经完成,DHH 的工作也算告一段落。不过,正如上文提及的,业界对下云操作和理念持有不少的疑问,与其一次又一次在社交平台上回答不同网友的相同提问,DHH 决定在自己博客上列了一个常见问题(FAQ)的清单,针对他经常被网友问及的十四个问题进行了统一的回答,也希望能帮助更多的人了解“下云”的奥秘。
以下为 FAQ 详细信息:
问题一:节省硬件成本的费用,难道不会被更大的团队薪资所消耗吗?
答:不会,因为在我们退出云之后,并没有改变团队的过程。在云中运营 HEY、Basecamp 和其他应用程序的仍然是同样的团队,他们现在是在我们自己的硬件上运营这些应用程序。
这是云营销的主要骗局,声称一切都会变得如此容易,以至于你几乎不需要任何人来操作它。然而,我从未见过这种情况,不管是在 37signals 还是在其他运行大型互联网应用程序的公司。云有一些优势,但通常不会减少运营人员数量。
问题二:为什么你不直接优化云账单,进而降低云成本呢?
答:我们列出了 2022 年上云花费的具体明细,这是在高度优化、每月仔细审查、严重讨价还价之后还需要 320 万美元,但更久之前的账单是这笔金额的两倍多。我们几乎“榨干了柠檬中的每一滴水”,而且这是一个需要不断重复的工作。
这也是为什么我如此看好中大型及以上软件公司进行“Cloud Exit”的原因之一。对于与我们拥有相同数量客户的企业来说,很容易在一个月里比我们当时价格还要高出 2-3 倍甚至 4 倍的金额。这意味着对大多数公司来说,下云后可以节约的成本可能会更高。
问题三:但如果你写了一个云原生应用程序该怎么办呢?
答:云原生经常被吹捧为利用云的真正方式,但这只是更多的云营销废话。它通常围绕一个错误的信念,即无服务器功能和相关的按需工具将使事情变得更便宜。但如果你需要一磅糖,单独包装的小方糖并不会省钱。
问题四:安全性呢?难道你不担心被黑吗?
答:通过在互联网上运行软件,你面临的大多数安全问题来自应用程序及其直接依赖关系。确保安全地保护你的定制应用程序所需进行的工作,在你拥有运行它的计算机还是从云服务提供商租用它们方面并没有本质的区别。
如果有的话,使用云中的服务可能会让人们产生一种虚假的安全感,以为这不是他们需要担心的事情,而实际上却是需要担心的。
然而,现代容器化应用程序交付的重要优势在于,你不再需要花费太多时间手动修补机器。大多数操作都被打包到 Docker 文件中,部署运行在更近期 Ubuntu 更新上的应用程序的新版本,无论你是在云中租用机器还是在自己的机器上运行,都是相同的。
问题五:不需要一个世界级的超级工程师团队来完成这项任务吗?
答:我从不逃避炫耀 37signals 团队的优秀成员,因为我对我们在这里组建的团队感到由衷的自豪。但要声称他们拥有一些特殊的魔法洞察,使他们能够操作我们自己的硬件,这显然是过于傲慢了。
互联网发展始于 1995 年,直到大约 2015 年,云成为行业的默认选择。因此,在二十多年的时间里,公司一直在操作硬件来运行他们的应用程序。这并不是一些已经失传的过时知识。我们可能不知道金字塔是如何建造的,但我们仍然知道如何将 Linux 机器连接到互联网。
此外,运行自己硬件所需的 90% 专业知识与在云中运行所需的知识是相同的,至少在达到我们这样的规模,拥有数百万用户和每月数十万美元账单的情况下是如此。
问题六:这是否意味着你要建立自己的数据中心?
答:除了超大型企业和谷歌、微软和 Meta 等少数几家巨型公司外,没有人在建设自己的数据中心。几乎所有人都只是在 Equinix 等专业数据中心运营商那里租用几个机柜、一个房间或一层楼。
因此,拥有自己的硬件并不意味着需要担心安全、电力输送、消防系统或任何其他细节,这些设施的创建成本可能高达数亿美元。
问题七:但是,架设和堆叠服务器以及拉网线呢?谁来做?
答:我们使用一家名为 Deft 的安全数据中心服务提供商。类似的公司还有很多。你付钱给他们,让他们拆开从戴尔或任何你购买的公司运来的箱子,直接送到数据中心,然后他们将服务器堆叠、上架,你就能看到 IP 地址上线了。就像云一样,即使不是即时的。
我们的运营团队基本上从不涉足数据中心。他们在世界各地远程工作。这种操作体验与云计算相比,更像互联网早期每个人自己布线时的体验。
问题八:可靠性如何?难道云计算不能帮你做到吗?
答:当我们在云中运行时,我们使用两个地理位置分散的区域,每个区域内都有大量冗余。现在我们离开云后也是这样做的。我们将自己的硬件托管在两个地理位置分散的数据中心,每个数据中心都能承载我们所需的全部负载,每个关键的基础设施都有副本。
可靠性在很大程度上取决于冗余。你应该能够随时失去任何一台计算机、任何一个组件,而不会出现问题。我们的云计算和我们自己的硬件都能做到这一点。
问题九:国际化业务如何保证性能?云不是更快吗?
答:我们之前的云设置在美国使用了两个不同的区域,然后又使用了一个遍布全球的本地边缘节点的 CDN 网络。随着我们退出云计算,我们依然做了同样的事情,就像可靠性一样。我们在美国使用两个数据中心,并使用国际 CDN 加快内容交付。
从根本上说,这是相同的等式。国际足迹的难点通常不在于确保数据中心的安全或设置硬件,而在于设计应用程序以处理多个主要数据库的编写、处理复制滞后问题,以及在全球互联网上快速运行应用程序所需的所有其他有趣的事情。
我们目前正计划在欧洲的一个数据中心进行 HEY 的前哨实验,我们正依靠 Deft 的朋友来建立这个数据中心。与所有硬件采购一样,硬件的交付时间确实比云计算要长。没有什么比云技术更适合 "我希望在日本有 10 台服务器上线",并在 30 秒后看到它实现了。这太神奇了。
但对于我们这种业务来说,要为这种即时启动支付高昂的溢价是不值得的。等待几周才能看到服务器上线是完全可以承受的。
问题十:你有没有考虑到以后更换服务器的成本?
答:有的,我们是按照服务器使用五年来计算的。这是保守估计。我们的服务器可以使用 7-8 年,而且运行良好。但五年通常是大多数人使用的时间间隔,这样便于进行财务比较。
但问题是我们花了 60 万美元购买了大量新服务器。我们已经用离开云计算后节省下来的资金还清了这笔投资!因此,如果明年有什么惊人的技术突破,我们想再买一大堆新东西,我们可以很容易地做到,而且在计算上仍然领先。
问题十一:隐私法规和 GDPR 如何?
答:在隐私法规和 GDPR 方面,云计算没有任何真正的优势。如果有的话,这是一个负面因素,因为所有主要的超级计算机都是美国的。因此,如果你在欧洲,并且从微软、亚马逊或谷歌购买云服务,你仍然需要面对以下事实:美国政府可以合法地迫使这些提供商交出数据和记录。
因此,如果严格遵守 GDPR 是你设立欧洲公司的关键所在,那么你最好拥有自己的硬件,并通过欧洲数据中心提供商运行。
问题十二:遇到突发需求怎么办?自动扩容又该怎么做?
答:购买属于自己的硬件最令人震惊的事情是,我们发现它变得如此便宜和强大。仅在过去的四五年中,进步就非常巨大。这也是云计算一年不如一年的原因之一。摩尔定律使你从戴尔等公司购买的产品价格不断下降,功能不断增强,但这对亚马逊和其他公司的云托管服务价格几乎没有任何影响。
这就是说,你有能力大幅超额配置自己的硬件,让你有足够的余量来应对峰值,而且这几乎不会对长期预算产生影响。
尽管如此,如果你经常面临比基线高 5-10 倍或更高的需求峰值,那么你可能确实是云计算的理想候选者。毕竟,这才是 AWS 背后的初衷。亚马逊在“黑色星期五”或“网络星期一”所需的性能远远超过他们在全年其他时间所需的性能。因此,灵活的硬件是有意义的。
但你也可以混合搭配。俗话说“买基线,租尖峰”。不过,许多公司甚至不需要为此费心。只需在增长曲线之前购买一些功能强大的机器,长期关注使用情况,如果必须进行计划外的扩展,通常一周左右就能有另外一整队服务器上线。
问题十三:你在服务合同和许可费上花了多少钱?
答:没有多少。在互联网上运行应用程序所需的一切一般都是开源的。我们在云上运行的所有程序都是开源版本。我们的 RDS 数据库变成了 MySQL 8。我们的 OpenSearch 变成了开源的 ElasticSearch。
有些公司可能确实喜欢服务合同带来的舒适感,有很多提供商可以提供服务合同。我们就断断续续使用过 Percona(这是一家为 MySQL、MariaDB、PostgreSQL、MongoDB 和 RocksDB 用户开发了许多开源软件项目的美国公司)为其 MySQL 专家提供的优质服务。不过,这不会从根本上改变基本等式。
虽然你必须避开最具商业化的机构。通常情况下,如果他们的客户名单上有银行或政府,你就应该另谋出路,除非你喜欢把钱放在火上烤。
问题十四:如果云计算真的这么昂贵,你为什么当初还要“上云”呢?
答:因为我们相信了市场营销。之前各种营销宣传的亮点均在于它将更便宜、更简单、更快速。事实上,只有最后一个承诺真正实现了。云技术可以快速配置整个服务器集群。但这并不是我们经常做的事情,所以不值得花大价钱。
我们花了多年时间试图从“规模经济”和“易用性”中节省开支,但却从未真正实现。托管服务仍然需要管理。摩尔定律带来的进步很少能作为节约成本的方式传递出去。
事后看来,我很庆幸我们确实对云进行了适当的尝试。我们学到了很多,也因此改进了我们的流程。但我确实希望我们能早几年做好计算。
来源:
https://world.hey.com/dhh/we-have-left-the-cloud-251760fb