写给前端工程师的 Serverless 入门

原创不易,但愿能关注下咱们,再顺手点个赞~~

本文首发于政采云前端团队博客: 写给前端工程师的 Serverless 入门html

漫谈 Serverless

Serverless 是前端圈近两年比较火热的词汇,但其第一次被提出已是 7 年前的事情,那么什么是 Serverless 服务,其架构由哪些部分组成,又有什么优缺点,本文将一一道来。前端

趋势

参考《RightScale 2019 年云状态报告》,从 2018 年到 2019 年,Serverless 是公有云中使用率增加最快的服务,达到 50% 的增加速度,与 Streaming Process 并列第一。数据库

从谷歌热词趋势来看,Serverless 近两年来处于稳步上升的趋势,而且近一年的热度一直处于较高的水平,热度地区分布图中中国排在了 No.1,由此也能够看出你们对 Serverless 的热衷。依托于技术的热度,Serverless 的发展也必将日益完备。 后端

概念

咱们把 Serverless 拆解为 server 和 less 两个单词,从字面上推断词意即为“少服务器的,亦或是无服务器的”。固然这并不是指应用架构中是没有服务器资源的,而是经过 Serverless 这种服务形态,用户在使用对应的服务时,不须要关心或较少关心服务器的硬件资源、软件资源、稳定性等等,这些一般已经由云计算厂商提供设施、服务和 SLA 保障,彻底托管给云计算厂商。而用户只须要专一本身应用代码自己,上传执行函数到相应云计算平台,按照函数运行的时长按量付费便可。当前比较成熟的 Serverless 云产品主要有 Amazon Lambda、Google Cloud Function、Azure Function、AliCloud Function Compute。性能优化

演进

云计算诞生以前,大部分计算资源是处于“裸金属”状态的物理机,运维人员选择对应规格的硬件,建设机房的 IDC 网络,完成服务的提供,投入硬件基础建设和维护的成本很高。服务器

云计算诞生后,用户能够直接购买云主机(VM),把基础物理硬件和网络的管理都交由供应商管理,多用户租用一台物理机,但每台云主机对用户来讲就像是单独的一台物理机,用户之间相互隔离。这种模式减小了用户硬件管理成本,站在平台的角度,咱们一般称之为 IaaS(Infrastructure-as-a-Service)。网络

随着软件的发展和容器技术的兴起,计算环境由 VM 发展到更小粒度的容器,在容器中能够运行不一样的软件服务,PaaS(Platform-as-a-Service) 和 CaaS(Container-as-a-Service) 也开始映入眼帘。用户使用平台基础软件如 Database、消息等开发本身的应用,使用容器镜像构建和部署应用,最后托管给平台。此时基础设施的运维更加下沉,开发者只需关注基础软件和容器。前端工程师

继续向前发展,应用的运行演变为更细粒度函数的运行,用户开发特定业务的处理函数,托管给函数平台,按需使用相关的后端服务,经过特定条件的触发完成开发者业务逻辑函数的计算。用户无需为应用持续付费,只需支付函数运行时产生的资源消耗费用,而这,就是 Serverless 服务的模型。 数据结构

架构

如上文的描述,Serverless 架构由两部分组成,即 Faas 和 BaaS。架构

FaaS(Function-as-a-Service)即为函数运行平台,用户无需搭建庞大的服务系统,只须要上传本身的逻辑函数如一些定时任务、数据处理任务等到云函数平台,配置执行条件触发器、路由等等,完成基础函数的注册。

BaaS(Backend-as-a-Service)包含了后端服务组件,它是基于 API 的第三方服务,用于实现应用程序中的核心功能,包含经常使用的数据库、对象存储、消息队列、日志服务等等。

Serverless 实际上是经过事件驱动的,当一个任务被触发时,好比 HTTP 请求,API Gateway 接受请求、解析和认证,传递对应参数给云函数平台,平台中执行对应回调函数,配合 DB、MQ 等 BaaS 服务在特定容器中完成计算,最终将结果返回给用户。函数执行完成后,通常会被 FaaS 平台销毁,释放对应容器,等待下一个函数运行。

优缺点

讲完 Serverless 的基本架构,咱们来谈谈它的优势和缺点。

根据 Serverless 的特性,咱们能够总结出如下优势:

一样,Serverless 是一把双刃剑,它也有一些缺陷须要咱们了解,以便取长补短:

  1. 云厂商强绑定 当你决定使用公有云的 Serverless 产品时,它们经常会和厂商的其余云产品相绑定,如对象存储、消息等等,这意味你须要同时开通其余的服务,将致使你的应用与平台强绑定,迁移成本剧增。
  2. 不适合长时间任务 云函数平台会限制函数执行时间,如阿里云 Function Compute 最大执行时长为 10 min,若是你的任务时间超长,那么你须要拆分编排你的函数执行流程,并在一个函数执行结束时唤起另外一个函数执行。这将增长编码的复杂度,并且花费上可能高于购买一个长时间运行的实例。
  3. 冷启动时间 函数运行时,执行容器和环境须要一个准备的时间,尤为是第一次启动时时间可能会较长。对一个 HTTP 请求来说,可能会带来响应时延的增长,产生性能毛刺。
  4. 调试与测试 因为本地环境和平台运行环境的差别性,开发者须要不断调整代码,打印日志,并提交到函数平台运行测试,会带来一些开发成本和产生一些费用。

应用场景

结合以上的优缺点,实践中咱们能够发掘 Serverless 的落地场景,目前阶段 Serverless 主要适合如下的应用场景:

  1. 定时任务 经过时间触发对应的函数任务,完成开发者业务逻辑的处理。
  2. 数据加工 经过事驱动件机制,在特定的条件下触发,对系统的日志进行整合,或者对多媒体文件进行加工等等。
  3. 低频请求 用户能够按照频次付费,而无需构建一个应用来应对这些必要的可是量小的请求。
  4. IoT 物联网场景下,大部分是用户对设备的操控,用户对时延的容忍度较高,也是典型的事件触发且低频场景。
  5. 认知计算 适用于某些 AI 场景,如聊天机器人。

结语

目前,国内 Serverless 的发展还处于早期阶段,一些配套和服务处于待完善阶段,并且大型成功案例较少。但这并不妨碍咱们对技术革新的热衷,站在前端工程师的角度看,Serverless 的持续发展,在未来可使前端更加容易的使用 Node.js 等语言搭建一个完善的应用,只需关注先后端的业务逻辑自己,而较少关心底层庞大的软硬件系统和运维知识。将来也可能给先后端工做流程带来必定变革,好比更统一的技术栈、设计规范和数据结构;更高的开发效率——应用搭建、联调时间的缩短,促使 Web 前端工程师向 Web 应用工程师进化转型。

参考资料

CNCF WG-Serverless Whitepaper v1.0

RightScale 2019 STATE OF THE CLOUD REPORT

函数计算

招贤纳士

招人,前端,隶属政采云前端大团队(ZooTeam),50 余个小伙伴正等你加入一块儿浪~ 若是你想改变一直被事折腾,但愿开始能折腾事;若是你想改变一直被告诫须要多些想法,却无从破局;若是你想改变你有能力去作成那个结果,却不须要你;若是你想改变你想作成的事须要一个团队去支撑,但没你带人的位置;若是你想改变“5年工做时间3年工做经验”;若是你想改变原本悟性不错,但老是有那一层窗户纸的模糊… 若是你相信相信的力量,相信平凡人能成就非凡事,相信能遇到更好的本身。若是你但愿参与到随着业务腾飞的过程,亲手参与一个有着深刻的业务理解、完善的技术体系、技术创造价值、影响力外溢的前端团队的成长历程,我以为咱们该聊聊。任什么时候间,等着你写点什么,发给ZooTeam@cai-inc.com

推荐阅读

前端工程实践之可视化搭建系统(一)

看完这篇,你也能把 React Hooks 玩出花

自动化 Web 性能优化分析方案

相关文章
相关标签/搜索