前端新技术Serverless的认知
一、认识Serverless
相信前端都知道,开发一款软件,我们前端只能负责UI交互、数据交互、业务逻辑,至于数据库、文件存储、服务器等后台技术,却是无法自己负责。而换成后台来讲,所掌握的后台语言一般也能做一些前端所能做的事情,甚至更好,而前端掌握的语言却不能负责服务端的东西。前端和后台两者之间的区别待遇也是明显的
一个完整的后台服务,自己要装操作系统、web服务器、数据库,自己处理热备,自己新购服务器来应对高并发,自己抗DDOS攻击...
如今,Serverless来了,真正的把计算、存储的能力进行了云化,开发者只需要按量租用这些计算和存储能力,再也不用买虚拟机,自己装服务器了。就连前端离全栈也不是很远了,掌握Serverless就能负责后台所负责的版块,前端无须花精力去学习后台语言:Python、PHP、Java、C++等之类的,懂得Node.js就能上手,不过Serverless是泛语言的,后台和前端都能使用。
Serverless的理念是将服务器管理、数据库优化等“粗活”交给云平台,从而前端开发者能够将交互逻辑、业务逻辑、数据全部掌控在自己手中,这是真正意义上的全栈。
二、Serverless两大技术:Faas和Baas
Serverless由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录。Serverless涵盖了很多技术,分为两类:FaaS和BaaS。
Faas(Function as a service,函数即服务)
主要业务是云函数SCF:事件驱动、自动部署、弹性伸缩、监控日志。云函数能取代后台请求接口,能直接对数据库进行增删改查,前端直接调用云函数即可拿到数据
Baas(Backend as a service,后端即服务)
主要业务是云数据库和云存储这两种:
云数据库MongoDB:增删改查、权限控制、索引管理
云存储COS:快速上传、权限控制、CDN加速
稍微去了解一下MongoDB就可,就能上手云数据库,不需要你安装MongoDB
云存储也无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等,一般直接开通就行;
读到这,我相信你会有种感受,后台的开发成本大幅度下降了,我们前端只需专注自己的业务,其它什么服务器运维、弹性扩容、防DDos攻击,全都不要担心。
三、Serverless的工作
与使用虚拟机或一些底层的技术来部署和管理应用程序相比,Serverless计算提供了一种更高级别的抽象。因为它们有不同的抽象和“触发器”的集合。
拿计算来讲,这种抽象有一个特定函数和抽象的触发器,它通常是一个事件。以数据库为例,这种抽象也许是一个表,而触发器相当于表的查询或搜索,或者通过在表中做一些事情而生成的事件。
比如一款手机游戏,允许用户在不同的平台上为全球顶级玩家使用高分数表。当请求此信息时,请求从应用程序到API接口。API接口或许会触发AWS的Lambda函数,或者云函数,这些函数再从数据库表中获取到数据流,返回包含前五名分数的一定格式的数据。
一旦构建完成,应用程序的功能就可以在基于移动和基于 Web 的游戏版本中重用。
这跟设置服务器不同,不是必须要有Amazon EC2实例或服务器,然后等待请求。环境由事件触发,而响应事件所需的逻辑只在响应时执行。这意味着,运行函数的资源只有在函数运行时被创建,产生一种非常高效的方法来构建应用程序。