FEDay会后-Serverless与云开发,可能是前端的下一站
进化本身是生物体与环境之间持续不断的信息交换的具体表现。
—— 摘自《信息简史》
很荣幸在9月21号成都举办的第五届FEDay上作为讲师为大家分享腾讯云在近两年推出的云开发相关的技术和知识,成都是个非常好的城市,就是火锅太辣,费马桶~
我初次接触前端是读书期间的第一份实习工作,在SAP上海研究院TIP BI部门开发基于SVG的Charts库,99%的代码逻辑是将数据用SVG转化为可视化的UI。毕业后成为了一名传统的web前端开发者,期间还折腾过富本文编辑器。后来有近一年的时间研究效率工程,也就是大众口中的前端工程化。然后在加入腾讯之前的工作是地图,技术核心是WebGL。可以说除了音视频以外,5年多的经历基本涵盖了前端领域绝大部分的技术方向。不论是大众的web还是小众的SVG,不论是宏观到web整体的工程化还是微观到像素的图形编程。表面看上去似乎每一份新工作跟之前的工作都关联甚微,比如在使用WebGL期间积累的矩阵、向量、三角剖分等数学和图形学知识基本上在现阶段工作中得不到体现。我不知道各位前端开发者在生涯初期的几年内是否有过一些迷惘,我至今工作5年,但在加入到腾讯之前其实一直是比较茫然的状态。经常思考一些关于职业前景的问题,比如前端的核心价值是什么?前端的发展方向是什么?等等。我尝试在不同的工作内容中寻找这些问题的答案,而在FEDay的这次分享便是我个人认为最接近理想的答案:Serverless。
我分享的主体是《从前端到全栈:依托云的Serverless落地实践》,需要说明的是这里的“全栈”指的是开发模式。通俗地说就是让前端开发者能够以很小的成本介入到前端以外的工作,具体来说就是服务和数据。进而从开发模式上,一个前端开发者可以掌控应用整体从前到后所有的功能。
云开发
首先简单介绍一下什么是云开发。云开发并不是Serverless,准确的说它不是Serverless的全部。目前业内对Serverless的普遍认知是FaaS+BaaS,腾讯云基于这种认知的具象实现包括两部分:
- FaaS层:云函数SCF;
- BaaS层:云数据库和云存储。
云开发其实是在FaaS和BaaS基础上针对应用端的一套完整的解决方案,包括两部分:
- 端-SDK:目前小程序端和web端已经推向市场,Android和IOS端即将面世;
- 云-接入层:本质上是一个API Gateway,与端SDK配合完成FaaS和BaaS的能力调用。
为何云开发可能会改变前端的开发模型?回答这个问题可以对比目前一种比较流行的架构模型:BFF(Backends for Frontend,为前端服务的后端)。
BFF
BFF简单来说就是在原有的一体化服务端基础上,针对不同的业务平台分别开发一层独有的、很薄的服务,见下图:
BFF承担了一部分的业务逻辑,这部分逻辑通常是平台独有的。举一个现实中的例子:在线视频提供商有多种平台,比如网站、app。由于版权限制有些影片只能在特定的平台播放。具化到技术层面,实现此类逻辑包含分平台鉴权、数据查询策略等等,这些便是典型的平台差异化业务逻辑。独立于核心业务逻辑之外的BFF层能够实现差异化逻辑的松耦合,进而令迭代和维护更高效和安全。
目前业内对BFF普遍实践模式是将BFF分发到负责各平台技术开发的团队,比如App团队负责Mobile BFF、前端团队负责PC web和H5 BFF等等。那么对于前端工程师来说,这种模式是否意味着前端兼顾BFF层?理想的场景是这样的,但现实工作中并非如此。BFF本质上仍然是服务层,除了编程语言之外,一名合格的服务端开发者还需要具备一些独有的领域知识以及服务管理、数据管理理念。所以目前大多数BFF仍然由传统前端之外的专人负责,即便是Node.js BFF。
而Serverless和云开发解决的便是编程语言以外的这些问题。
云开发与前端
以云开发体系提供的功能和服务为基础支撑,前端开发者的关注点除了UI和交互逻辑以外,能够以很小的成本介入以云函数为承载的业务逻辑层和以云数据库、云存储为支撑的数据存储层。简而言之,前端的关注点为:交互逻辑+业务逻辑(云函数)+数据(云数据库/云存储)
在云开发支撑的前端架构模型基础上,前端开发者与其他职能团队协作的工程模型也被彻底改变:
- 业务逻辑由前端开发者负责,不再需要专职的后端开发者;
- 服务保障和线上监控由云开发平台承担,不再需要专职的运维人员。
能力模型
具体到现实上手开发,开发者们需要了解三种角色:端、云和控制台。
- 端的表现形式是对应各平台的SDK,是与前端开发者关系最紧密的一个角色;
- 云指的是支撑Serverless体系的后台系统,这部分对于开发者来说是无感知的,与其对接的工作由端SDK承担。细化到子角色可以分为接入层和基础服务,接入层负责代理转发和用户鉴权等工作;基础服务提供基本的能力支撑,包括云函数、云数据库和云存储;
- 控制台的功能分为两大类:一是管理功能,比如云函数的部署、数据和文件的管理等等;二是运营,控制台提供产品线上监控以及数据的统计和可视化,以辅助运营。
场景多样化支撑
任何一种新技术或者架构落地到具体的业务场景中都难免会遇到由于业务特殊性造成的迁移困难问题,所以在基础的开发生态之外,云开发为支撑多样化的业务场景建立了必要的策略以及对应的工具。比如对于数据私密性存在高要求的产品,可以通过控制台选择严格的CURD权限管理策略;并且可以使用wx-service-sdk在云函数中进行私密数据的CURD以保障安全性;再比如对实时性要求较高的场景,比如在线客服、多人游戏等,云数据库的实时推送功能可以保障此类功能的高效表现。
落地案例
现阶段云开发的落地场景有两个:小程序和web端(其他端的落地近期到来)。分享现场有一位观众提出了一个问题:云开发能支撑多大的用户量和请求量?如果对云开发和Serverless有基本了解的话,这个问题其实就相当于问1+1等于几一样。云开发最大的优势之一便是根据请求量进行动态的扩缩容,其背后是腾讯云庞大的计算能力做支撑。不过为了更具体的回答这个问题可以参考一个现实中的案例:腾讯相册。
2018年3月份推出腾讯相册小程序在9个月的时间里实现了用户量破亿的成绩,而这个爆款小程序的开发只占用了一个人力,在云开发基础上,一个人完成了从客户端到服务端到数据的全部工作。这个案例足以说明云开发的便利和强大,更多细节可以参考这篇文章。
总结&展望
现阶段前端社区对于前端开发者的进化方向有两种较流行的认知:以Node.js为支撑包揽前后端的大前端和以ReactNative和Flutter为支撑的泛前端。云开发非常接近大前端,并且不仅限于服务端,更进一步地深入到数据和存储。小程序其实非常接近泛前端的概念,它是web和native的综合体,大部分场景下开发者均无需关注平台差异性。那么综合大前端和泛前端,在云+端的支撑下是否能够展望一下前端在未来会成为“全栈+全端”?我们拭目以待。
FEDay会后-Serverless与云开发,可能是前端的下一站的更多相关文章
- mpvue+小程序云开发,纯前端实现婚礼邀请函
请勿使用本文章及源码作为商业用途! 前言 当初做这个小程序是为了婚礼前的需要,结婚之后,希望这个小程序能够留存下来,特地花了一些空闲时间将小程序转化成为“相册类小程序” 体验码 准备工作 mpvue框 ...
- mpvue+小程序云开发,纯前端实现婚礼邀请函(相册小程序)
请勿使用本文章及源码作为商业用途! 前言 当初做这个小程序是为了婚礼前的需要,结婚之后,希望这个小程序能够留存下来,特地花了一些空闲时间将小程序转化成为“相册类小程序” 体验码 准备工作 mpvue框 ...
- 开发基于vue前端框架下的系统的UI自动化,记录总结踩的坑
在使用了pytest完成了一个系统的UI自动化后,因为系统的前端框架,是 基于VUE写的,这就让我编写脚本的时候踩了些坑. 无法用JS 修改标签属性,从而进行的操作 比如上传图片,我们的上传是这样子的 ...
- 聚焦“云开发圆桌论坛”,大前端Serverless大佬们释放了这些讯号!
4月14日,由云加社区举办的TVP&腾讯云技术交流日云开发专场,暨"腾讯云-云开发圆桌论坛"在北京.深圳两地同步举行. 当天下午,一场主题为"基于大前端和node ...
- 微信小程序云开发
什么是云开发? 云开发是由腾讯云联合微信团队为开发者提供的 包含 云函数.云数据库和云文件存储能力的后端云服务 云开发为开发者提供完整的云端支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 A ...
- 热度3年猛增20倍,Serverless&云开发的技术架构全解析
『 作为一个不断发展的新兴技术, Serverless 热度的制高点已然到来.』 或许,Google Trends 所显示的 3 年猛增 20 倍的" Serverless " 搜 ...
- 云开发如何解决serverless对端的最后一公里问题
前端圈从来不缺少新的技术.点子和话题,有些留下来了而有些则转瞬即逝.在决定一种新技术是否能够长久的所有因素里,最核心的必然是自身实力过硬能够经受住实践检验.而除此之外,这项技术所解决问题的广泛程度.受 ...
- 支付宝小程序云开发(Serverless)
支付宝小程序云开发(Serverless) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 一.在支付宝账号里面开通小程序云服务 ...
- Serverless介绍篇(一)云开发在Serverless方面取得了怎样的新成果?
过去几年间,Serverless 发展迅猛,与其相伴的还有从小程序.移动端等到前后端一体化的演进与实践,也正因如此,从云计算到前端,众多开发者都极为关注.本文介绍了腾讯云CloudBase 的 Ser ...
随机推荐
- flask入门 七行代码讲解
# 导包 从flask里面导入Flask这个对象.from flask import Flask # 实例化一个对象,app = Flask(__name__) # 里面的 __name__ 是为了定 ...
- RabbitMQ简洁安装
在实际开发过程中,为了解决并发量大的问题,我们往往会引入消息中间件这个杀手锏,今天带大家先入门一个消息中间件RabbitMQ,我们会从RabbitMQ安装.使用来分享. 1. RabbitMQ安装 这 ...
- Spring学习之旅(八)--SpringMVC请求参数
现在我们已经完成了一个无参的接口了,但是应用中有很多需要携带参数的场景,我们来看看 ** SpringMVC** 对它的支持. 参数绑定 SpringMVC 提供了一种绑定机制,通过这个机制可以从请求 ...
- Count the string[KMP]HDU3336
题库链接http://acm.hdu.edu.cn/showproblem.php?pid=3336 这道题是KMP的next数组的一个简单使用,首先要理解next数组的现实意义:next[i]表示模 ...
- CodeForces 989D
题意略. 思路: 可以看成是所有的云彩照常运动,而月亮在跑.只要两个云彩相交后,在分离前月亮能赶到,就算是符合题意的. 可以知道,两个相隔越远的相向运动地云彩是越有可能符合题意的,因为它们相遇所用时间 ...
- JVM参数配置&&命令工具
JVM参数配置 大致方向:JVM调优的目的是保证在一定吞吐量的情况下尽可能的减少GC次数,从而减少系统停顿时间,提高服务质量和效率. 其中减少GC次数的原则: 将新生代转换成老年代的数量降至最少(及时 ...
- FineReport - 项目连接Oracle数据库
FineReport项目连接Oracle数据库 1:打开模板设计器,单击[服务器],选择[定义数据连接]: 2:单击[+],选择[JDBC]; 3:数据库选择[Oracle],驱动器选择[oracle ...
- 持续集成高级篇之Jenkins资源调度
系列目录 之前的示例我们主要关注点在于功能的实现,都是在一个节点的完成了.有了多个节点后,必须涉及到资源的调度问题.本节我们讲解在创建任务时与资源调度的有关选项以及一些平时没有注意到的但在生产环境需要 ...
- NLP(二) 获取数据源和规范化
Why we do this 将获取的数据统一格式,得到规范化和结构化得数据 字符串操作 # 创建字符串列表和字符串对象 namesList = ['Tuffy','Ali','Nysha','Tim ...
- 手把手教你用深度学习做物体检测(七):YOLOv3介绍
YOLOv3 论文:< YOLOv3: An Incremental Improvement > 地址: https://arxiv.org/pdf/1804.02767.pdfyolov ...