如今谈论无服务器架构,大多数都是关注其与function-as-service的集成、如何编排访问请求,以及基于无服务器架构的故障排查工具等等。然而,没有多少精力关注在为什么选择无服务器架构,而不是传统架构背后的深层次原因,这是为什么呢?
降低开发成本
使用无服务器架构(serverless)的首要原因,正如其名字所表明的那样,将服务器从我们的关注项中移除。我们不得不承认,并没有真正的无服务器(无服务器仅仅只是对托管在云端的服务器的另一种说法)的应用,选择一种无服务器架构的实现,获得的好处只是不必开发服务器端代码罢了。
在传统的客户端 - 服务器应用程序中,基于数据的所有API和端点都需要由开发人员实现。开发方式包括通过使用像Rails这样的框架自己编写代码,或者通过利用可将底层调用转换为可调用的REST API的第三方工具来实现。
使用无服务器架构,您可以将大量的后端技术工作交给第三方,从而无需关注将Web应用推向市场的复杂工作。这显着降低了开发成本。您的开发人员可以专注于用户界面和用户体验,您的应用最具特色的地方将会更具有吸引力。
减少DevOps和维护成本
涉及到应用的开发和托管Web应用的直接成本很多。其中包括开发人员薪酬,托管费用,域名注册费用,数据传输费用等。此外,对于web应用程序,您通常需要保持服务器不间断运行,以处理一天中任何时间的访问请求。这意味着对于访问频率低的应用程序,每天只能运行一个小时的计算时间,您仍然需要为您的应用程序可用但尚未使用的其他二十三小时付费。
使用像AWS Lambda这样的功能即服务实用程序,您可以通过确保只有在应用程序处于活动状态时付费,才能进一步降低成本。功能即服务运行在按执行次数计费的模式,所以您只需要在代码实际被调用时支付托管和计算资源。许多Web应用程序通常是空闲的,因此可以显著节省成本。
虽然您可以使用Docker等产品在Heroku上托管容器来获得类似的收益,但您将无法获得功能即服务的无服务器提供商允许的纯粹级别,该服务器只提供一个实例, 实际上调用了一个单独的函数。通过确保您的代码仅在实际需要时处于活动状态,这种间歇性安装和卸载容器可以减少托管和资源使用成本。
减少面市时间
除了减少代码量和运营成本外,还可以减少交付时间。通过牺牲硬件和服务器端的灵活性,您可以通过将复杂性移到客户端来减少开发应用程序所需的时间,将您的努力专注到代码库中的单一语言中。
此外,您不需要找到提供商,运行起来服务器,配置Web服务器软件,并让您的应用程序在机器上运行,最终会是一个更简单的问题。您还可以获得更多的主机选择,因为无服务器应用程序只需要一个可以为其终端用户提供文件的CDN,而不是在处理来自网络用户的请求,运行编程语言的运行时的特定Web服务器。
最后,通过将您的应用程序的服务器端交给无服务器的提供商,您可以通过允许第三方管理应用的安全来提升安全性。通过这种方式,可以减少对web服务器、数据库服务器的安全防护,以及在传统客户端-服务器应用程序中至关重要的任何其他后端安全性问题所需的工作。
结论
虽然许多应用程序由于特定的需求或者某些其他原因而无法在无服务器环境中运行,但与其传统的客户端/服务器应用相比,支持无服务器架构的应用程序具有许多优势。通过使用无服务器的提供程序,您可以减少所需的代码量,让第三方基于您的数据源构建API。
您还可以通过允许您的代码以更间歇的方式运行,仅在需要时才启动(和终止)实例,从而降低运营成本。
基于这两个好处,以及其他尚未被发掘的优势,您可以看到产品上市时间缩短,因为您可以专注于外观、感觉、以及您的应用程序基本的交互行为。虽然无服务器架构可能不适合您,但对于越来越多的公司来说,这是一个可行且明智的选择。