正文
以带有服务功能逻辑的传统面向客户端的三层应用为例(一个典型的电子商务应用网站)。一般来说包含客户端、服务端程序、数据库,服务端用Java开发完成,客户端用JavaScript。
采用这种架构,服务端需要实现诸多系统逻辑,例如认证、页面导航、搜索、交易等都需要在服务端完成。如果采用Serverless架构来对该应用进行改造,则架构如图所示:
Serverless架构相比于传统面向客户端的三层应用架构,有以下几方面的差异:
-
删除认证逻辑,用第三方BaaS服务替代。
-
使用另外一个BaaS,允许客户端直接访问架构与第三方(例如AWS Dynamo)上面的数句子库。通过这种方式提供给客户更安全的访问数据库模式。
-
前两点中包含着很重要的第三点,也就是以前运行在服务端的逻辑转移到客户端中,例如跟踪用户访问。客户端则慢慢转化为单页面应用。
-
计算敏感或者需要访问大量数据的功能,例如搜索这类应用,我们不需要运行一个专用服务,而是通过FaaS模块,通过API Gateway对HTTP访问提供响应。这样可以使得客户端和服务端都从同一个数据库中读取相关数据。由于原始服务使用Java开发,AWS Lambda(FaaS提供者)支持Java功能,因此可以直接从服务端将代码移植到搜索功能,而不用重写代码。
-
最后,可以将其他功能用另外一个FaaS功能取代,因为安全原因放在服务端还不如在客户端重新实现,当然前端还是API Gateway。
1. Amazon的Lambda产品
2014年11月14日,AWS发布了AWS Lambda。AWS Lambda是市面上最早,也是最为成熟的Serverless框架之一。该服务最迟支持Node.js,现在也支持Java和Python。它与Alexa Skills Kit(软件开发工具包)紧密集成,亚马逊提供交互式控制台和命令行工具,以便上传和管理代码片段。