Cloudflare Workers是最大、应用最广泛的边缘计算平台之一。我们在近三年前宣布了Cloudflare Workers,并且在过去两年中已经普遍提供。在这段时间里,我们看到数十万开发人员编写了数千万行的代码,这些代码现在运行在Cloudflare的网络上。
就在上个季度,20000名开发人员首次使用Cloudflare Workers部署了一个新的应用程序。通过我们网络的所有请求中有超过10%使用Cloudflare Worker。而且,在我们最大的客户中,大约有20%的客户将Cloudflare Worker作为其部署的一部分。真得一个不可思议!
在接下来的一周(我们称之为无服务器周Serverless Week),我们将宣布对Cloudflare Workers平台的一系列增强功能,允许您构建更复杂的应用程序,降低无服务器计算费用,使您的应用程序更快,证明Workers平台是安全的。
马斯洛的开发者需求层次
在本周之前,我想回顾一下我们在过去三年中对边缘计算的了解。当我们推出Cloudflare Workers时,我们认为最关键的特性是速度。Workers运行在Cloudflare网络上,离最终用户更近,因此与传统的集中式无服务器平台相比,他们的响应速度更快。
然而,我们通过观察开发人员使用Cloudflare Workers了解到,开发平台有许多属性远比速度更重要。速度是锦上添花,但对于大多数应用来说,它不是一个初始要求。只关注它是一个错误,它将使边缘计算平台黯然失色。
今天,几乎所有谈论边缘计算好处的人仍然关注速度。Akamai也是如此,它在2002年推出了基于Java和.NET的Edge Computing平台,但由于未能找到足够的客户(仅网络延迟稍短就足以证明在边缘运行代码所需的额外成本和复杂性),因此于2009年关闭了该平台。这是一个很多业内人士都忘记的警示故事。
今天,我确信,当我们推出Cloudflare Workers时,我们错误地认为速度是边缘计算的杀手锏,而该行业的其他大部分重点仍然放错了位置,有可能错过一个更大的机会。
相反,我建议任何平台上的开发人员所需要的,从最起码到最重要的是:速度
速度是杀手锏?
别误会,速度确实很重要。开发更加快速的应用程序是开发人员体验的自我实现。我们建造了速度极快的Workers。通过将计算工作负载移近应用程序用户所在的位置,我们可以有效地克服光速带来的限制。Cloudflare的网络覆盖全球100多个国家的200多个城市。我们继续把这个网络建立起来,在几毫秒内触达每个人。
由于我们不太可能让光速更快,任何开发人员都可以编写代码并在整个网络中运行,这意味着我们将始终拥有比传统集中式计算解决方案更高的性能优势,即使是那些运行在“云”中的解决方案。如果您必须为运行应用程序的位置选择一个“可用区域”,那么对于构建在Workers这样的平台上的应用程序,您的性能总是处于劣势。
我们相信Cloudflare Workers已经是最快的无服务器平台,我们将继续构建我们的网络,以确保它仍然如此。
速度本身就是小众
只有少数应用程序对几百毫秒的网络延迟敏感。这并不是说在现代主要的无服务器平台的模型下,网络延迟并不重要,只是需要额外性能的应用程序是小众的。
信用卡处理、广告发布、游戏和人机交互等应用程序对延迟非常敏感。例如,亚马逊的Alexa和Google Home比许多竞争对手都要好,部分原因是它们可以利用母公司的边缘网络来处理语音处理,因此具有较低的延迟和更高的响应速度。
但在这样的应用程序之后,它变得相当“手忙脚乱”,经常谈论边缘计算的人很快就开始谈论物联网和无人驾驶汽车。令人尴尬的是,当我们第一次推出Workers平台时,我发现自己一直在这么做。专业提示:当你和一个边缘计算的布道者交谈时,只要你确保你的语言中上有流行词“物联网”和“无人驾驶汽车”,你每次都能赢得关注。
斯坦福大学著名的计算机科学教授唐纳德·克努斯(Donald Knuth)(与托尼·霍尔、埃德斯加尔·迪克斯特拉(Edsgar Dijkstra)以及其他许多人)说了一句“过早优化是编程中万恶之源”的话,那就不足为奇了,对于大多数开发人员选择使用边缘计算平台来说,光是这样的速度还不够令人信服。对于大多数应用程序来说,这样做是过早的优化,也就是说。“万恶之源”。那么还有什么比速度更重要?
一致性
虽然最小化网络延迟不足以让大多数开发人员迁移到新平台,但几乎所有无服务器平台都存在一个延迟来源:冷启动时间。冷启动是指应用程序第一次在特定服务器上运行所需的时间。冷启动会造成伤害,因为它们会使应用程序变得不可预测和不一致。有时,无服务器应用程序可能会很快,如果它碰到的服务器上的代码是热的,但其他时候,当一个新服务器上的容器需要启动并将代码从磁盘加载到内存时,它会很慢。不可预测性确实会损害用户体验;事实证明,人们更喜欢一致性而不是速度。
冷启动问题并不是边缘计算平台独有的问题。冷启动的不一致性是所有无服务器平台的祸根。它们是您为不必维护和部署自己的实例而支付的税。但是边缘计算平台实际上会使冷启动问题变得更糟,因为它们将计算工作负载分散到更多位置的更多服务器上。因此,当请求到达时,任何特定服务器上的代码都不太可能“热”起来。
换句话说,一个平台越分散,就越有可能出现冷启动问题。为了在大多数无服务器平台上解决这一问题,开发人员必须创建可怕的黑客行为,比如对来自世界各地的应用程序执行空闲请求,这样他们的代码才能保持热度。雪上加霜的是,传统云服务提供商对那些丢弃的请求收费,或者对他们自己的黑客预热/“保留”解决方案收取更高的费用。太荒谬了!
零纳秒冷启动
我们知道冷启动很重要,因此,从一开始,我们就努力确保Workers的冷启动在5毫秒以下。与其他无服务器平台(如AWS Lambda)相比,这种平台的冷启动时间长达5秒(比工人慢1000倍)。
但我们想做得更好。所以,本周,我们将宣布Workers现在支持零纳秒的冷启动。因为,除非有人发明了时间机器,否则不可能花费比这更少的时间,我们相信工人们现在拥有任何无服务器平台中最快的冷启动。这使得Cloudflare Workers成为一致性之王,甚至超过了传统的集中式无服务器平台。
但是,在马斯洛的开发者需求层次结构中,虽然一致性比速度更重要,但在选择计算平台时,还有其他因素比一致性更重要。
成本
如果你必须选择一个快速的平台还是一个便宜的平台,在其他条件相同的情况下,大多数开发者都会选择便宜的。开发人员只有在看到用户体验受到损害,甚至比速度升级的成本更高时,才会愿意为速度支付额外的费用。
在大多数情况下,边缘计算平台因速度更快而收取额外费用。例如,通过AWS处理的请求边缘处的Lambda成本大约是通过AWS Lambda处理的请求的三倍;而且基本Lambda已经非常昂贵。这在某些方面似乎有道理——我们都认为我们需要付出更多的代价才能更快——但这是一个定价的基本原理,它将始终使边缘计算成为一种小众产品,只为那些对网络延迟极其敏感的有限应用提供服务。
但边缘计算并不一定需要更昂贵。事实上,它可以更便宜。要了解这一点,请看一下从边缘提供服务的成本。如果你很了解本地ISP,比如Cloudflare的网络,那么在本地提供带宽比在全球范围内回传带宽要便宜得多。在边缘运行时,可以额外节省电力和托管成本。这些是我们可以用来帮助保持Cloudflare Workers平台价格低廉的节省。
更高效的体系结构意味着更低的成本
真正的成本优势来自于更高效的体系结构。早在90年代初,我还是大学的网络管理员,当时我们想添加一个新的应用程序,这意味着要订购一个新的服务器。(我们从Gateway买了服务器;我觉得他们的纸板箱上印着牛的图案很有趣。)然后虚拟机(VM)出现了,你可以在同一台服务器上运行多个应用程序。实际上,每个应用程序的开销降低了,因为每个应用程序需要更少的物理服务器。
VMs产生了第一批公共云。然而,云提供商很快就开始寻找进一步降低其开销的方法。容器为在同一台机器上运行多个客户的工作负载提供了一个更轻量级的选择,dotCloud后来成为Docker,引领潮流,几乎所有人最终都跟随它。同样,容器战胜虚拟机的优势是减少了每个应用程序的开销。
在Cloudflare,我们知道历史不会停止,所以当我们开始建造Workers时,我们问自己:容器之后会发生什么?答案是隔离器。隔离器是一种沙盒技术,您的浏览器使用它来保持进程分离。它们速度极快,重量也很轻。这就是为什么当你访问一个网站时,你的浏览器可以获取从未见过的代码,并几乎立即执行。
通过使用隔离器,而不是容器或虚拟机,我们能够使计算成本比传统的无服务器平台低得多。这使我们能够更有效地处理计算工作负载。反过来,我们可以将这种效率带来的节约转嫁给我们的客户。我们的目标是不低于边缘处的Lambda,比Lambda便宜。便宜得多。
从极限到无限
最初,我们希望Workers的定价非常简单且具有成本效益。与其他无服务器提供商一样,我们不需要对请求、CPU时间和带宽收费,而是按请求收费。我们被迫施加最大的CPU、内存和应用程序大小限制。我们在过去三年中看到的是,开发人员希望使用Workers来构建更复杂、更复杂的应用程序,其中一些Workers突破了这些限制。所以本周我们要打破极限。
我们将宣布一个新的Workers选项,它允许您按照其他无服务器提供商使用的相同定价模式运行更复杂的计算机工作负载,但速度要高得多。我们将继续支持我们的简化选项,为那些可以生活在以前限制内的用户提供。我特别兴奋地看到开发人员将如何利用我们的技术来构建新的应用程序,所有这些都比其他传统的集中式无服务器平台的成本更低、性能更好。
更快、更一致、更便宜是很好的选择,但即使是这些因素加在一起也不足以赢得大多数开发人员的工作量。那么,还有什么比成本更重要的呢?
易用性
开发商很懒。我知道第一手资料,因为当我需要编写一个程序时,我仍然会使用一种我知道的可靠的语言,比如Perl(不要评判我),即使它速度较慢,成本更高。我并不孤单。
这就是为什么对于Cloudflare的员工,我们知道我们需要在开发人员已经感到舒适的地方与他们会面。首先要支持开发人员知道并喜爱的语言。我们之前宣布支持JavaScript、C、C++、RISE、GO,甚至COBOL。本周我们将宣布对Python、Scala和Kotlin的支持。我们希望确保您不必学习新的语言和新的平台来获得Cloudflare员工的好处。(我仍在推动Perl支持。)
轻松也意味着在技术操作等方面花费更少的时间。这就是无服务器平台的优势所在。能够简单地部署代码并允许平台随负载上下伸缩是很神奇的。我们已经在Cloudflare Workers的长期用户身上看到了这一点,Discord在过去三年中使用量增长了几千个百分点,Workers平台已经自动扩展以满足他们的需求。
然而,无服务器平台的一个挑战是调试。由于作为开发人员,在本地复制整个无服务器平台可能很困难,因此调试应用程序可能更困难。当将代码部署到一个平台需要长达5分钟的时间时,这一点就变得复杂了,因为它可以与AWS 的Lamda@edge一样。如果你是一个开发人员,你知道等待你的代码被部署和测试是多么痛苦。这就是为什么在不到15秒的时间内将代码更改部署到全球200多个城市的整个网络对我们来说至关重要。
贝佐斯法则
我们内部做出的最重要的决定之一就是实施我们所称的贝佐斯规则。这需要两件事:1)Cloudflare工程师为自己构建的新功能必须尽可能使用Workers构建;2)我们为自己构建的任何API或工具都必须提供给第三方Workers开发人员。
构建一个健壮的测试和调试框架需要开发人员的投入。在过去三年中,基于使用我们平台的数十万开发人员的反馈,Cloudflare Workers的开发工具包已经大大成熟,包括我们自己的团队,他们利用Workers快速构建了诸如Cloudflare访问和网关等创新新功能。历史表明,任何平台的第一个、最好的客户都需要是构建平台的公司的开发团队。
Wrangler是一个命令行工具,用于配置、部署和调试您的Cloudflare工人,基于我们团队的广泛反馈,它已经发展成为一种强大的开发人员体验。除了最快、最一致、最实惠之外,我很高兴Cloudflare Workers背后的发展势头,它正迅速成为最容易使用的无服务器平台。
一般来说,任何最容易使用的平台都是赢家。但有一件事甚至胜过易用性,我预测,这将被证明是边缘计算的真正杀手锏。
合规性
如果你是一个独立的开发者,你可能不会考虑太多的法规遵从性。然而,如果你在一家大银行、保险公司、医疗保健公司或任何其他涉及敏感数据的公司担任开发人员,那么你会考虑很多合规问题。您可能希望使用某个特定的平台,因为它快速、一致、便宜且易于使用,但如果您的首席信息官、首席技术官、首席信息官或法律总顾问说“不”,那么它就要重新考虑了。
在云计算平台上运行的大多数计算资源,包括无服务器平台,都是由在符合性是基本要求的公司工作的开发人员创建的。而且,到目前为止,这意味着要确保平台遵守政府法规,如GDPR(欧洲隐私指导原则),或有相关证书,证明它们遵守行业法规,如PCI DSS(如果您接受信用卡,则需要)、FedRamp(美国政府采购要求)、ISO27001(安全风险管理),SOC 1/2/3(安全性、机密性和可用性控制)等。
即将到来的数据时代
但是,对于传统云计算解决方案无法满足的监管要求,新的风险迫在眉睫。越来越多的国家正在推行法规,确保本国法律适用于本国公民的个人数据。确保您遵守这些法律的一个方法是完全在该国境内存储和处理一个国家公民的数据。
欧盟、印度和巴西都是主要的市场,它们已经或正在考虑对本国公民的个人数据行使法律主权。中国已经对许多类型的数据实施了数据本地化管理。不管你是否认为那些似乎需要本地数据存储和处理的法规是一个好主意——我个人认为它们是会扼杀创新的坏政策——我的感觉是,它们背后的动力是非常重要的,在这一点上,它们很可能是不可避免的。而且,一旦少数国家开始要求数据主权,就很难阻止几乎每个国家都效仿。
风险在于,这样的规则可能会让开发人员失去无服务器计算所取得的大部分效率。如果要求整个团队在不同辖区的不同云平台之间进行协调以确保合规性,那将是一场噩梦。
边缘计算拯救
这就是边缘计算的杀手锏。随着各国政府实施新的数据主权法规,拥有一个具有单一平台、跨越所有受监管地理区域的网络对于那些希望在保持效率的同时保持本地遵守和处理这些新法律的公司来说至关重要。
虽然这些法规才刚刚开始出台,但Cloudflare的员工已经可以在全球100多个国家的本地运营。这使我们能够帮助开发人员满足他们认为合适的数据主权要求。我们将继续为开发人员提供效率和满足云计算能力的选择。
serverless的最终承诺是允许任何开发人员说“我不在乎我的代码在哪里运行,只要让它扩展。”另一个承诺越来越需要“我关心我的代码在哪里运行,我需要更多的控制来满足我的合规部门的要求。”Cloudflare Workers让您两全其美,通过即时扩展,分布在全球100多个国家/地区,并且可以精确地选择您需要的内容。
无服务器周
最好的部分?我们才刚刚开始。在接下来的一周,我们将讨论我们对无服务器的愿景,并向您展示我们如何将Cloudflare Workers打造成最快、最经济高效、安全、灵活、健壮、易于使用的无服务器平台。我们还将重点介绍使用Cloudflare Workers以以前不可能的方式构建和扩展应用程序的客户的用例。我们将概述我们对该平台所做的改进,以使它对未来的开发人员更好。