写点什么

写给前端工程师的 Serverless 入门

2021 年 1 月 29 日

写给前端工程师的 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 应用工程师进化转型。


头图:Unsplash

作者:蓝湛

原文:https://mp.weixin.qq.com/s/JXDMAmKfUOj4V66yVaT_6Q

原文:写给前端工程师的 Serverless 入门

来源:政采云前端团队 - 微信公众号 [ID:Zoo-Team]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021 年 1 月 29 日 22:261354

评论

发布
暂无评论
发现更多内容

第三周产品经理训练营总结

产品经理训练营

产品训练营作业三

胡小湖

区块链与安全随想

CECBC区块链专委会

区块链

阿里云发布CDN产品最佳实践图 全面解析行业应用

阿里云Edge Plus

CDN 边缘节点

作业-第三周

eva

产品0期 - 第三周作业

曾烧麦

产品训练营

Alibaba高并发业务秒杀系统落地实战文档,已实践某大型秒杀场景

Crud的程序员

Java 架构 高并发

新思科技:以DevOps的速度打造安全的软件

InfoQ_434670063458

DevSecOps 新思科技

2021年云计算面临的5大网络安全威胁

浪潮云

云计算 云安全

三高(高并发,高可用,高性能)解决方案

for

第三周小结:产品思维和产品意识收尾+解决方案

Sicolas Flamel

深度思考 个人成长 产品经理 学习笔记 产品经理训练营

极客时间产品训练营第三周作业

云随心

产品 作业 产品训练营

产品训练营第三周作业

朱航

产品训练营-第三周-作业

邹小胖

产品经理训练营

华为18A架构师共享:Netty+Redis+zookeeper+高并发技术栈

996小迁

redis zookeeper 架构 Netty 高并发

anyRTC2020年 年终总结

anyRTC开发者

音视频 WebRTC RTC sdk

最高法规范区块链证据,司法链将走向全国统一

CECBC区块链专委会

区块链

产品经理课程-第三周

novaln🍉

数据库表数据量大读写缓慢如何优化(4)【分库分表】

我爱娃哈哈😍

数据库 架构·

Linux-Lab 入门:使用开发板

贾献华

嵌入式 Linux Kenel 开发板 arm boot

【mybatis】- MyBatis基础篇

双木之林

《我想进大厂》之Zookeeper夺命连环9问

艾小仙

zookeeper

HTTPS是怎么保证数据安全传输的?

云流

面试题 HTTP

后疫情时代,企业如何实现数字化增长?

火山引擎

字节跳动 Kubernetes 云原生 容器云

你的网站上还在用图片验证码来刁难用户么?一招教你彻底去除图片验证码!

香芋味的猫丶

短信验证码 短信防轰炸 短信防火墙 图片验证码 风控防火墙

构建高并发高可用的电商平台架构实践

for

英特尔高管解读赢得2亿用户信赖的秘诀——永远领先两步

intel001

太全了!字节总监总结240道算法LeetCode刷题笔记

Crud的程序员

Java 架构 算法

区块链企业发展面临的挑战及建议

CECBC区块链专委会

区块链

闭关修炼21天,“啃完”283页pdf,我终于4面拿下字节跳动offer

周老师

Java 编程 程序员 架构 面试

关于自己的一个梦(飞翔)

Yuchen

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

写给前端工程师的 Serverless 入门-InfoQ