什么是无服务器,为什么要关心?






4.92/5 (8投票s)
简要概述无服务器是什么,以及为什么尝试它值得您花时间。
这篇入门文章是 CodeProject 无服务器函数挑战 的一部分。
无服务器是许多开发人员又爱又恨的一个词。
“异端邪说!”他们喊道。“我的代码显然在某个服务器上运行,所以它不可能是*真正*的无服务器!”而他们说的技术上是对的,这当然是*最好的正确*。是正确的。
但有可能在技术上是正确的,却完全错过了重点。虽然它确实运行在服务器上,但这种时髦的开发人员称之为无服务器的技术实际上相当不错。甚至更好的是,它建立在扎实的工程实践之上,如果使用得当,可以带来巨大的投资回报。
效率再次变得重要
如果您还没有被说服,这里还有最后一件事可能会引起您的注意:无服务器再次让效率变得很酷。多年来,我们一直被告知,我们代码的效率不再那么重要了,因为世界上充斥着 CPU 周期,所以我们不妨使用它们!
尽管通常是这种说法是由坐在星巴克里鼓捣各种超赞 Ruby 应用的时尚人士告诉我们的,而他们运行的 27 个 Electron 应用却能在不到一个小时内耗尽 MacBook 的电池电量,但这个论点确实有*一定*的道理。开发人员的时间往往很昂贵,而在过去的二十年里,CPU 时间却越来越便宜。因此,为了提高开发人员的效率,牺牲一些代码效率是合理的。
然而,云计算已经成为一种伟大的均衡器。大大小小的公司都无法抗拒云计算的诱惑。在很多方面,能够外包采购、管理和维护自有硬件的所有麻烦是很方便的。甚至公司的会计们也喜欢!再也不用浪费时间计算那些一开始像汽车一样昂贵,很快就变成超大号镇纸的服务器的折旧了。
然而,这种便利性也有一个缺点。云不是魔法。它只是别人的电脑。而那些通过云提供自己电脑的“别人”毫不讳言地要求您支付大笔款项来换取使用他们的 CPU 时间。他们甚至要求您支付更多的钱来换取使用他们的 RAM!
为了避免我显得像个脾气暴躁的老古董,我认为这对初创公司和大型企业来说通常是一个不错的权衡。能够随意启动和关闭虚拟机、数据库以及大量其他服务是非常棒的。不用处理拥有服务器硬件的麻烦就更好了。
成本效益
由于云服务相对昂贵,理想情况下您希望尽可能少地使用它们。这就把我们带回了软件效率。如果您编写高效的应用程序,您就需要更少的计算资源来运行它们。在传统的云托管 VM 中,这意味着能够运行更少的 VM,分配给它们的 CPU 功率和 RAM 也更少。如果您看过云 VM 的价格,尤其是那些拥有大量 RAM 的 VM,您就会知道它们有多贵。
即使您编写了高效的代码,因此需要更少的云 VM,仍然存在很多浪费。在某种程度上,您可以根据负载来扩展 VM 的数量。但这些 VM 并非一直处于 100% 的利用率,因此您是在为实际未使用的资源付费。
无服务器计算将高效的云计算推向了其合乎逻辑的结论:您只需为代码执行的时间和实际使用的内存付费。因此,尽管它实际上是在服务器上运行的,但您永远不需要真正考虑服务器。您编写独立的“无服务器”函数并将它们部署到云端。您设置触发器来确定何时需要运行您的函数。
云提供商会处理所有将您的代码放到运行它的硬件上的后勤工作,而您无需做任何工作。它最终可能运行在量子计算机、高端刀片服务器,或者杰夫·贝佐斯在弗里蒙特周日街市上淘来的 386 电脑上。只要云提供商提供基于使用计算量的稳定计费,并且您的函数在合理的时间内执行,您就不必关心它运行在什么之上。
无服务器计算的“无服务器”性质,就像 Uber 的“无车”性质一样。当您乘坐 Uber 时,实际上会用到汽车。但您不必担心与汽车相关的任何麻烦:贷款支付、汽油、维护,或者与那些过量咖啡因的愤怒司机打交道。无服务器和 Uber 拥有相同的价值主张:您坐下来享受旅程,同时外包拥有权的麻烦。
无服务器通常用来描述一种特定的技术:函数即服务。这项技术体现在 AWS Lambda、Azure Functions 和 Google Cloud Functions 中。
在技术世界里,当新事物流行起来,成为每个营销人员和尖头老板都喜欢的流行语时,公司往往会重新包装和改造现有技术,以适应新的流行语。
无服务器也不例外。亚马逊现在提供无服务器数据库。谷歌将其十年前的 App Engine,以及几种类型的云存储和机器学习服务,都纳入了无服务器的范畴。
这一切都很好,但我们将避免玩流行语宾果游戏,并将无服务器的范围限制在其最初的定义——函数即服务。否则,我们即将开始的教程系列将有 800 篇文章之长。
虽然我们只关注函数即服务,但请记住几乎所有自称为无服务器的服务都有一个重要的特性:它们都在将我们从 DevOps 推向 NoOps——或者至少是 WayLessThanBeforeOps。您可能仍然需要一些 DevOps 系统来自动测试和部署您的无服务器应用程序。
无服务器产品的共同点是,它们不需要您进行任何思考或工作来创建或扩展基础设施。无服务器就像是计算界的 Ronco 烤箱——您只需设置好就不用管了。
开始吧
尝试我们的教程,该教程涉及在 Azure 上创建一个无服务器地理编码器:Azure 上无服务器函数入门。