云开发如何解决serverless对端的最后一公里问题
前端圈从来不缺少新的技术、点子和话题,有些留下来了而有些则转瞬即逝。在决定一种新技术是否能够长久的所有因素里,最核心的必然是自身实力过硬能够经受住实践检验。而除此之外,这项技术所解决问题的广泛程度、受众群体规模等“非技术因素”也至关重要。
比如一经问世便话题性十足的React时至今日不论是自身还是其优秀的效仿者们都仍旧高歌猛进,高性能的vdom和高效率的数据驱动开发模式固然是其立足的基本,但React能够高度普及的另一个关键因素也不容忽略,那就是它解决了前端开发最表面也是最广泛的问题:UI编程。这可以说是从前端这一岗位自诞生以来最核心的关注点,而且不论什么类型的web应用都无法脱离它。
但是很少人知道React的数据驱动UI的模式早在2011年的D3.js中就有很成熟的应用,一个重要的原因是面向SVG编程的D3.js受众群体太小,只有从事SVG数据可视化编程的人才会使用它,所以没有很高的传播度。
之所以讲React和D3,是因为今天我们要讨论的是一种不论从普及的速度上还是话题性上都非常惊人的技术理念-Serverless。
Serverless解放了后端和运维,前端呢?
业内对于Serverless的正式得名来自何处并没有绝对统一的看法,但一种相对普遍的认知是始于亚马逊AWS Lambda。自2014年始,在AWS Lambda之后,Google、IBM、Microsoft、腾讯等国内外云厂商们相继推出类似的云函数计算平台,称为FaaS。时至今日Serverless=FaaS的误解仍未完全消除,不过Serverless=FaaS+BaaS的理论模型已经趋于标准。各类社区、论坛和技术大会对此的讲解有很多,本文便不再赘述。
提一个有趣的东西,早年间折腾过“梯子”的小伙伴肯定熟悉一个很好用的工具:Google App Engine,简称GAE。虽然Google将GAE定位为一种SaaS产品,但GAE本身可以被拆解为很多细分的功能,在这些能力之上开发可以开发自己的SaaS产品。在这个角度上GAE很符合目前技术圈对于Serverless的解读。
Serverless最直观的优势是解放了传统后端和一部分运维工程师的生产力。原本由web server承载的业务逻辑转交给FaaS平台的一个个函数,没有了服务器硬件的束缚,也舍弃了MVC之类的架构模式,只剩下业务逻辑本身。服务部署在云端能够节省很多运维成本,什么交换机、路由器、刀片服务器等等全都与开发者无关。
Serverless可以称得上是一种转变软件开发范式的理论。软件开发技术经历几十年的发展历程到今天,开发者在Serverless的加持之下,从原始的聚焦于系统架构和软件架构两者,转变为只关注软件架构本身。
Serverless无疑是一个伟大的理论,但不论是系统架构还是软件架构,交付给用户的形式终究要依托应用端。而Serverless本身并没有关注于解决对端问题上。这像极了通信技术领域的“最后一公里”问题:通信服务商们克服了重重困难将电缆跨过了陆地和海洋,最终却在抵达用户计算机的最后一公里之前遇到了瓶颈。
在对端的最后一公里,Serverless还缺少什么?
这个问题其实已经超越了狭隘Serverless的范畴,更准确地表达是:在Serverless的基础上,如何设计合理的对端解决方案?
解决问题的关键在于FaaS层。
目前市场上提供FaaS服务的云计算厂商中,包括AWS Lambda、Azure Functions、阿里云的Function Compute以及腾讯云的SCF,在应用端调用函数的方式大都以http API的形式为主。这跟传统的web server接口在调用方式上并无本质区别。
http api本身没有任何问题,问题在于调用请求直接送达FaaS函数有很多不便和隐患。FaaS函数很接近函数式编程思想里的纯函数。函数本身是无状态的,但是业务逻辑是有状态的,最典型的场景是用户鉴权。这并不是很复杂的业务逻辑,但是如果一个FaaS函数来承担的话,那么这个函数便跟业务有了强耦合性,变得不再“纯”,成为了一个“高阶函数”,同时还有一定的安全隐患。
对于这类FaaS平台,比较普遍的做法是在FaaS之上另行搭建一层API Gateway,用来做鉴权、session维护等与业务相关的工作,同时充当FaaS层代理的角色。
部分厂商提供了API Gateway能力。
这是一种比较合理的接入方式,但需要开发者付出一定的成本,不论是自行搭建API Gateway还是使用云厂商提供的能力。没有做到“开箱即用”的便捷性,这也是最能够体现云开发优势的一点。
云开发:Serverless最后一块拼图
云开发并不是Serverless,准确地说,它不是Serverless的全部。在目前技术圈对Serverless的认知基础之上,云开发以“最后一块拼图”的形态弥补了Serverless对端能力的不足。
云接入层不仅仅是一层传统的API Gateway,同时会对应用端的每一次请求进行权限验证,包括云函数、存储以及数据库在内的所有能力都有细分的权限管理策略。
端与云接入层的通信流程隐藏在端SDK中,开发者使用比http API更便捷、更具语义化的函数语法进行调用。
关于函数语法与http API的优劣对比后续文章会详细讲解,敬请关注。
在云开发体系下,开发者省去了搭建API Gateway的人力和经济成本,真正做到了“开箱即用”。
总结
“含着金汤匙出生”的Serverless仅用不到5年的时间便经历了从诞生到普及的历程,在当前的时间节点业内对于Serverless虽有公知但仍未绝对统一,大家都是踩着石头过河。云开发自2018年9月在小程序落地之后,从一开始的质疑大过认可到成为小程序开发的标配仅用了不到一年的时间,未来也将以成为标准的Serverless对端解决方案为目标。
云开发如何解决serverless对端的最后一公里问题的更多相关文章
- 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
先看图 这个是JavaScript语言自身存在的一个问题.说道这里不得不提一下网上流传的JavaScript搞笑图 我们在使用云开发来开发微信小程序的时候,会经常遇到JavaScript小数计算精度失 ...
- TVP专家眼中的云开发:定是未来,尚不完美
TVP专家眼中的云开发:定是未来,尚不完美 C++之父 Bjarne曾说,"世界上只有两种编程语言,一种被人骂,一种没人用".这句玩笑话道出了软件开发行业的真谛,不怕被人吐槽,就怕 ...
- FEDay会后-Serverless与云开发,可能是前端的下一站
进化本身是生物体与环境之间持续不断的信息交换的具体表现. -- 摘自<信息简史> 很荣幸在9月21号成都举办的第五届FEDay上作为讲师为大家分享腾讯云在近两年推出的云开发相关的技术和知识 ...
- Serverless介绍篇(一)云开发在Serverless方面取得了怎样的新成果?
过去几年间,Serverless 发展迅猛,与其相伴的还有从小程序.移动端等到前后端一体化的演进与实践,也正因如此,从云计算到前端,众多开发者都极为关注.本文介绍了腾讯云CloudBase 的 Ser ...
- 聚焦“云开发圆桌论坛”,大前端Serverless大佬们释放了这些讯号!
4月14日,由云加社区举办的TVP&腾讯云技术交流日云开发专场,暨"腾讯云-云开发圆桌论坛"在北京.深圳两地同步举行. 当天下午,一场主题为"基于大前端和node ...
- 热度3年猛增20倍,Serverless&云开发的技术架构全解析
『 作为一个不断发展的新兴技术, Serverless 热度的制高点已然到来.』 或许,Google Trends 所显示的 3 年猛增 20 倍的" Serverless " 搜 ...
- 支付宝小程序云开发(Serverless)
支付宝小程序云开发(Serverless) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 一.在支付宝账号里面开通小程序云服务 ...
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...
- 用小程序·云开发两天搭建mini论坛丨实战
笔者最近涉猎了小程序相关的知识,于是利用周末时间开发了一款类似于同事的小程序,深度体验了小程序云开发模式提供的云函数.数据库.存储三大能力.关于云开发,可参考文档:小程序·云开发. 个人感觉云开发带来 ...
随机推荐
- 容器时代的持续交付工具---Drone:Drone介绍与安装
Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ...
- Django-中间件-csrf扩展请求伪造拦截中间件-Django Auth模块使用-效仿 django 中间件配置实现功能插拔式效果-09
目录 昨日补充:将自己写的 login_auth 装饰装在 CBV 上 django 中间件 django 请求生命周期 ***** 默认中间件及其大概方法组成 中间件的执行顺序 自定义中间件探究不同 ...
- Redis数据库之编程项目及练习资源
实训项目 : NOSQL数据库设计与应用实训 注释: Redis数据库编程项目示例及练习资源 项目源码获取: https://pan.baidu.com/s/19f0F7cmx ...
- springboot系列之03-使用IDEA完成第一个示例程序
未经允许,不得转载 原作者:字母哥博客 本文完整系列出自:springboot深入浅出系列 一.使用IntellijIDEA建立第一个spring boot 项目 通常只有专业版付费版才默认带有Spr ...
- Player的跟踪狂 -- Camera
P.S.很多游戏里的Player都会设置的被跟踪,是人性的扭曲,还是XXX,正在解密. 第三人称视角 camera紧跟player背后(角度随player改变) using System.Collec ...
- 阿里云服务器CentOS6.9安装SVN
1.安装SVN yum -y install subversion 出现Complete表明安装成功 2.创建SVN仓库目录 mkdir -p /data/svn/repositories/yyksv ...
- SUSE CaaS Platform 4 - 简介
SUSE CaaS Platform KUBERNETES - 面向企业 SUSE CaaS Platform 是一款企业级容器管理解决方案,可让 IT 和 DevOps 专业人士更轻松地部署.管理和 ...
- 1. SOFAJRaft源码分析— SOFAJRaft启动时做了什么?
我们这次依然用上次的例子CounterServer来进行讲解: 我这里就不贴整个代码了 public static void main(final String[] args) throws IOEx ...
- linux shell 统计当前目录下的文件个数
shell 统计当前目录下文件个数,使用管道组合命令: ls -1 | wc -l 解释: ls -1 表示一行一个列出文件名. wc -l 表示打印统计的行数. 两个命令通过管道连在一起表示打印列出 ...
- robotframework框架 - seleniumLibrary 关键字解读-全攻略
在robotframework当中,要实现web自动化,则需要使用SeleniumLibrary这个库. 目前版本中,有180+关键字.随着版本的更新,关键字的个数和名字也会有所变动. 在网上没有找到 ...