2020 年 11 月 29 日,腾讯 2020「小程序·云开发」技术峰会在北京顺利召开。本次峰会以“重新定义开发”为主题,深度聚焦小程序云开发的创新成果与实践案例。以下为独立开发者、2020 年小程序云开发挑战赛职业赛道一等奖作品作者陈宇明的演讲实录:
大家上午好,很荣幸来参加到小程序云开发技术峰会。今天我要和大家聊一聊我的一个云开发实践案例。按照国际惯例,我先来自我介绍一下。我叫陈宇明,之前做过几年移动端开发,无后端开发经验。目前是一名项目经理。
以上是我的工作经历,除此之外,我还是一个比较喜欢折腾的人。
参加了小程序云开发挑战赛并获得了职业组冠军
在做移动端开发时候,写过一个 Android 开源库 BRVAH,目前累计 star 21k。
以及我还喜欢记录与分享,同时还是公众号「码个蛋」的主理人。
说完自我介绍,再说说我的项目起源:
因今年疫情,线下多种场景需要登记,且大多是接触式登记,为了避免接触风险。所以做了这款「群登记助手」,实现零接触的云登记。那么它有什么功能呢?
主要分为三个核心模块。
第一,作业登记。主要解决线上交作业,自动统计提交情况,批改及评价作业;且支持图文、视频、语音多种作业类型。
第二,报名接龙:支持健康信息接龙、班级接龙、报名接龙,可自定义收集表单项,及在线导出数据。
第三,出入登记:用于社区、小区、医院、学校、公司扫码出入登记防控管理,做到无接触式登记。
到目前为止这款产品一共为 12 万收集者赋能,帮助他们收集登记信息。累计收集近 600 万份登记数据,达到数千万次访问,实现无接触登记,将接触风险降至为 0
接下我们来看看这个项目背后的技术架构,首先小程序端采用的是原生的写法,自己封装了一些常用组件。然后还抽出了一个 API 层,专门用于云函数的管理。举个业务场景:学生需要登记作业,老师要求上传作业照片。这个时候小程序直接调用云存储的接口。进行图片存储,存储成功后获取到一个图片地址。小程序在用这个地址请求云函数,存储到云数据库当中。在这个过程中为了内容安全得到保障,还会用到云调用的文字内容检查接口和图片内容检查接口。除此之外还用到了云扩展的一些应用。如:
内容管理系统:方便开发人员和内容运营者,随时随地管理小程序云开发内容数据。
博客系统:用于作为官网,记录并分享产品迭代及产品使用教程。
图片处理:主要是用它的快速压缩模版,为了减少 CDN 流量消耗。
说完基于云开发的技术架构我们再来看下,这套架构的整体性能表现,这是小程序后台的性能体验报告。无论是启动性能,页面加载性能,还是接口性能,网络性能及多媒体性能。
表现都非常不错的,综合性能评定为优秀。说完性能表现,我再说说的技术选型的心路历程这个款产品想法诞生的时候,我其实是有一些顾虑,主要因为两个方面。
第一,刚才在自我介绍的时候,其实有提到过。我没有做过后端开发,也不懂服务器运维。
第二,域名备案,做过小程序开发的开发者们应该都知道小程序后台接口请求需要配置 hppts 域名才能请求成功。然后备案域名至少需要一周左右的时间。通过这两个问题引发了我的一个思考。就是我怎么样才能更快的上线呢?不懂后端开发,有想过找一个后端开发合作
先不说别人愿不愿意,就算愿意,沟通成本也非常高。域名备案时间难道只能等?大家要知道,一款产品上线速度十分重要。特别没有资源的独立开发者,上线的时间越早越好,才能获取到更多到用户。还好当时脑子里突然灵光一现,想到了云开发解决方案。它完美的解决
了我的刚提到的两个问题。
第一,无需服务器搭建和运维。因为云开发是云端一体化的后端云服务 ,采用 serverless 架构,免去了服务器搭建和运维。
第二,它无需配置业务域名,直接调用云函数里面即可。解决域名备案等待时间过长的问题。我只需要做好业务代码实现就够了所以我选择了云开发。最后很快就上线了。
然后我们来看看速度效果。第一版,我 1 个人仅用了 3 天时间。并且这 3 天,还是下班之余的时间。从 2 月份这个项目启动,到现在经历了 9 个多月的时间,一共累计 40 多次迭代。云开发在这段时间里也在不断的优化。
说完技术选型的心路历程,再说说我在实践中的小插曲
首先我们可以看到这幅图,CDN 流量消耗和存储读请求次数特别大。原因是因为在大量的登记里面上传图片需求非常高频,加上当时群登记助手日活高达 4w。我原本采购的 CDN 3(2199/月)套餐完成抗不住这个 CDN 消耗。所以我直接升级到旗舰 3 套餐。这个套餐每月 4699/月。作为一名独立开发者来说,这个成本非常高。
于是我在「微信开放社区」进行了提问,我说什么时候能推出按需计费?当天就得到了官方人员的回复,已经支持了。然后我立马切换完成按量付费模式后,效果很明显。成本直接从每个月 4699 降低到了 2 千多。整体费用降低了 1 倍,但是这成本还是有点小贵。后来经过云开发团队的不断的迭代优化。推出了云扩展的【图片处理】服务。我使用了图片处理服务的快速压缩模版,使得成本再一次的降低。上次是 1 倍,这次是 10 倍,从原来的 2249 变成了现在的 2 百多。这个成本,可以说很低了。
说完小插曲,我相信你一定迫不及待的想要学习云开发了。
那我就聊聊快速上手云开发的小建议。推荐你 3 个官方学习网站。
第一,官方文档,写的非常详细。每个都有案例,代码 copy 过来改一改参数就直接能用,相信这让会让你更快的上手实践。
第二,如果你不喜欢看文档,腾讯云大学还出品了云开发的优质视频教程。
文档可以作为类似字典的存在,用于查询具体技术的细节。
第三,其实就是我刚有提到过的「微信开放社区」。我在开发群登记助手的时候就在这里提了不少问题,问题响应速度非常快。
还有就是无论是文档还是教学视频,总会有些无法覆盖的问题。这个时候遇到问题就到社区提问。这里除了有很多官方人员回答,还有很多优秀的小程序开发者也会在这里去解答问题和分享一些开发经验,社区整体氛围很不错。我在这个社区也比较活跃,回答过上千个问题,在这里我想说两个提问技巧,能有效提高你解决问题的速度。
第一,提问之前先搜索,也许你的问题已经有解决方案了,就没必要再次提出重复的问题。
第二,提问尽量把问题描述清晰一些,如果有关代码的问题,最好附带上代码片段。这样便于回答者更快速解答问题。
最后说下自己的感想。我相信每个程序都有想做一款好产品的梦想。云开发就像这个梦想的助力器。在我们开发产品过长中,极大程度地降低了开发成本。感谢云开发,让曾经不可能一个人能完成的任务,现在变得十分简单。
云开发,让开发者成为真正的全栈工程师。我的分享到此为止,感谢大家的聆听。
评论