前阶段了解到了一个新的概念 FaaS , 全称是 Function-as-a-Service,功能即服务,或者函数即服务


AWS 的 Lambda 这个产品就是提供 FaaS 服务的,可以让用户把一段代码提交到 Lambda,这段代码由某个事件来触发运行


假设我们的应用提供了一个图片上传的功能,处理逻辑是把上传的图片保存到云存储,然后把图片缩放到不同的尺寸,用于在网站、手机等不同设备上显示,这些小图也要保存到云存储,同时把图片的相关信息保存到数据库


通常的做法是:在自己服务器的处理逻辑中调用云存储服务接口、缩放图片、图片信息入库,整个过程是以自己服务器为主线


如果把 缩放图片、图片信息入库 的功能各自写成一段独立的代码,提交到 Lambda,流程就变成这样了


FaaS 会给开发方式带来什么改变?_java


这是官方示例图,其中 S3 是云存储服务,SNS 是通知服务,DynamoDB 是云数据库服务


图片被提交到云存储后,会产生一个事件,由通知服务触发 图片缩放处理、信息入库 的代码,这些代码执行自己的处理逻辑,操作其他云服务


与通常的做法相比,使用了 Lambda 之后,这个业务逻辑的处理可以不用自己的服务器了


FaaS 会给开发方式带来什么改变?_java_02


同样的道理,使用 Lambda 可以做很多事情,例如 实时创建图像缩略图、转换视频代码、处理日志、验证内容、筛选数据 ......


Lambda 就是一个代码的运行环境,通过事件机制与外界沟通,它就像一个粘合剂,可以与各种资源进行连接处理


例如 Amazon 还有 API gateway 服务、search 服务,可以通过 Lambda 连接他们,假设用户发起一个查询请求,客户端发送请求到 API gateway,然后触发 Lambda 代码执行业务逻辑,连接 search 和 database 服务,这样就完成了用户的查询请求,这个过程同样不需要自己的服务器


使用 Lambda,不用担心性能问题,当某段代码的访问压力过大时,平台自动进行性能扩展,计费方式也很有特色,按照实际运算时间计费,不是包年包月的方式


Amazon 不是唯一的 FaaS 服务提供者,Google、IBM 和 Microsoft 都有类似的服务,可见这是个趋势


了解了 Lambda 服务后,很有触动,这是一种全新的开发方式,充分利用各种云资源,开发者只需要开发一个个的逻辑单元代码,对各种资源进行粘合


现在的云服务非常丰富,自己服务器上部署的东西已经越来越少,数据库、缓存、存储等等都可以用云服务,服务器主要用来处理用户请求、执行业务逻辑、调用第三方服务等等,但自己的服务器还是处于核心地位,而使用 FaaS 后,服务器中的很多功能将会被打散,以功能函数为单位独立部署,使自己的服务器变得更薄,同时也大大减少了自己的运维工作


目前大部分的开发人员都不太重视前端,但实际上前端正在变得更加重要,通过各种 aaS(IAAS, PAAS, BAAS ...)会把后端的很多工作简化,如果 FAAS 经过一段时间的实际应用,验证是可行有效的,那么服务器端的工作将更轻,前端的工作量会更重,例如 前端技术框架的选择、模块划分、各种测试、压缩编译等工程化、性能优化、增强展示交互效果 ……,所以,建议应该重视前端的技术生态