注:本文中故事的一些细节略有更改,以保护我工作过的公司的隐私。
这有点奇闻轶事,但在我的工作中,我经常遇到一些项目,从成本的角度看,这些项目似乎使用了效率极低的基础设施提供商。
我通常指出,基于相当公正的硬件比较,他们可以通过迁移节省一半以上的预算,而且通常会遇到一系列几乎可以肯定的答案,即由于x、y、z的原因,迁移太困难。
我会选择一个昂贵的服务器提供商和一个便宜的服务器提供商,这只是因为我与他们合作过很多,并比较了他们的两个高端服务器。
我将举一个来自廉价服务器提供商OVH的例子和一台来自AWS的有点糟糕的机器的例子。
为了更好地比较,AWS提供了4.16xLarge。我将尝试找出此描述中的确切硬件规格:
R4实例最多配备64个vCPU,并由两个基于E5-2686v4的AWS定制的Intel Xeon处理器提供支持,这两个处理器具有高内存带宽和更大的L3缓存,可提升内存中应用程序的性能。
因此,基本上让我们称其为2xE5-2686v4,尽管真实的E5-2686v4似乎比AWS版本拥有更多的内核(无论是真实的还是虚拟的),我会姑息AWS的说法,并说他们的版本大同小异。我也会假设AWS的RAM是相同的2666 MHz DDR4 EEC2(基本上是你现在能得到的最好的),尽管他们没有具体说明这一点,但我在这里会很慷慨。
OVH服务器内存更大,配备1 TB非常快的存储,添加更多存储比AWS EBS价格便宜得多(+您可以在所有服务器上选择通过PCIe连接的NVMe固态硬盘)。
我选择了两个相当相似的处理器,但运行比较仍然很困难。与RAM不同,处理器的协作性要强得多,你不能只看nr核、高速缓存大小和频率等参数来计算它们的性能。
尽管如此,这两家公司在这些参数上似乎相当接近,在查看基准时也是如此。看来,黄金6132略好于E5-2684-V4。诚然,很难对服务器CPU进行基准测试,但我仍然认为,公平地说,前者至少有一个微小的优势,即使E5-2684在基准测试中的表现比真正的任务表现更差。
一个有768 GB的RAM,另一个有488 GB(第一个的58%),规格相同。
一个人的CPU要好得多(比方说好10%,略低于基准所宣称的17%)。
一个有免费带宽,另一个按与外界通信的每一KB收费(虽然收费相当少)。
一台配有1TB非常快的NVMe存储,另一台需要额外付费。
如果第一台服务器,也就是几乎在各个方面都更好的一台,成本约为16K/年…。另一个要多少钱呢?嗯,也许10个,也许12个,也许14个?
我不知道,但答案肯定不应该是26K/年的近两倍,这才是那种表明有什么东西坏了的答案。“。
在最坏的情况下,AWS的价格大约是它的1.6倍,但同样,这是按年支付的。如果我们将按月付费与按小时付费进行比较(不完全公平),我们会得到37k与16k,如果我们对同等存储成本(通过保证IOPS实现同等速度)进行一些简单的数学计算,我们很容易就会得到大约3000/年的额外成本。我们有40k和16k的差别,规格最差的AWS机器要贵250%。
但是,最差的AWS机器是否比OVH机器贵160%或250%并不是这里的相关问题,问题是为什么我们在使用成本方面看到了天文数字的差异。
我们应该考虑有比OVH更便宜的主机提供商(例如scaleway,潜在的Online.net,以及其他你从未听说过的提供商)。另一方面,数字海洋、GC和Azure等服务器提供商的价格可能比AWS更高。
故事是这样的:您最终使用Firebase进行身份验证,然后聘请一个了解GC的sysadmin/DevOps人员在那里创建您的基础设施。然后,您将使用一些奇特的Google ML服务,该服务与GC存储无缝集成……。以此类推,直到离开GC会花费更多的人力,而不是向他们支付一点额外的费用来购买您在其他地方可以用更少的钱获得的任何计算或存储。
大多数情况下,初创公司对这些服务的成本视而不见,这让情况变得更加复杂。
我把我的个人基础设施从AWS换了下来,因为它最终花费了我每月100多美元的维护费。大部分成本都是用于cerebralab和lbs,我需要毫不费力地将子域分配给服务器,但计算本身也开始变得相当陡峭。现在我每月支付23美元,但如果我愿意削减成本,最终可能会达到11美元/月。
另一方面,在与我合作过的初创企业中,我经常可以在硬件方面发号施令,但我通常不能反对使用AWS或GC……。因为很多时候,第一首歌是免费的。AWS、GC和Azure像糖果一样扔掉了价值10K美元的信贷,除此之外,他们还为他们认为有潜力的初创企业提供了价值50-20万美元的信贷。这里的问题是,信用在1年后到期,一旦那一年到期,许多人可能会被锁定在卖家手中。
创业模式是一种指数增长的模式,大多数都失败了,获胜者从投资中获得了数千万或数亿美元。那么,一份iaas法案的一年或20万零1年是多少年呢?
嗯,答案几乎是什么都没有。我相信标准的AWS免费积分大概是10万美元/年。因此,假设一家初创公司使用它一年获得1000万美元的投资,他们每年要花费预算的1%来维持这一数字。
问题是,投资反映了未来的潜在价值,一家获得1000万美元投资的初创公司的运营能力可能只有投资者希望达到的水平的一小部分。为了使股票价值是原始投资的5倍,该公司可能不得不将业务规模扩大20倍、50倍或100倍。
这就成了一个问题,因为你不能永远依靠投资,而把规模扩大到20倍,突然之间每年花在服务器上的10万就变成了200万。
当然,这只是一个假设,这里的数字只是用来表明观点的替身,而不是案例研究。根据我自己的经验,锁定漏斗看起来像是:
大量的投资资金,让我们不要浪费时间从{昂贵的基础设施提供商}那里切换,它是我们年度预算的1%。
事实证明,一旦公司发展壮大,{昂贵的基础设施提供商}现在占我们年度支出的比例达到两位数,但现在转换已经太晚了。
这种情况因合并(大鱼买小鱼)而加剧。我清楚地记得有一次我找到了数据处理平台的最佳硬件+软件组合,我想保守的估计是比当时使用的供应商锁定替代方案便宜~5倍。
这恰好是值得的,因为这家初创公司没有为谷歌云提供慷慨的信贷。但是,一旦整合完成,我就被迫将整个系统切换回Google云,虽然GC设置要好得多,但成本仍比原来的解决方案高出约2-3倍。
为什么?嗯,归根结底是母公司使用谷歌云,他们的所有员工都知道如何与GC合作,他们的所有合同都有奇怪的安全相关条款,这些条款是由许多律师根据他们的GC基础设施进行的官方安全审计撰写的,诸如此类。
员工最终决定公司内部使用的大部分内容,包括基础设施提供商。
人们按照奇怪的方式聚集在一起,以至于如果一名首席技术官聘请了偏爱他喜欢的基础设施提供商的初始工程师,即使他没有积极寻找这一特质,我也不会感到惊讶。
一旦最初的几名员工成为某个基础设施提供商的粉丝,它就会开始出现在工作规格中,因为当你使用Azure时,让熟悉AWS的人上岗是一件非常痛苦的事情。在其他条件不变的情况下,你宁愿找一个熟悉你已经在使用的技术的人。
渗透到特定领域的员工种类更是加剧了这一点。例如,如果你正在开发移动应用或网络应用,很可能你会发现很多工程师都熟悉Heroku和Digital Ocean。如果您正在开发人们使用C#做的任何事情,我敢打赌,您一定会找到知道如何使用Azure的人。如果你在做机器学习,大多数人都会对谷歌云关于TPU的优惠略知一二。
更广泛地说,这没有给那些想要拥有多云基础设施或使用鲜为人知的平台的人留下任何空间。你要么请非常精通这一主题的工程师,但那会额外收费。或者你委托几个专家来处理所有事情,而团队的其他成员不知道如何在不叫人的情况下启动一个新的虚拟机。
当然,你们中的一些人可能会说,Linux机器只是一台Linux机器,一旦你把它塞进去,它就完全一样了,我同意,与我交谈过的大多数工程师也都同意这一点。但考虑到所有因素,所有这些工程师的雇佣费用也恰好非常昂贵。最近在我的采访中,我介绍了一个问题,请向我解释一下|是如何用在bash shell问题中的。令我惊讶的是,有多少自称掌握DevOps;知识的人不能给出例子和时间来思考这个基本问题(当然,这是在大约60个样本大小的情况下)。
但是,即使您假设所有有能力的软件开发人员都不需要特定于提供商的手来引导机器并通过ssh在机器上运行命令,一旦您开始进行编排,情况也会发生变化。我也许可以在GC和AWS上构建一个基于Kubernetes的基础设施,但是在Azure上我可能会失败得很惨。我可以在AWS上创建无服务器基础设施,但不能在任何其他基础设施提供商上创建,至少在没有两倍时间承诺的情况下是不行的。
我可以比较一下OVH和AWS服务器,或者GC和Scaleway服务器,但我不能比较GC Vision AI和Sagemaker,或者GC的ai-Platform笔记本和IBM的Watson,或者比较基于lambda的无服务器解决方案和使用OVH API按需配置虚拟机的成本。
世界正在更多地向将硬件+软件功能捆绑为服务的模式发展,在这种模式下,您不再购买装有UNIX操作系统的服务器,而是购买一些存储、内存和计算时间的抽象令牌。这不仅使比较变得困难,而且经常迫使您做出关于代码的特定选择,这些选择会使供应商的锁定更强。
由于您的代码不能在任何其他平台上运行,您的代码被锁定在运行方式中,并且无法进行公平的比较,这一双重打击让我想起了大型机的概念。当公司被锁定在其物理硬件销售商(例如IBM或Oracle)中时,因为硬件将只能运行特定于供应商的代码,使得公司编写更多特定于供应商的代码,从而导致恶性循环。
这并不是说比较在这些情况下变得不可能,但它变得困难得多,它需要重写代码库,而且它伴随着妥协。也许AWS计算更便宜,但他们的NLP服务有点糟糕,然后您必须量化使用跨平台解决方案的成本或在NLP组件方面失去略微优势的成本。
我也相信锁定是因为虚假信息运动。无服务器基础设施就是一个很好的例子。AWS提出的主张(引用他们,因为他们是第一个引入这一概念的人)是:
现代应用程序是无服务器优先构建的,这是一种优先采用无服务器服务的策略,因此您可以提高整个应用程序堆栈的敏捷性。我们已经为您堆栈的所有三个层开发了服务服务:计算、集成和数据存储。
现代应用程序不是为在操作系统上运行而构建的,而是为在3个特定于AWS的抽象层、计算、集成和数据存储上运行而构建的。这意味着您必须重新设计整个代码库以使用任何其他硬件提供商。
无服务器是一个用词不当的词,用来诱导你不再依赖硬件的想法,而你却放弃了在世界上99.9%的硬件上运行的能力,转而只能在AWS上运行。
将传统企业数据库的性能和可用性与开源数据库的简单性和成本效益结合起来。
结合了传统企业数据库由于供应商锁定而不断提高价格的能力,但从开源项目中窃取代码,以便提供类似的界面,让您觉得可以像从Postgres或MySQL迁移数据和查询一样轻松地从中迁移数据和查询。
与此同时,GC、AWS和Azure试图将语言从任何可以用来量化其机器的可比指标中赶走。
你的记忆是什么?若干GB。想知道接口(即DDR4、DDR3...。等等)?延迟时间呢?频率是多少?如果它是欧洲经济共同体的话?虽然运气不错。
您的CPU容量是多少?一些";虚拟核心";。想知道L1/L2/L3的尺寸吗?如果它是共享的呢?正在使用的虚拟机管理程序的行为?如果你能改变日程安排的话?频率是多少?指令集呢?虽然运气不错。
你们的仓库是什么?具有多个GB的固态硬盘。它使用的是哪一代SATA?是NVMe吗?IO/s数字是缓存读取还是冷读的函数?虽然运气不错,但最好还是运行基准测试。
在像AWS这样的提供商上,根据我自己的经验,数字从来都不是一样的。我注意到,使用基本的hdpram和基于dd的基准测试,在连接到具有相同规格的机器上,具有相同规格的EBES的读写速度有2倍以上的差异。
可变性能也不仅仅是我观察到的,Netflix为AWS提供了一个完整的实例选择流程,以获取更好的EC2虚拟机。
我并不是说硬件规格不可用,如果您深入挖掘并寻求支持,您可以获得所需的一切。一旦你购买了机器,只需看一眼实际的机器,你就能找到大多数东西。但它们是隐藏的,它们不是贴在墙上作为卖点,它们是一个肮脏的小秘密,大多数受欢迎的基础设施提供商宁愿你忽视它。
更好的是,他们中的大多数人都希望你甚至不再使用这种语言。因此,为什么&34;核心和";CPU&34;已被";vCPU&34;甚至更抽象的计算单元&34;所取代。
我要在这里引用的最后一个原因是,受欢迎显然会导致成本增加。基于上述原因,受欢迎程度最终成为一个重要因素。
你越受欢迎,越多的公司被锁定在你的生态系统中,他们就会越多地吸引他们的子公司和承包商进入其中。
你越受欢迎,开发人员越知道如何使用你的系统,员工锁定效应就越强。
这两件事越是正确,你就越能把基本的基础设施抽象为服务,以避免容易的价格比较,并使迁移代码变得更加困难。
这三件事越属实,你就越能教育人们远离那些会让他们以不利的理由将你的服务与他人进行比较的语言。将比较所需的想法从人们比较基础设施提供商时使用的词汇表中提取出来。窃取可能被用来反对您的服务的概念,并对它们进行重新表述,使其看起来像是您的服务带来的优势之一。
考虑到最重要的是规模经济,我预计基础设施供应领域将出现更多垄断。也就是说,我对这一切的现状感到惊喜。
在这方面很难找到相关的数字,但根据各种衡量标准,这场战争似乎很难由任何人赢得。
即使在最容易垄断的基础设施即服务领域,AWS的市场占有率也略低于50%,无名公司(市场份额为1.8%)占据了23.2%的市场份额。
我能想到许多小公司对我想象中永远输给垄断的市场产生了重大影响。这里有一个有趣的例子,那就是最近Fastly主宰了CDN领域。
更重要的是,虽然我经常喋喋不休地说像Kubernetes这样的解决方案是朝着错误的方向迈出的一步。我必须承认,我已经开始看到它越来越多地被用作基础设施不可知部署的解决方案。
此外,还有Terraform等编排工具和Serverless等软件,旨在抽象各种IaaS提供商提供的服务。
一方面,数十亿美元可能被浪费在价格过高的基础设施上,另一方面,似乎是一个旨在使基础设施成本削减活跃起来的软件环境,每天都在变得更大。
在某种程度上,我不得不认为这可以归因于程序员不断地想要尝试新的东西,编写新的抽象,试图超越其他人。
我们已经过了不可能说IaaS提供商比其他提供商更有效率的地步。
最干净的示例是比较具有类似操作系统的服务器和具有类似指令集的CPU,就像我最初的示例一样。但是仓库呢?那CDNS呢?GPU呢?那FPGA呢?将这些服务无缝捆绑在一起的服务怎么办?
它变得非常复杂。根据我自己的经验,与一些硬件提供商的声明相比,基准测试与我自己的工作负载之间的差异经常让我大吃一惊。我脑海中浮现出一个生动的例子,那就是将AWS自己的Aurora数据库与相同价格的RDS Postgres集群进行比较……。发现奥罗拉的速度慢了约30%。在比较中,我确信,由于AWS掌握着所有的牌,他们的定制数据库解决方案将获胜。
然而,基准测试的问题在于它们非常特定于工作负载。我几乎可以去找任何一家公司,毫不掩饰地宣称,他们可能正在使用过度基础架构提供商,而将其计算和/或存储繁重的工作负载转移到另一家公司将节省成本。然而,如果我设计基准的时薪包括在成本效益分析中,我就不能总是提出同样的主张。
这就是为什么我在很大程度上反对基础设施即服务,超过一定程度的抽象基准是不可行的,它涉及到重新设计整个代码库。一旦发生这种情况,我们就会到达javascript领域,在那里,客观的衡量标准被营销和炒作所取代。
我认为我可以描绘出一幅相当黯淡的图景,因为资金被浪费在了价格过高的基础设施上。
在这种情况下,新公司被不合理的高额免费信用引诱进入效率低下的硬件提供商的网络。这就导致他们招募熟悉这些硬件供应商的人。可能会进一步锁定更多关于Vario的免费学分和研讨会。
.