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