前言
近年来,前端开发一直都是热门话题,相关的从业者也越来越多。以前的前端仅限于还原设计稿、做些网页交互等,如今的前端变化太快,出现了很多细分领域,比方说可视化、小程序、音视频等等。在实际开发中,前端很依赖其他职位的配合,比方说UI、后端、产品、测试等,设计稿、后台数据、产品交互等,都不能自己搞定。很多前端也意识到了这个问题,发现只专注前端领域是不行的,于是纷纷从前端转向全栈。可要想自己搭建服务器环境、数据库这些,仍然需要学习大量的后端、运维知识,这样的学习成本无疑是很高的。聪明的前端大牛们,想到了一个让前端更快成为全栈的方式,那就是 Serverless。用 Serverless 云开发的方式,来替代传统开发,可以让开发效率大幅度提升,前端工程师只需要专注于自身业务,不用特别在意服务器环境、数据库等问题,简单几个命令,就能轻松让业务上云。
我在上周末的时候,参加了前端早早聊大会第六期,学到了腾讯、阿里巴巴大佬 Serverless 开发的宝贵经验,在这里分享给各位掘金的朋友。
Serverless 云开发实际案例
先说说深圳机场这个例子,这个项目有Web和小程序双端,应用层部署在云端,用 Serverless 框架即可快速搭建。云服务也十分齐全,域名、存储、数据库应有尽有。下图是该项目的架构图,小程序端、应用层、云服务一目了然,理解起来也会轻松很多。

由于小程序在微信环境中运行,而微信开发的环境比较特殊,在小程序实际开发过程中,往往会面临用户信息授权、安全校验等多个环节,传统的手动写后台配置十分繁琐。有了云开发这些现成的服务,上线部署、日志检测都很方便,前端开发工程师可以在没有后端、运维的情况下,独自搞定项目开发的全过程。
除了深圳机场案例,还有很多公司也用到了腾讯云云开发,下面是一些其他案例,感兴趣可以自行搜索。

Serverless 可以用来做什么?
准备工作
腾讯云云开发 Cloudbase 可以帮助开发者,借助 Serverless 轻松开发各类应用。它支持市面上主流前端框架,比方说多端的 Taro,这样在掌握 Taro 框架的基础上,针对云开发平台做一些特定的命令配置,即可快速开发一个小程序。下面以 Hacker News 项目为例:

通过上述几个命令后,就能生成模板目录和文件,配置自己小程序的 appid,即可在微信开发者工具中预览体验。
光有了页面还不行,如果一个网站,数据内容需要频繁更新,那么内容管理系统是必不可少的。云开发近期推出了 CMS 插件,无需开发就能配置生成内容管理页面,而且支持多端适配,还有系统管理员、运营者的用户访问控制。有了这样的扩展能力,可以很方便的对项目内容进行统一管理。

云数据库调用
由于我们没有后端人员,因此可以用云开发的云数据库,在实现对数据库的 CURD 操作。数据库可以通过官方提供的 @cloudbase cli 创建,也可以同 vscode 插件,或微信开发者工具来控制。数据库用的是非关系型数据库,跟 MongoDB 很像,这对前端来说简直不要太友好。整体操作下来,你会有种熟悉的感觉。

借助云开发实现微信消息订阅
这是 2020 年年初官方提供的新能力,小程序可以以订阅消息的方式,主动给用户推送信息。
传统的方式,需要后端获取微信开放平台 API ,小程序端还需要跟微信中间件做通信,中间件里面还有复杂的缓存问题。如今我们有了新的选择,用云开发的方式,直接调用微信开放平台 API ,省去了前端、后端、微信开放后台三方对接的各种麻烦,大幅度降低前后端联调成本,也减少了出错的可能性。

云开发 VS 传统开发
传统的开发模式,大多是瀑布模型,从需求到设计,再到研发测试,到最终的部署上线、维护这样子。而这种模式的缺点很明显,每个阶段完全固定,前面的阶段走完后才可以进入下一阶段,如果某一个阶段出现问题,越到后面问题会越来愈大,导致开发的项目质量难以保证。这样的缺点在互联网产品中,会体验的十分明显。无论是需求的不确定性,还是后期的修改维护,都会给开发人员带来很大的工作压力,而且开发问题的解决方案也不是一蹴而就,需要反复排查、试错得出正确的结论。
对开发人员来说,一方面需要理解业务需求,做出符合要求的产品;另一方面要解决开发遇到的各种问题,包括不限于代码逻辑错误、环境配置问题、线上部署问题、多平台兼容性、以及匪夷所思的未知问题等。
而云开发的出现,可以让前端开发更多的关注自身领域,关注业务需求的实现,像数据库、服务器运维这些可以不用关心,这些云开发都已经帮你做好了,基本可以做到开箱即用。借助云开发的能力,以往需要前后端共同配合开发时长为一周的项目,也许一个前端 3 天内就能搞定并发布上线,这样开发效率的提升,是前所未有。
下图就很好的对比了传统开发和云开发模式的对比:

Serverless 是银弹(万能药)吗?
很遗憾,这个问题的答案是否定的,目前 Serverless 也好,云开发也好,都只能解决一些通用的业务场景,没办法涵盖到方方面面。举个最实际的例子,目前公司项目都是传统开发模式,有自己的域名、服务器、证书、数据库等等,要想全部迁移到云开发,着实有些困难。而且对于技术研发实力较强的公司来说,他们更希望把数据掌握在自己手中而不是云厂商,因此很多公司依旧没有跟进 Serverless ,而是照旧用公司原先的技术体系。
不过还是有很多对前端技术有追求的公司,采用了混合云的方案,简单说就是业务一部分上云,一部分不上云。这样可以做到雨露均沾,比方说活动类的 H5 有很像的时效性,而且实现起来也不复杂,那么这样的就完全可以放在云开发平台上。但有些核心的业务,例如金融行业的支付系统,可能就不太适合上云了。
对于前端开发工程师来说,我觉得还是有必要学习了解 Serverless 的,它可以帮助你快速开发一个完整项目,更专注自身领域知识,同时也能有更多的精力关注业务需求本身,让你在DevOps、敏捷开发、云计算三剑客逐渐流行的时代,大放异彩。
总结
以上内容,来自《前端早早聊大会第六期》讲师 @腾讯赵兵 的分享,先是花费较小篇幅,进行了基于 Serverless 的腾讯云云开发的案例介绍,后面通过实战代码操练的方式,讲解了 Serverless 云开发的常规操作。讲师的逻辑十分清晰,整体听下来很顺畅。其他的讲师分享也非常棒,由于信息量太大,我还需要花些时间理解消化。
上面很多观点是听了讲师分享,再我结合个人经验得出的,可能会有很多不完善的地方,还请见谅。
通过近期的参会和平日了解,我看到了 Serverless 的发展趋势,以及对前端开发的深远影响。在这里想通过此文分享给正在阅读的你,愿我们在前端路上,能够更加顺利的走下去,活成自己想要的样子。
前端早早聊大会目标成为用得上、听得懂、抄得走的技术大会,计划 2020 年办 >= 15 期,由前端早早聊与掘金联合举办,前端早早聊大会行程动态、录播视频/PPT/讲稿资料下载请关注 「前端早早聊」 公众号跟进。
5 月 30 日举办第七届 - 前端如何搞微前端,报名请戳:www.huodongxing.com/go/tl7 ,海报及讲师行程如下:

5 月 31 日举办第八届 - 前端跳槽的新攻略,报名请戳:www.huodongxing.com/event/25439… ,海报及讲师行程如下:
