Serverless案例

以带有服务功能逻辑的传统面向客户端的三层应用为例(一个典型的电子商务应用网站)。一般来说包含客户端、服务端程序、数据库,服务端用Java开发完成,客户端用JavaScript。

采用这种架构,服务端需要实现诸多系统逻辑,例如认证、页面导航、搜索、交易等都需要在服务端完成。如果采用Serverless架构来对该应用进行改造,则架构如图所示:

Serverless架构相比于传统面向客户端的三层应用架构,有以下几方面的差异:

• 删除认证逻辑,用第三方BaaS服务替代;

• 使用另外一个BaaS,允许客户端直接访问架构与第三方(例如AWS Dynamo)上面的数句子库。通过这种方式提供给客户更安全的访问数据库模式;

• 前两点中包含着很重要的第三点,也就是以前运行在服务端的逻辑转移到客户端中,例如跟踪用户访问。客户端则慢慢转化为单页面应用。

• 计算敏感或者需要访问大量数据的功能,例如搜索这类应用,我们不需要运行一个专用服务,而是通过FaaS模块,通过API Gateway对HTTP访问提供响应。这样可以使得客户端和服务端都从同一个数据库中读取相关数据。由于原始服务使用Java开发,AWS Lambda(FaaS提供者)支持Java功能,因此可以直接从服务端将代码移植到搜索功能,而不用重写代码。

• 最后,可以将其他功能用另外一个FaaS功能取代,因为安全原因放在服务端还不如在客户端重新实现,当然前端还是API Gateway。