当前,云计算提供商已经提供了从开发者体验到硬件的端到端解决方案:假如云计算提供商把精力集中在最底层,而其他(纯软件)提供商专注于上面的一层,又会如何呢?我对云计算提供商(AWS、Azure、GCP)有这样以下预测:云计算提供商将越来越多地关注堆栈中的最底层;基本上就是通过 API 来租用其数据中心的容量,其他纯软件提供商会在它上面构建数据库、运行代码等。五年后,你们可以来打我的脸。但是我认为 Redshift 的故事很好地解释了这些观点。云计算的发展在 Redshift 诞生之前,Teradata 是这个市场的主要参与者 ,曾推出了 On-prem 。当时的初创公司拒绝 SQL,而使用 Hadoop SQL 也显得有点笨拙。Redshift 是 AWS 提供的数据仓库(也称为 OLAP 数据库)。数据库管理系统提供商 ParAccel,通过 AWS 获得技术授权,在 2012 年推出了 Redshift。Redshift 是当时第一个运行在云端的数据仓库。Redshift 立即降低了小型公司进行数据分析的门槛。企业不必自己建立任何基础设施或者整天编写自定义的 MapReduce、重新加载 jobtracker。反而,企业可以在 AWS 中启动一个 Redshift 集群,为其提供大量的数据,然后再正常运行。同样在 2012 年,我在偶然与 Snowflake 创始人共进午餐,第二天就获得了一个工作机会。当时的 Snowflake 还很小,但现在它已经是一家上市公司,市值超过 1000 亿美元。总体来说,Snowflake 的产品与 Redshift 类似。不过,Snowflake 和 Redshift 在架构上有一大差异。 Snowflake 很早就做了完全解耦。AWS 于 2016 年推出了基于 Presto 的 Athena,在 2017 年推出了 Redshift Spectrum,用户可以通过 Redshift 查询 S3 中的数据。Redshift 现在才发布无服务器产品,但他们可能早就该如此。Redshift 刚发布时确实带来了很多好处。AWS 具有庞大的规模经济,能够控制底层资源(EC2),并为构建软件做出更大的投资,他们甚至对 RedShift 开发进行补贴。8 年后,事情发生了一些变化。Snowflake 的发展已经超过了 Redshift。是什么力量支持着像 Snowflake 这样公司的发展?这对其他云产品意味着什么?有人认为,最底层的云服务就是纯粹的商品服务。所以,为了盈利至少需要做到以下一项:在堆栈的高层赚钱。在堆栈中使用较高的服务来锁定客户,再从堆栈的底层赚钱。从历史的角度来看,这些都有道理。但是,一些有趣的事情正在朝向另一个方向发展:“头部软件”的竞争变得异常激烈。很多的创业公司在风投推动下追逐热点,并且愿意投入数十亿美元用于软件开发。云计算提供商可能很乐意仅从最底层赚钱。利润率并不会那么糟糕,而且提供商的锁定度仍然相当高。初创公司纷纷涌入云计算从未有如此之多的公司寻求云计算服务:这期间发生了什么呢?我认为至少有三种不同的因素:大公司的激励机制往往抑制了新想法的出现。与此同时,风险投资公司正将资金投入到该领域。假如你是个有抱负的人,你是去 AWS 工作,还是加入早期的初创公司,抑或自己创业?创新有望从大公司向初创公司转移。一家软件提供商可以同时为所有的云计算提供商开发。对于 Snowflake,我认为这确实是个好消息,因为早期客户很关心多云。Snowflake 也扩大了市场规模,甚至超过了任何云计算提供商。许多成功的云产品开始于内部服务。亚马逊、谷歌和微软等已经做了榜样,他们在内部大规模测试后发现,这些工具非常适合其大型企业客户。但另一方面,由于过于注重规模、可靠性和可配置性,开发者的体验已成为攻击媒介,尤其中端市场和小型企业可能更关心提高开发者的工作效率。Uber、Netflix 和 Airbnb 等规模稍大的公司都有团队离职后,将内部工具商业化(通常是通过开源的中间步骤)。这些工具主观上更倾向于关注开发者的体验。云计算提供商们怎么盈利据报道,EC2 的利润率在 50% 左右,而 AWS 整体利润率在 60% 左右。这意味着,如果一个客户每年要在 Redshift 上花费 100 万美元,AWS 在付清 EC2 的运营成本和折旧费用之后的毛利润约为 50~70 万美元。但是,如果该客户将 100 万美元/年的预算给了 Snowflake,那么最终会有约 40 万美元回转到 AWS,因此 AWS 的毛利润大约是 20 万美元。这似乎对 AWS 有点不好?这个还不能确定。根据财报,Snowflake 预计 2022 年的研发成本将占公司收入的 20%,销售和营销成本则是 48%。那么,以 100 万美元的收入来计算,Snowflake 的成本是 70 万美元。但也许 AWS 创造同样的收入只需要 30~40 万美元的成本。这样似乎是合理的。现在我想通了。AWS 面临着同样的情况,但是实际上却将构建和销售软件的所有成本“转嫁”给了 Snowflake 等企业。这对他们来说是一笔不错的交易。AWS 建立软件服务的另一个原因是可以增加用户粘性。Redshift 本身或许并不是一棵摇钱树,但它减少了 EC2 上的流失率。作为 CTO,我已经做云迁移的六年中,我没有考虑过这个问题。与大多数公司一样,我的公司在工程师薪水上的花费比云计算本身要多得多。将宝贵的时间用在云计算迁移上是不值得的,除非云计算开支成为毛利的重要组成部分,而这只有少数公司可以做到。企业不能随便选择一个云计算提供商买下最便宜的数据库,然后在上面运行。企业希望在相同的云计算提供商和同一个数据中心中运行。Snowflake、Confluent 和 MongoDB(Atlas)的注册流程中问了两个问题:1. 你的云计算提供商是哪家?2. 在哪个地区?请注意,第一个问题的选项只有 AWS、GCP 和 Azure。云迁移可能带来的另一个问题:企业能省多少钱?我认为,价格战从来都不重要,因为没人愿意开打。处在相当稳定的寡头垄断地位很舒适,如果我是云计算提供商,也不会去改变现状。2030 年的云计算转向云计算的历程,我们已经走了大约 10 年。虽然我们构建软件的方式已经有所改变,但我认为现在仍处于起步阶段。重大变革通常分两个阶段发生。当一些新技术出现时,人们会用最简单的方法来使用,让它们保留现有世界的概念模型。当我们开始重新审视消费模式时,真正的转变才会发生,因为新世界为创造价值开辟了道路。比如,苹果公司开始在网上销售音乐时,我们消费音乐的方式并未发生重大变化。但在像 Spotify 这样的提供商意识到所有权不再重要的时候,真正的改变发生了。从这个角度来看,过去的 10~15 年看起来有点像一种愚蠢的“提升和转移”。我们只是把计算机放在云端,这远远不够。我们可以把注意力集中在构建应用程序代码上,而不是担心底层的基础设施。大多数开发者都不与云计算提供商进行交互,这一点我并不会感到意外。另外一个令人兴奋的领域是事务型数据库。但我认为即将到来的最大变化是,软件提供商将会越来越多地运行客户代码。这个想法不新颖——2007 年 Heroku 发布,2014 年 AWS Lambda 发布。Kubernetes 在过去的几年中一直很有意思,这仍然是一种必然的趋势:走向一个完全“无服务器”的世界。现在,云端中的计算机利用率低得离谱,我猜测 CPU 平均利用率大概只有 10%。有一种观点认为云计算提供商需要在云上运行软件,他们必须自己使用才能推进云的采用。不过,他们已经有了一堆内部的东西可以交付。市场成熟后,他们可以讲精力集中在自己优势最大的领域。一些预测云计算市场的收入将增长到每年 10000 亿美元。这几乎完全没有争议。大多数工程师并不直接与云计算提供商进行交互,而是通过这些提供商提供的服务进行交互。数据库市场(OLAP,OLTP,任何你能想到的)将由云计算提供上主导,并且在底层完全抽象。将有一些惊人的方式来解决目前阻碍无服务器解决方案的开发者体验问题。初创公司和云计算提供商之间会有很多合作。云计算提供商可能会让出一个领域,并试图成为初创公司的首选合作伙伴。Kubernetes 只会被人们喜爱五年,正如 Hadoop 在 2009~2013 年一样,但世界仍将继续前进。云计算中的资源利用率将会大大提高,工程师们在资源分配和配置上所花费的时间会减少一个数量级。IBM 最终放弃“混合多云”。YAML 会成为那些老去的开发者们酒桌上的话题。这个话题开始时,也意味着聚会该结束了。作者介绍:Erik Bernhardsson,Better 公司的前任首席技术官,目前正致力于数据领域的创业。编写过很多代码,如开源项目 Luigi 和 Anyy。