什么是Serverless架构
Servlerless 架构是新兴的架构体系,在Serverless 架构中,开发者无需考虑服务器的问题,计算资源作为服务而不是服务器的概念出现,这样,开发者只需要关注面向客户的客户端业务程序开发,后台服务由第三方服务公司完全或者部分提供。 开发者调用相关的服务即可,Serverless 是一种构建和管理基于微服务架构的完整流程,允许我们在服务部署级别而不是服务器部署级别来管理应用部署,甚至可以管理某个具体功能或端口的部署,这就能让开发者快速迭代,更快速的交付软件。
这种新兴的云计算服务交付模式位为开发人员和管理人员带来了许多好处。它提供了合适的灵活性和控制性级别,因而在IaaS 和PaaS 之间找到了一条中间的路,由于服务器端几乎没有什么要管理的,Serverless 架构正在彻底改变软件开发和部署领域,比如推动了NoOps模式的发展。
1 UI驱动的应用
这种架构中,服务端不得不实现诸多系统逻辑,例如认证,页面导航,搜索交易等。 都需要在服务端完成,而客户端则显得比较单一如果采用Serverless架构来对该应用进行改造,则架构如下表示:
相比于 传统面相客户端的三层应用架构,Serverless 有一下几个方面的差异:
- 删除了认证逻辑,采用第三方BaaS服务来替代
- 使用另外一个BaaS 允许客户端直接访问架构与第三方上的数据子库,通过这种方式提供给客户等安全的访问数据库模式。
- 客户端慢慢转化为单页面应用
- 某些我们想保留在服务端的UX 相关内容,我们不需要运行一个专用服务而是通过FaaS 通过API Gateway 对HTTP访问提供响应
- 将Purchase 功能用另一个FaaS 功能取代,因为安全原因,放在服务端还不如放在客户端重新实现,当然前段还是API Gateway
2 消息驱动的应用
消息驱动的应用是一个纯后台数据处理服务,如下图正在编写一个面向用户的应用,需要对UI 请求快速响应,但是同时还想获取所发生的行为。设想 一个Ad Server (在线广告系统) 当用户点击一个广告时,希望快速导向目标,但是同时又需要收集点击量以便向广告商收取费用。
在传统构架中,Ad Server 同步的响应客户,但是同时还会异步的处理“点击量”的应用发送一个消息更新到便于以后向广告收费的数据库。
而采用Serverless 架构的情况下 会是这样的
这个架构和第一个例子有些许不同,但是这里我们用FaaS 功能取代了一个一直运行的应用,此FaaS 运行于第三方服务商提供的消息驱动上下文之间,需要注意的是,提供商提供了消息代理和FaaS 两者将更加紧密的合作在一起。