使用 Serverless,我们不需要再过多关注服务端的运维,不需要关心我们不熟悉的领域,我们只需要专注于业务的开发、专注于产品的实现。我们需要关心的事情变少了,但我们能做的事情更多了。
其弹性扩缩容的优势,能大大降低运营的复杂度和成本,目前关于serverless的研究方向,基本都是朝着这个优势展开的。
而serverless在看似无关的前端也悄悄掀起了技术革命,让基于node.js的全栈开发得到了大大的推进。腾讯的云开发,就是瞄准的这个方向。
全栈开发需要打通前端开发、后端开发、数据库设计。通常来说,数据库设计是交给后端开发负责的,而前后端的技术栈差异巨大,要两端专精难度非常的高,目前由于人力有限,我们部门现在在推广全栈开发的培养,然而实际体验过的同事都有着痛苦的体验,一个前端专精的同事开发后端,和一个后端专精的同事开发前端,都会感觉到虽然勉强能做,但是效率大打折扣,并且代码质量低下。
腾讯的拳头产品,微信小程序,近年来非常流行,其本质是一个前端技术栈。由于纯前端的静态产品局限是非常大的,其最终还是要配合后端运行。由于小程序规模一般来说都不大,可以单人独立开发,但是前后端技术栈的门槛,劝退了一大堆开发者。
腾讯发现了这个问题,知道其中存在着巨大的潜力,因为有node.js的存在,前后端是可以统一技术栈的,nosql的数据库存储,用的也是前端最常用的数据结构json结构,如果能整合这些力量,就可以直接将小程序开发者直接升级成全栈开发者,而腾讯云开发已经做到了。
微信开发者工具是用于小程序开发的,本来只是一个前端开发工具,但是它现在整合了云开发,就升级了!
打开云开发的控制台,可以看到serverless服务都具备的运营分析功能,这些调用情况可以让你掌握产品的运行情况,以及作为费用结算的依据。
整个云开发整合了nosql数据库、对象存储服务、云函数服务。申请云开发环境只需一键申请即可拥有这些完整的后端服务套餐,并提供2套环境,分别作为生产环境和开发环境。
数据库
在serverless推动的node.js全栈项目中,使用nosql数据库,我感觉是很明智的。
1.前端开发者会非常熟悉这种数据结构,减少了很多数据结构转换的步骤;
2.灵活的存储结构,也让快速调整迭代的项目不会被数据结构调整绊住快速的步伐;
3.severless是无状态,因为每次函数执行,可能使用的都是不同的容器,无法进行内存或数据共享。如果要共享数据,则只能通过第三方服务,比如Redis等。因为我们事先并不知道要共享的数据的结构,所以nosql数据库作为共享数据的第三方数据,是非常合适的。
这个nosql的数据库是腾讯自研的,提供了非常丰富的查询过滤接口。基本上其他nosql数据库支持的查询过滤方式,它都有支持。
https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/Cloud.database.html
由于小程序具有O2O的场景,这个数据库甚至贴心的提供了数据库地理位置结构集API,比如这个geoNear接口,会让按距离排序的操作,变得异常简单。
Command.geoNear(options: Object): Command
按从近到远的顺序,找出字段值在给定点的附近的记录
存储
云开发控制台提供可视化的存储管理,可以通过可视化操作上传下载管理文件。
提供api接口,可以通过api上传下载,获取临时链接。
文档简单,服务可靠。
云函数
在公司使用过OpenFaas开发,serverless不是无服务,整个开发流程还是少不了打包、构建、上传仓库、部署这些流程。
serverless的开发调试其实说起来非常恶心,本地开发完代码了,要部署到环境才能验证调试。遇到难调试的功能时,反复走完整个打包、构建、上传、部署的流程,会让开发体验非常糟糕。如果要是连日志都拿不到,就更惨了(目前那个OpenFass环境看日志很麻烦)。
腾讯云开发显然意识到了这一点,除了具备完善的日志功能,还提供了本地调试,并且打包、构建、上传、部署的流程也都隐藏在一键之下。
场景1——普通民众:我有一个好想法,就差一个写代码的了。
场景2——前端开发:我有一个好想法,就差一个搞后端的了。
场景3——后端开发:我有一个好想法,就差一个搞前端的了。
上面这3个场景很经典吧~但随着云开发的完善,在serverless加持下的node.js前端开发的持续发展后,场景2将会有所改变,
前端开发:我有一个好想法,我马上就可以去实现它!