小程序云发展初探
1. 概念和背景 2. 云功能 3. 业务重点 云开发解决方案如何与传统后端协同工作?它们解决了哪些问题,又带来了哪些负担?有哪些推荐做法? 4. 总结
1. 概念与背景
传统开发和云开发有什么区别呢?类比开一家零售店,传统开发就是:租一个店面,进货,然后销售;云开发就像加盟一家连锁店:租一个店面,选好服务商,从装修风格到产品体系什么都不用考虑,就搞定了。
减少的是运营成本,用互联网术语来说叫运维成本。比如那些让老板很痛苦的事情:买服务器、宽带流量CDN、数据库等等。
那些让工程师头疼的存储:冷备、热备、弹性伸缩、负载均衡等等,不再需要考虑。
2019年也是云原生应用开始爆发的一年,早已涉足其中,推出相关产品,手机上就能玩英雄联盟了,这个是题外话,有兴趣的可以自行关注。
小程序云开发是将微信应用程序短小、快速、无需下载、用完即走的特点与提供存储、数据库、云函数功能的云服务商腾讯云结合起来的一种新模式。
2.云功能
A.广义云函数的特点:
B.微信云功能组成:
js逻辑代码
触发方式:定时触发、事件触发
配置项
4.相关支持
C.云功能适用场景:
3. 业务重点
有哪些陷阱?
云开发解决方案如何与传统后端协同工作?使用它们有哪些痛点?
优缺点都有什么?
解决了哪些问题以及存在哪些局限性?
建议做法
有哪些推荐的做法?
云开发解决方案如何与传统后端协同工作?
如果要把云函数和后端混合起来,就要把业务划分得更细,考虑哪些业务可以脱离传统后端,完全独立出来。其实数据是相互关联的,很多东西很难完全分开,必然会导致数据冗余。在这种不合适的情况下,哪些函数适合云开发?
请求频率较低,用户60%的时间不是在看个人中心,而是在看程序的其他功能页面。
单个任务的资源要求较低,且个人中心的数据相较于主业务复杂的数据结构更加简单、体量更小。
个人中心的很多数据永远是被动更新的(即其他业务流发生变化后个人中心才更新),而不是主动更新。个人中心就像订阅者,当发布者更新时,才会跟进并更新相关信息。
从这些角度来看,个人中心的功能都适合用云函数来实现,稍有不同的一点是,有些云函数应该写在其他业务功能点上,用来触发相关数据的更新,而不是向后端发送传统的AJAX请求。
如果能避免数据库数据的相关性,将数据结构设计成能使用多个数据库进行“分库”存储,以降低数据的相关性,那么使用云开发和后端配合也是可以的,但那样会让整个结构又变得复杂起来。
可见使用云开发是可行的,但需要做更多的前期工作,而且会有难以预料的问题,探索新事物总是需要踩坑的~
解决了哪些问题、又有哪些负担?
传统开发中联调时间和责任界定的问题
传统数据交互方式:前端->
AJAX
-> 后台 ->
JSON
-> 前端。所有跟数据相关的,服务器、数据库、存储都在后端。俗称:前后端分离。但这样带来的问题是,前后端联合调试的时候(前端想要这样的数据结构,但后端觉得不好,双方都可以定义数据结构和数据内容),难免会有分歧,出了问题之后追责就比较麻烦,可能出现双方都泼脏水的情况。
运营和维护成本

有了服务商提供的基础服务能力的支持,使用云开发时,你不用担心任何运维的问题,云服务商已经帮你搞定了一切。
性能改进和自然身份验证
a.使用云开发之后,所有静态资源都带入CDN,请求和返回也会被服务商进行优化,增加程序数据在网络传输时的速度。
b.云函数会直接返回
和
,不再需要传统的请求授权,整个流程不会与原有的后台服务冲突。
下面是调用云函数获取的两个ID。
自然身份验证!=无需身份验证,我们来看看幕后的工作。
不可避免的学习成本、引入云开发的沟通成本、可能存在的部分数据冗余、开发效率的略微降低。
数据库操作只能通过云函数进行,并且云函数每次更新都需要手动点击上传,这是一个繁琐的过程。
陷阱和解决方案:
a.基于
节点
数据操作都是异步的,最好使用
和
,
语法糖,而不是
CB
。
b. 权力结构只有四种类型:
权限结构图
简单的四种结构无法满足某些业务的所有需求,需要代码级别的控制。比如在做书柜项目时,想要设置书柜里的书籍是可以被第三方查看还是不能被第三方查看。这种情况下只能将集合里的数据设置为“只写给创建者,所有人都可读”,并通过代码来控制是否显示具体信息,比如增加一个字段来控制。
c. 不可预见的陷阱(
)
有哪些推荐的做法?
腾讯相册小程序
云开发 + 传统后端服务:使用云函数作为中间路由器,然后
,转发至原服务。
此前腾讯照片将评论功能接入了云端开发,但对于一些敏感操作,比如删除、编辑评论,请求会发到云函数,然后云函数会将用户信息转发到相册原后台,再返回用户是否有权限告诉云函数,如果用户有权限,则会在云函数中删除该评论。
猫眼电影活动页面
云端开发+传统后端服务:同样是和猫眼运营工具的后端服务进行对接,在小程序上读取对应的配置,进行活动页的配置。具体流程还是很复杂的,大公司的基础服务设施比较齐全,很多东西不需要从头写。
腾讯乘车码
4. 总结
现阶段,云开发更适合个人开发者开发较轻量级的小程序。如果业务逻辑复杂,建议不要使用传统后端配置的云开发。或者使用云函数对原有服务进行转发,实现现有功能的微编程。这些方式都是推荐的。当然,如果能解决数据相关性的问题,云开发和传统服务一起使用也是可以的。