2019年10月19日,由腾讯云与微信小程序团队联合举办的“小程序云开发”技术峰会在微信举行。 小程序云开发账号已注册23万个,已有超过50万开发者开始使用。 这是腾讯云与微信小程序团队联合推出云开发服务以来交出的第一份重要成绩单。 而这个过程从小程序诞生的那一天就开始了。
1 过去:从微信开发者工具到微信小程序解决方案
2016年1月11日,张小龙出现在微信公开课Pro版中发表公开演讲。 也就是在这次演讲中,微信正式宣布正在开发“应用账号”。 当时被形容为“像App一样的公众号”——同年9月,“应用号”正式更名为“小程序”,并发布内测。
在“应用号”发布当天,微信宣布推出微信网页开发者工具,该工具可以让开发者在电脑上模拟访问微信网页,帮助他们更便捷地进行开发和调试。 自此,微信Web开发者工具成为微信官方小程序IDE微信开发者工具。
微信开发者工具基于Node.js和应用程序实时运行环境,使用node-.js开发。 其中,MINA(MINA IS NOT APP)是微信中开发小程序的框架。 MINA为开发者提供了自己的视图层描述语言wxml和wxss,以及基于它的逻辑层框架,将视图层与逻辑层之间提供数据传输和事件系统,小程序也为开发者提供了UI 组件库和底层 API。 后端开发者可以使用这款微信开发者工具,增强开发过程中网络调试的体验,提高开发效率。
但正如bug的数量只会越来越多一样,微信开发者工具也并没有想象中的那么完美。 内测的微信小程序只能在工具中调试,不支持热更新。 而且,对于已经习惯了其他编辑器的开发者来说,当时的工具并没有想象中的那么“顺利”。
2017年1月9日,小程序上线。 随后,随着微信小程序的出现,腾讯云微信小程序解决方案也随之推出。 同年12月底,微信小游戏“跳一跳”上线,正式点燃小程序热潮。 当时,在日活跃用户如此高并发、大规模增长的情况下,如何保证小程序的流畅度,提高小程序开发效率就成为小程序开发者不得不面对的问题。
由于企业级和个人开发者的小程序需求存在差异,腾讯云基于企业级IaaS能力和个人开发者的解决方案定制了解决方案。
为企业用户提供业务服务器和会话服务器。 业务服务器用于部署和处理业务相关逻辑,而会话服务器用于独立处理用户会话相关逻辑(登录注册等),业务与会话分离,有利于中大型企业客户扩展未来小程序的背景。
然而,随着4月份微信开放微信小程序个人注册,小程序的开发者多为前端和终端开发者,往往存在大量非业务逻辑,不方便代码调试、运维、扩展和维护。其他服务器端知识。 不足之处,就出现了架构复杂、开发者上手成本高、代码调试不方便等问题。
针对该问题,腾讯云提出了供个人开发者使用的解决方案。 1到2,为了兼顾安全性和方便性,2将会话服务器和业务服务器结合起来。 不仅如此,用户还可以自行购买服务器,无需服务器端配置,并实现SSL证书的自动颁发和部署,区分开发和生产环境,实现开发和线上分离,并将解决方案集成到微信开发者工具中之中。
随着微信小程序版本的不断迭代和更新,小程序开发的门槛越来越低,但真正解放开发者双手的却是小程序,将小程序与云能力结合起来,实现快速、低功耗。成本开发。 程序开发所追求的目标。 2018年7月10日第七季微信公开课上,微信小程序团队宣布小程序云开发的到来。
2 现在:微信小程序开发新模式
尽管小程序开发门槛再次降低,但自从小程序诞生以来,业界更加关注小程序前端的技术演进,前端开发效率大幅提升。有所改善,但开发者一直面临以下后端瓶颈:

为此,合众通过不断优化授权流程及相关配置开发的小程序如何上线,于2018年9月正式上线小程序云开发。
小程序云开发是微信与腾讯云联合开发的原生云服务。 一般来说,包括as a和Func as a,而云开发结合微信提供的各种能力,实现免登录认证,无缝调用微信的开放API。 通过简化复杂的后端和运维操作,即使是没有一定后端知识的开发者也能高效地开发出高质量的小程序。
云开发系统主要分为终端层、接入层和资源层三部分。
如下图所示,可以看出云开发系统架构涉及微信、腾讯云和开发者。 不过,腾讯云在底层打通了微信的自研网络和云网络,以及腾讯云上开发者现有的服务。 在此基础上构建了一体化的云网络,开发者可以轻松地将云开发集成到现有服务中。
为了保证云开发的后端架构和稳定性,云开发设计了容灾架构。 小程序·云开发后台服务采用多IDC、多园区部署,实现跨园区容灾。 每个园区都具有一定的冗余服务能力。 当一个停放失败时,请求将自动路由到另外两个。 对于园区而言,另外两个园区将继续提供服务,不会对业务造成影响。
在网络层面,微信采用就近访问用户的原则,提高了访问质量。 在此基础上,借助精准实时的引导,通过识别用户客户端版本、网络环境等数据,下发IP列表,引导用户访问最合适的接入点,进一步提高用户的访问能力质量。

在安全方面,云开发采用全链路票务系统,保证整个请求链路的安全。 如下图所示,首先用户从微信客户端请求到微信后台服务。 云开发请求通过微信底层私有协议与微信后台服务进行通信。 当业务层数据添加的时候,就可以防止了。 窃听、防篡改、防重放、防伪装等安全措施。
而微信后台收到云开发请求时,会首先验证用户的身份,并通过全票保证数据的安全。 如何保证? 用户登录后,后台会向客户端发放票据,客户端每次请求时都会携带票据。 在后台服务的整个处理链中,所有对核心数据服务的访问都会验证票据是否合法,如果是非法请求,就会被拒绝,从而保护用户的隐私数据,可以只有通过用户发起的客户端操作才能访问。
由于云开放的全链路都是经过认证的,云开发执行云功能时,后台会自动验证请求票证,开发者无需经过常规的授权和维护,就可以无缝使用微信的开放能力。 “小程序云开发”对数据访问链路的特殊优化,也促进了小程序更快的数据加载速度。
此外,微信小程序团队相关负责人也在小程序云开发技术峰会上针对小程序开发者普遍关心的性能问题进行了深入解读。 以云函数为例,执行云函数需要三个步骤:创建容器、下载代码、部署执行。 由于容器启动是一个耗时的操作,通过函数实例复用、容器实例预创建、热点代码缓存等优化,云函数容器的启动时间从秒级缩短到毫秒级。 在容器冷启动过程中,开发者可以做到代码精简(缩短下载时间)、资源复用(缩短执行时间)、公共剥离(增加缓存效果)、保持活跃(避免资源回收)。
同时,为了提升云功能的性能,云开发也在通信、业务、网络层做了一些优化。 通信层,改造私有协议,优化长时复用; 业务层,将请求进行分段,优化内部调用链路; 在网络层,压缩系统间的网络开销,从纯异步方式转变为多段同步方式。
正因为如此,今年以来云函数请求性能提升了60%。 据了解,小程序端的一个云功能请求在测试环境中也降到了140毫秒,相关优化也将在下一个微信版本中发布。
3 未来:小程序云开发仍在路上
作为一种全新的小程序开发模式,在小程序云开发技术峰会现场,开发者最期待的云开发最新技术能力和下一步计划也一一揭晓。