Gartner 最近的一份 报告 表明,到 2020 年,全球将有 20% 的企业部署 无服务器架构 。
这说明无服务器架构不只是一个流行语,而是一种众所周知的云计算趋势,并且已经在软件世界掀起一场革命。大型厂商(如亚马逊、微软和谷歌)已经在无服务器架构领域重资投入,追赶革命的浪潮。
与其名字相反,无服务器架构实际上并没有把服务器去掉。那么,究竟什么是无服务器架构?
无服务器架构是指应用程序使用第三方 Function 和服务,但不需要管理服务器。无服务器架构主要包含了两个方面:
FaaS(Function as a Service,Function 即服务):包含服务器端业务逻辑的无状态 Function。这些 Function 运行在独立的容器里,基于事件驱动,并由第三方厂商托管,如 AWS Lambda 或者 Azure Functions。
BaaS(Backend as a Service,后端即服务):使用第三方服务(如 Firebase、Auth0)来达成目的。使用 BaaS 的应用程序通常是富客户端应用程序,如 SPA 或移动 App。客户端负责处理大部分的业务逻辑,其他部分则依赖外部服务,如认证、数据库、用户管理,等等。
无服务器架构包含了 BaaS 和 FaaS,不过这篇文章着重关注 FaaS。
下图描述了一个 Function 的生命周期。
假设有一个简单的线上汽车拍卖应用程序,用户可以登录并出价,拍卖时间结束时价高者得。
传统上,架构里会包含一个部署了应用程序和前端的单体服务器。
上述架构采用的是瘦客户端方式,所有的业务逻辑(如认证、回话管理、车辆管理等)都部署在服务器端。
那么,在一个无状态的微服务架构中,这个应用程序又会是什么样子?
原来的单体应用程序被拆分成了多个服务器端组件。
在将服务拆分成微服务或 FaaS 时,需要考虑到业务逻辑、负载、规模等方面的因素。
上述的例子描述了无服务器架构和基于无服务器架构设计微服务时的大致过程。
平台即服务(Platform as a Service)是另一个不需要开发人员管理服务器(包括硬件和软件)的架构莫斯。正因为如此,开发人员容易把无服务器架构和 PaaS 混为一谈。接下来,我们来看一看它们之间的相似点和不同点。
无服务器的应用应该不仅限于某个领域、业务或架构。在进行应用程序架构时,你需要考虑多个因素,这些因素同样适用于无服务器架构。
以下是一些常见的用例
使用无服务器架构和 FaaS 有以下这些好处。
与其他任何一种技术架构一样,无服务器架构也存在同样的限制。
无服务器架构是一种架构风格,通过 FaaS 将业务逻辑从长期运行的组件中移到临时的 Function 里。它可以解决很多架构和运营问题,简化开发者和运维人员的工作。
与其他解决方案一样,无服务器架构并不是银弹。它无法直接取代现有的组件,在决定是否要采用无服务器架构之前需要先分析一下自己的业务和技术需求,通盘考虑各种优点和缺点。
Serverless Architecture- Why and How It’s a Smart Choice?