腾讯云和微信推出更快速的小程序开发平台,微信读书小程序作示范
腾讯云副总裁刘颖将腾讯云定义为微信的一个助手,腾讯云面向微信生态开发者输出的技术解决方案包括“小程序·云开发”、小程序音视频直播、小游戏联机对战引擎等,腾讯云与企业微信的合作也会在未来几个月内公布。
今日,腾讯云和微信小程序团队今日在北京组织了一个 “小程序·云开发”技术峰会,向微信小程序开发者阐释了“小程序·云开发”这种全新的serverless开发模式。
腾讯云副总裁刘颖介绍道,作为微信团队和腾讯云联手打造的小程序基础能力,“小程序·云开发”整合了腾讯云的基础能力和小程序开放能力,以及超过150个开放接口,能够让开发者在开发小程序时从繁冗的开发配置工作中解放出来,仅需关注业务代码逻辑的编写。和传统开发模式相比,“小程序·云开发”性能提升42%,打造小程序产品的步骤缩减至3步。
在基础能力之外,“小程序·云开发”还正在进一步封装腾讯云、微信平台的其他能力,提供扩展能力,包括AI、音视频、微信支付和订阅消息。微信小程序开放业务负责人认为,“小程序·云开发”不只是后端服务,更是包括小程序、公众号、微信支付在内的微信生态开发的解决方案。
以微信支付为例,原本涉及资金安全、开发复杂度较高的支付能力,经过封装后开发效率将大大提升。上线不久的小程序的“订阅消息”能力,通过云开发的整合,也只需要简单的几个云函数就能实现这个功能。
目前已经有超过23万注册账户,50多万开发者在基于“小程序·云开发”快速开发小程序。腾讯云对外公布的“小程序·云开发”的先行者和优秀实践者包括白鹭引擎、千墨科技、腾讯新闻、即速应用、微盟、唯品会、猫眼、香格里拉、微信读书和微信支付。
以微信读书小程序为例,其通过云开发实现敏捷开发,优化组织分工,提升开发效率。微信读书小程序负责人姚海波指出,通过“小程序·云开发“,前端代码和服务端代码共存在一个项目中,同样的技术栈、同样的IDE环境,可以调试开发更高效。同时,云函数支持动态扩容,可以完美支持瞬间增长的运营类业务,为业务的快速增长提供了保证。
微信读书小程序负责人姚海波在腾讯云与微信小程序团队联合举办的“小程序·云开发”技术峰会上详细分享了云开发如何让微信读书小程序实现敏捷开发的。以下是姚海波的分享内容。
01 | 10个月发布349次版本做前端之后内心比较焦虑,大家看刚才的头像再看看现在的我就知道了。做前端苦,要学的东西很多,似乎永远都学不完,框架层出不穷。希望参加完今天的分享之后对前端开发有所帮助。不过我们引入云开发后,焦虑的确再减少。
以下这是我今天分享的几个要点,微信读书的简介,小程序的敏捷开发之道,云开发在小程序当中的应用,以及我们在使用云开发过程当中小程序团队如何做分工。
说起微信读书在座应该很多人用过或者听说过这个应用,我非常高兴,一毕业就加入到微信读书这个优秀的团队,而今年也是微信读书的第5周年了。在今年之前我一直是负责微信读书IOS客户端的开发,从今年开始我们决定发力小程序,所以微信读书小程序从上线到现在也是仅仅经历了10个月而已,在这10个月之内我们做了非常非常多的事情,也取得了不错的成绩,用户过千万,日均PV过千万。
从迭代速度上面来看,我们根据昨天的统计,我算了一下10个月以来,我们发布了349次版本。6月份的时候是最频繁的一个月,对比小程序、H5、APP来说,H5迭代了18个版本,小程序迭代了65个版本。APP要4个开发同学同时开发8天才能发布功能,H5稍微快一点,2个开发同学用6天的时间可以发,而小程序我们用了1.5个人,花了5天的时间。按照这个数字来算一下开发效率,假定APP是100,我们认为H5开发效率是267,小程序开发效率是427,基本上小程序效率是APP的4倍,是H5的1.6倍。
我们如何做到如此敏捷开发的,虽然都是跨平台,但是跟H5相差都挺大的,我总结有三方面原因,第一是自动化,第二是完善的监控与告警,最重要的是我们从去年9月份开始了解到云开发,从大概今年3月份尝试引入云开发,这让做前端开发的工程师非常受用,终于不用想那么多,搞那么多的事情了。
我们是怎么做自动化的?我们知道小程序开发流程至少有五步,第一步要做代码开发、第二步要编译、第三步要上传、然后体验和测试、最终是发布。这五个阶段中开发这一步是必不可少的,没办法自动化,当然我们最终目标最好是能做到完全的自动化,例如产品输入一个需求,立马业务代码就自动生成、自动上线,这是我们最期望的。如果真做到这一步,那老板可能会对我们说小程序三个人是不是太多了,工作不够饱和吧,要不明天你就不用来了。
我们能做到什么样的自动化呢?编译、上传、测试这三步其实是大有可为的,而且是周期最长的三步。
像我们做了一套完整的持续集成系统,相当于把自动化过程全部集成起来,把仓库拿到代码提交之后就会跑代码检测,再去功能单元测试,功能自动化测试,再给这个小程序打一个版本号,通过用微信开发工具的自动上传,最后生成一个二维码交给产品体验。这个流程已经做到了完整的自动化。当然小程序本身有一个登录30天就过期的周期问题,所以我们还会做一个自动续期的功能,会弹一个二维码,扫一下就可以了。还有一个群机器人,如果出现流程中断,我们通过这个机器人来完成。
还有实时监控和与告警,所有开发都会知道这个东西很重要,但是从我们开发的经验来看,最终能做得好还能够坚持下去的并不多。所以从一开始我们要规划得特别严格,首先就要有一个很好看的图表,意味着这个东西能不能坚持下去,能不能让所有的人及时发现问题。所以我截图了,来看一下第一个是小程序版本的覆盖情况。第二是我们监控了云盘数的性能监控的图表,第三和第四个是小程序的核心功能监控,比如说阅读器、首页渲染监控等等。我们尽可能可视化,不是单纯一条线,让所有人更清晰地看到这个过程才会让它坚持下去,一直朝着正确方向走。
第三个是云开发,云开发我们用的最多的是其中三个部分:云函数、云存储、云数据库。其中云函数是最多的,云函数在我理解它就是在云端运行的代码,而且天然有微信的私有协议,在安全性方面不用考虑。而且它通过L5和来用,云数据库就是在云端的数据库。(注:“小程序·云开发”的Serverless架构包含两块:Faas(函数即服务)和BaaS(后端即服务)。FaaS提供的是按需运行的计算能力,而BaaS提供的则是包括对象存储、数据库应用、缓存服务等开通即用的后端能力。)
02 | 为什么要用云开发为什么要用云开发呢?是因为我们在小程序开发的那一段时间里确实是比较痛苦,一个是我们刚刚转行做小程序开发经验不足,也有一些原因是历史包袱太重,特别是Node框架特别老,上线特别慢,特别烦琐,最重要的还有一个原因是人力不足,这是比较客观也比较难解决的一个问题。我们就去调研有什么办法解决这些问题呢?
刚好那时候发现了云开发这种方式,首先它上手成本特别低,基本上是没有什么成本,第二是它跟小程序结合得非常完美,直接在小程序ID里面开发就可以了。第三我们感受到了云开发团队确实服务特别到位,我们接入后反馈了很多个性化的问题,他们解决问题特别快,响应非常及时。还有一个非常重要的问题是服务特别稳,这也是我们后面坚定不移选择云开发的原因。作为一个业务,最需要的是发展,发展最根本的保障是要服务更稳才行,我们之前辛辛苦苦确实做了一些爆款出来,为什么没能够真正爆起来,曾经有个原因就是因为我们H5的服务器突然崩了,我们在微信里面传播预估的量和最后实际得到的量偶尔不太相符,出现我们以为这个活动可能是一百万,但是最终发出来突然变成五百万,一千万。但是,小程序不存在这样的问题,因为有云开发。
最后一个是性价比,我们是走内部结算,我们自己评估过,确实走云开发会比我们自己建Node服务器便宜很多。
云开发在微信服务里面有哪些运营场景?其实打开微信读书小程序,我们所看到的大部分功能其实都已经转向了云开发,我这里介绍几个我们认为比较典型的。一个是用户最喜欢的微信读书组队活动,每周六开奖的活动,第二是翻一翻活动,这也是我们曾经做的一个爆款,因为受限于服务的问题没能发展下去,但是小程序又把它迁移过来了。还有是读书小队、一答到底的小游戏,会调用数据到后台,读书小队和一答到底是独立的结合了云函数和云存储、云数据库,基本上不需要后端后台。云函数 云数据库的模式更适用于单纯独立的业务,像读书小队和答题游戏这种,后续我们会逐渐地加入原有的自建NODE的模式,用云函数和云开发来承载。
如何使用云开发,具体到技术细节的调用情况,大家看一下小程序这里指的是C端,Server是后台,相当于是从后台到前端的服务。这个是业务发展数据的报表,每天都会有一个这样的报表出来,可以直接去查。
以读书小队为例,以前我们要做这样的业务,会有一个前端的同学,一个后端的同学,NODE服务的同学,运维的同学,运维和后台要做哪些事情?就像这里说的负载均衡、安全、容量等等特别多的事情,一个纯前端的同学是cover不住的,现在有了云开发之后我们需要关注的仅仅是前端的业务代码和云开发的部分就可以了,至于后面安全性的数据容量的问题,负载均衡的问题都可以交给更专业的团队。
云开发对我们产生了什么样的影响呢?
第一个是上线更快了。像刚刚介绍的一样,上线在IDE里面上传就可以了,以前我们上线提单、归度、测试,可能一个单上一个小时就过去了,一天能上几个单。
第二是云开发的方便性。刚才也说到,因为集成在一个IDE里面,小程序有一个项目,Node有一个项目,后台有一个项目,三个项目三个同学一起进行,还要沟通成本,我们现在完全在一个IDE里面做完所有的事情就可以了。服务更稳这个也是有切身体会的,自从用了云开发之后,所有的运营活动不管是突然增还是突然跌,再也没出现过宕机的情况。
合理的分工这也是我最后面介绍的,云开发改变的不仅仅是对业务的改变,对于我们开发同学也在潜移默化地发生着变化。以前有一个前端,有一个Node,还有一个运维的同学,现在前端的、后台的和后面数据的,全部都是一个同学,也就是我们说一个业务或者一个需求就只要一个同学就可以完成了。相对于以前两个同学开发一个需求,现在一个同学开发一个需求,自然迭代更快。同时作为开发本身,以前我关注的仅仅是前端方面的,作为前端同学也可能很困惑,我作为一个高级工程师,但是我做的事情永远都只是集中在最前端,每天在调界面,改样式,我的发展空间在哪里,我怎么向上晋升,这是一个很现实的问题,自从用了云开发之后更广了,可以考虑数据分析、服务,可以考虑服务的资源利用率,可以发展的空间更大了。
我的介绍就到这里,谢谢大家!