DHH:退出云计算


就在一年多以前,我们宣布打算离开云计算。随后,我们分享了 2022 年 320 万美元的完整云预算,以及我们将构建自己的工具而不是支付价格过高的企业服务合同的事实。使命已定!

一个月后,我们订购了价值 60 万美元的戴尔服务器来承载我们的出口,并计算出未来五年保守估计可节省 700 万美元。我们还详细说明了除成本外,推动我们退出云计算的更大价值。比如独立性和对互联网最初精神的忠诚。

还是在二月份,我们宣布了我在几周内开发的新工具,它可以让我们从云中解脱出来--同时又不放弃容器的所有创新和云中的操作原则。这就是 Kamal 的介绍。

此后不久,我们出云所需的所有硬件都装在托盘上运抵我们两个地理位置分散的数据中心。全部 4000 个 vCPU、7680GB 内存和 384TB NVMe 存储!

然后,在 6 月份,一切都完成了。我们离开了云。

如果说这次旅程充满争议,那还不算太夸张。数百万人通过 LinkedIn、X 和这个邮件列表阅读了我们的更新。我收到了数以千计的评论,有的要求澄清,有的提供反馈,还有的对我们在别人还在忙着追赶 "扎格 "的时候就敢 "扎格 "表示难以置信。

但事实胜于雄辩。我们不仅迅速完成了云退出,客户也几乎没有察觉到任何变化,而且很快就开始节省开支。早在九月份,我们就已经节省了一百万美元的云账单。随着预留实例(提前预付一整年的费用以获得更优惠的价格)开始到期,账单也在不断缩水:

节省下来的硬件不会被更大的团队薪酬所吞噬吗?
不会,因为我们在退出云后并没有改变团队的构成。操作 HEY、Basecamp 和其他云应用程序的人员现在都在我们自己的硬件上运维操作它们。

这就是云计算营销的核心骗局:一切都会变得如此简单,几乎不需要任何人来操作。我从未见过。在 37signals 和其他运行大型互联网应用程序的人身上都没有看到过。云有一些优势,但通常不会减少运营人员。

为什么不优化云账单?
我们的云计算账单曾经是我们在 2022 年的 320 万美元账单中详细列出的经过高度优化、每月审查和大量讨价还价的账单的两倍。我们几乎榨干了那个柠檬的每一滴水,而这是大量的经常性工作。

这也是我如此看好中型及以上软件公司云计算退出概念的部分原因。在客户数量与我们相同的情况下,每月花费 2-3-4 倍于我们的成本是非常容易的。这对大多数人来说意味着更高的节约潜力。

但如果您编写的是云原生应用程序呢?
云原生(Cloud Native)与 "lift'n'shift "相对,经常被吹捧为利用云计算的真正方法,但这只是云计算营销的无稽之谈。它通常围绕着一个错误的信念:无服务器功能和相关的按需工具会让事情变得更便宜。但是,如果你需要一磅糖,购买单块包装的方糖是省不了钱的。我在《不要被无服务器所迷惑》和《连亚马逊都无法理解无服务器的微服务》中详细介绍了这一点。

安全性如何?你不担心被黑客攻击吗?
在互联网上运行软件所面临的大部分安全问题都来自应用程序及其直接依赖关系。无论您是拥有运行该软件的计算机,还是从云服务提供商那里租用计算机,为确保您定制的应用程序的安全而需要开展的工作都没有本质区别。

如果说在云中运行服务会给人们带来虚假的安全感的话。认为这不是他们需要担心的事情,而实际上这绝对是需要担心的。

不过,现代容器化应用交付的最大优势在于,你不再需要花费大量时间手动为机器打补丁。大部分补丁都打包在 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 专家提供的优质服务。这并不会从根本上改变基本等式。

不过,你必须避开最企业化的机构。通常情况下,如果他们的客户名单上有银行或政府,你就应该另谋出路,除非你喜欢把钱放在火上烤。

如果云计算如此昂贵,你为什么之前还要选用呢?
因为我们相信了市场营销。它将更便宜、更简单、更快速。只有最后一个承诺真正实现了。云技术可以快速配置整个服务器机群。但这并不是我们经常做的事,所以不值得花大价钱。

但我们花了多年时间试图从 "规模经济 "和 "易用性 "中节省开支,但却从未真正实现。托管服务仍然需要管理。摩尔定律带来的进步很少能作为节约成本的方式传递出去。

事后看来,我很庆幸我们确实对云进行了适当的尝试。我们学到了很多,也因此改进了我们的流程。但我确实希望我们能早几年做好计算。