供应商锁定:现在在云端!
供应商锁定已从企业基础设施转移到云端,但这一次许多人非常乐意接受它。
我的职业生涯始于一家小型办公室的通用“电脑技术员”。我在这份工作中身兼数职,包括桌面帮助台、服务器管理员、网站管理员、网络管理员、安全工程师,总而言之,如果它需要插电,那可能就是我的责任。那是在Linux开始在Web服务器市场取得一些进展的时代,而微软绝对统治着桌面和企业服务器市场。当时,任何规模从十人到一千人的办公室不仅会在桌面上运行Windows,而且后台也会运行Windows服务器,这都是理所当然的。
这些微软服务不一定比替代方案更好,但由于供应商锁定,它们最终胜出。桌面市场的统治地位意味着微软可以开发专有协议,如SMB(文件共享)和MAPI(电子邮件客户端同步),并将它们添加到Windows和Microsoft Office中。一旦SMB内置到Windows中,小型办公室的老板就可以轻松地将他或她的桌面变成办公室文件服务器,而无需添加任何额外的软件。随着公司的发展,该桌面被一台独立的Windows服务器所取代,当您发现您的ISP(您一直将其用于公司电子邮件)不支持您在Outlook中看到的共享日历功能时,您发现Exchange及其MAPI协议支持该功能。
便捷性如何导致锁定人们选择单一供应商解决方案通常不是因为它们更好,而是因为它们更方便。存在一种内在的假设,即如果您从同一供应商处购买两种产品,它们会比其中一种产品来自不同供应商时更好地协同工作。然而,当一切都来自同一供应商时,该供应商可以开发专有协议,这些协议具有专门针对其产品的特殊功能,竞争对手要么无法使用,要么必须支付高昂的许可费才能使用。除了微软之外,这种情况也可能发生在仅在思科设备上运行的路由协议或仅在Oracle数据库上运行的SQL版本中。在所有这些情况下,都存在一种内在的动机来增强他们的专有协议,而忽略他们支持的开放标准的错误、性能问题或兼容性问题。
正是这种对专有协议和标准的拥抱导致了供应商锁定。当两个不同的供应商互操作时,他们通常会选择开放标准和公共协议。如果您不喜欢其中一个供应商,您可以将其替换为支持相同标准和协议的不同供应商。而供应商锁定则会让您最终使用仅存在于专有协议中的功能,并且用另一个供应商替换它们变得更加困难。无论竞争对手的解决方案有多好,切换到非专有协议所需的时间和精力都变得过于巨大。
当Linux进入服务器领域时,它的稳定性和免费(指成本)性质开始蚕食数据中心中的UNIX Web、应用程序和数据库服务器。借助Samba等工具,它也开始悄悄地取代不稳定的Windows文件服务器。Linux对开放标准的强大支持突出了专有协议的一些问题,并且很大程度上由于它(以及之前的UNIX),我们今天使用的互联网依赖于TCP/IP、DNS和HTTP等开放协议。曾经有一段时间,这并不是一件确定的事情。
云只是另一个供应商我之所以提出所有这些,是因为我们正在重蹈过去的覆辙,只不过这次是在云端。我将其归因于以下几种因素的结合:没有经历过上一波封闭标准的年轻工程师,仍然如此专注于微软等昔日敌人以至于从未注意到取代他们的巨头的Linux极客,以及更了解情况但乐于为了方便而交易供应商锁定的资深工程师,因为在行业中几十年后,他们开始感到疲惫。当您考虑到现代互联网有多少运行在仅有的几家云提供商之一上(并且老实说,大部分运行在其中一家上)时,这种自满情绪正在创造一种单一文化,将过多的控制权掌握在一个组织手中。
单一文化在出现问题之前可以很好地工作。农业单一文化,例如南方的棉花和爱尔兰的马铃薯,在棉铃象甲和疫病出现之前都很繁荣。对于云,您将整个业务放在一个基础设施上,并且有一种假设,即整个基础设施永远不会出现问题——至少在它出现问题之前是这样。到那时,您会发现不仅云提供商出现了故障,而且它的故障实际上是您的错,因为您将所有的鸡蛋都放在了一个篮子里。也许篮子是单个服务器,也许是单个可用区,也许是单个区域中的S3。关键是,无论停机有多严重,这都是您的错,因为如果您退后一步,您总是会发现,当您所有的鸡蛋都放在一个篮子里时,容错是您自己的责任——至少在篮子是云提供商本身之前是这样。
此时,大多数人在两件事中找到慰藉。首先,如果他们的云供应商遇到重大的系统性问题,那么不仅仅是他们会宕机——互联网的很大一部分都会宕机。您看,他们的云供应商规模太大,不会倒闭,所以为什么要为可能永远不会发生的事件做计划呢?其次,他们已经完全投入到他们的云供应商中,并且正在使用太多专有服务。开发一种可以在多个云平台上运行的架构将太困难、太耗时且太昂贵。这也意味着要放弃他们平台今年刚刚宣布的一些非常易于使用的新功能,这些功能可能不如竞争对手那么出色,但可以非常容易地集成到他们现有的服务中。
互联网只是别人的云更大的风险——也是我写这篇文章的原因——不是您公司的服务,尽管我相信它们很棒,但老实说,即使停机几个小时甚至几天,我们可能也能忍受。更大的风险是,如果几乎所有互联网都由少数云供应商的专有服务运行,那么互联网上的开放标准以及我们自由使用互联网的能力将会发生什么。我们Linux用户为Linux在云基础设施服务器中占据主导地位而感到自豪,但许多真正充分利用云基础设施的工程师从不接触Linux或任何与之相关的东西。他们只是与专有API之上的抽象层进行交互——如果您深入挖掘,您会发现一些Linux软件,但这对于当时的许多人来说几乎无关紧要。
事实上,很多人认为只需与他们的云供应商的API交互就是一项功能,如果目前的趋势继续下去,云基础设施将变成最终的专有操作系统,无论底层是否有任何开放标准或软件都无关紧要,因为这一切都对您隐藏了。单个容器或服务器实例取代了进程,云服务取代了应用程序,而您作为工程师,可以使用他们的GUI或由您的供应商定义和控制的特殊语言与所有这些进行交互。
如果我们达到那个地步,没有什么可以阻止供应商在幕后用他们自己的专有标准取代任何开放标准,这些专有标准完美地适合他们的平台。问题是这些标准是否会开始取代其网络之外存在的开放标准。第二和第三名竞争者将尝试添加互操作性功能以吸引客户转移过来,但随着这些新协议变得越来越封闭,他们将越来越难以做到这一点。随着竞争减少,获胜的供应商将减少创新的动力,而增加锁定的动力。当然,无论如何您都不会看到这些变化,所以没有什么好担心的。毕竟,到那时您切换的成本也会太高。
我写这篇文章并不是说您不应该使用云。云基础设施在很多方面帮助Linux和一些开放标准发展到目前为止,并且它催生了许多创新,从我们可以创建服务器基础设施的速度、其整体弹性和无数有助于管理其服务总体短暂性质的开源工具。我试图做的是提醒您,供应商锁定实际上是一件糟糕且危险的事情。重要的是要记住我们在过去供应商之间专有标准战争时代吸取的教训。那些战斗威胁了Linux、开放标准以及最终您控制自己软件的自由。如果它在过去发生过,它就可能再次发生。因此,在您仅仅因为方便而为一切选择单个云供应商之前,请三思而后行。