介绍
今天是“世界读书日”,通过读书,我们不断拓展认知,磨练思想。随着时代的发展,技术的进步,我们的阅读习惯也发生了很大的改变,我们渐渐习惯了不同的方式,而微信读书给电子书的受众提供了很大的帮助。今天我们就来聊聊云开发在微信读书中的运用。
2019年10月19日,在首届“小程序·云开发”技术峰会上,微信读书小程序团队分享了云开发在业务中的应用,详细介绍了小程序·云开发如何在为开发团队优化组织分工的同时,让开发更加敏捷,提高开发效率。本文是对分享内容的详细介绍。
2019年10月19日,由腾讯云和微信小程序团队联合举办的“小程序·云开发”技术峰会在北京举行。会上,微信读书小程序团队姚海波作了题为《云开发模式下的敏捷开发与组织分工》的精彩分享。
▌微信读书小程序介绍
微信读书小程序承接了App的核心阅读功能,同时也是App对外分享和运营最重要的渠道,上线10个月来,已累计吸金数千万,日均PV过千万。此外,基于“小程序·云开发”带来的效率提升,团队助力微信读书小程序上线10个月来共发布349个版本,开发效率分别是对应APP和H5的4倍和2倍。
▌微信读书小程序运用了云端开发的哪些能力?
在使用云开发开发微信读书小程序的时候我们主要用到了云开发的云函数、云存储、云数据库。
云函数是这个小程序中使用最为广泛的一项,可以理解为运行在云端的代码,有微信的私密认证,不用担心安全问题,而且通过L5、HTTP协议对接腾讯内网。也就是说,相当于我们调用云函数,云函数再调用微信读书的后台,这样这一系列调用过程都可以在内网运行,节省成本。
在云存储应用方面,CDN主要用于内容分发,而云数据库,即云端的数据库,作为数据存储的工具。
▌为什么选择云开发?
那么,为什么要选择云开发来开发微信读书小程序呢?
主要有两个原因,一是团队缺乏小程序开发经验,积累的Node框架也需要更新,导致上线流程比较复杂,速度不是很快;二是团队缺乏人手,这也是比较客观、比较难解决的问题。
云开发恰好完美解决了这两个核心痛点:
首先,云开发入门成本极低,有利于快速纳入开发流程并投入使用;其次,云开发与小程序完美结合,原生性极强,利于小程序快速开发。
第三,云开发团队的服务特别精准、周到,问题响应特别快,特别是我们接入后反馈了很多个性化的问题,云开发团队都及时精准的帮我们解决,用户体验非常好。
最后,同样很重要的一点就是云开发服务非常稳定,这也是我们坚定不移选择云开发的原因之一。一个业务的快速发展离不开稳定的服务,优质的内容如果缺乏持续稳定的服务支撑,也很难成为真正的爆款,云开发很好的规避了这个风险。

另外我们还考虑了性价比问题,经过评估发现使用云开发比自己搭建Node服务器要划算很多。
因此,经过综合考虑,我们毫不犹豫地选择了云开发作为微信读书小程序的开发支撑。
▌云开发的具体应用——以“读书团队”为例
了解了云开发的能力,并选择使用之后,云开发在微信读书小程序中应用在什么场景呢?
其实这个小程序的绝大部分功能都是使用云开发开发的,这里我们以三个典型的功能和场景为例,一个是“答对了”活动(以过关的形式,通过答题解锁奖励,科普科普知识的活动);另一个是“翻翻看”活动,这也是我们曾经做过的一个很火爆的活动,当时因为服务问题没有开发出来,但是我们通过云开发的方式,成功迁移到了小程序上。
还有“读书组队”功能,就是可以和好友组队,通过读书、互动等方式赚取组队积分,获得奖励的活动。在技术实现上,这个功能会把数据调用到后台,独立结合了云函数、云存储和云数据库,基本不需要后端部署。云函数+云数据库的模式更适合纯独立的业务,比如读书组队、竞猜游戏等。未来我们会逐步加入原有自建NODE模式,用云函数和云开发来承载。
使用云开发的逻辑如下图所示,从小程序获取的数据通过云函数、云存储等功能传输到后端,并生成业务开发数据的报告,相当于从后端到前端的一套完整的服务。
▌云端开发带来的优化与改变
云发展给我们的业务带来了哪些优化和改变?
首先最直观的就是功能上线和迭代更快了,以前上线之前要经过提单、回归、测试等一系列漫长的过程,而有了云开发,我们只需要在IDE(集成开发环境)里上传界面就可以了,大大节省了时间和成本。
第二是云开发的便捷性。以前开发的时候,由于业务集成在一个IDE中,小程序、Node、后端往往有自己的项目,需要三个项目的负责人一起调试,沟通成本很高。但是使用云开发之后,一个IDE就可以搞定一切。
第三是服务的稳定性大大增强,自从使用云开发以来,即使运营活动引起数据发生重大变化,也没有出现宕机的情况。
最后,云开发大大节省了人力成本,优化了分工。云开发不仅带来了业务的优化,也解放了开发人员的双手。使用云开发之后,以前需要一个前端、一个Node、一个运维同学的工作,现在一个开发人员就可以完成。
另一方面,使用云开发后,开发者接触的技术更加广泛,视野更加开阔,增加了学习和提升自身技术水平的机会,一定程度上可以避免开发者在舒适区停滞不前。例如,前端开发者除了调整样式、更改界面,还可以接触数据分析、服务资源利用等全栈问题。