软件开发架构师

开发小游戏,云开发真的是银弹吗?(二)-InfoQ

大数据 38 2019-11-09 01:08

8 月 17 日,“小程序·云开发”系列沙龙(小游戏专场)圆满落幕。本期沙龙云 + 社区携手微信 & 云开发官方团队为大家揭秘爆款微信小游戏背后的技术,全面讲解小程序·云开发、实时数据库库及小游戏联机对战引擎,助力小游戏开发。

什么叫做无服务?

Serverless 不知道大家有没有听过?是这两年很火的概念。Serverless 分为两部分:BaaS,后端即服务;FaaS,函数即服务。

在开发过程中,开发者不感知服务器的存在,传统开发要自己买服务器,在服务器上搭建 DB,再买服务器,作为专门的存储服务器,实例搭建完需要编写服务作为中转,操作实例。在无服务的概念下,这些工作完全隐藏掉了,通过提供 API 的方式来直接操作资源,COS、消息队列、存储等后端实例,都作为一个服务,直接通过 API 来调用。Faas 是 Serverless 的核心,也就是无服务器云函数,这个使 serverless 能做的事情更多,在云函数中可以跑真正的业务逻辑,覆盖了各种各样客制化的开发场景。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-1

无服务是未来开发的发展趋势,从物理机到云上的 Iaas 层、主机、PaaS 的开放架构,一步一步释放了人力,让开发者更专注于自己业务能力的开发。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-2

云开发是什么?

1. 云开发的特点

云开发是一个支持小程序、Web、安卓等多端的应用服务中台。其整合了微信公众平台和腾讯云的核心技术,提供云数据库、云存储、云函数、日志和监控等开发运维能力。通过“小程序·云开发”,开发者可无缝安全调用小程序的开放服务,提升开发效率,快速试错和落地产品。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-3

云开发的重要优势之一就是简化后台配置,开箱即用,存储、数据库和云函数,环境创建时都已搭建完成,提供域名和备案,免除繁琐的流程,开发者只需编写核心逻辑代码,无需关注后端配置与运维,专注于业务开发。

云开发集成在小程序的 IDE 里,免认证登录,在 IDE 里面有云开发,云相关 API 不需任何安装。我们和微信通过私有协议实现了更高效的鉴权方式,在微信客户端 SDK 中可以直接调用云上的资源,在云函数中,还可以通过云调用来调用微信的开放接口。这点是云开发的独有能力。

在运维方面云开发稳定可靠,云开发后面是各种腾讯云的基础设施,稳定、安全且高效,具备快速拓展能力,满足不同业务场景和需求。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-4

2. 云开发模式与传统模式的区别

在传统开发模式下,在小程序端使用了其他的服务,需要自己编写 SDK,或者引入额外的 SDK 来调用到你的后端服务,后端服务需要自己来搭建、写框架、写路由、写接口,操作更底层的 DB 资源、COS 资源,在环境上需要打通网络,以及加速等额外的工作。对于开发者来讲,你需要关注的内容很多的。若使用云开发,可以直接使用小程序原生接口,wx.Cloud。这个命名空间下有一系列的接口,通过这里面的接口就可以操作云开发上的这些资源。

在传统的模式下,你想实现简单的图片上传,小程序端、客户端都是一样的,chooselmage+wx.uploadFile,但是整个后端服务搭建需要选择一个合适的框架,设计路由,你接收到这个文件上传到 cos,运维要负责性能安全。若使用云开发的模式,在小程序端就只需要这个代码,wx.Cloud.uploadFile,把 File ID 传进去,整个过程都完成了。你要上传这个文件,自动上传到 cos 上,在链路上,我们会保证链路的一致性、鉴权及相关的操作。以前需要 1000 多分钟,最少三个人做的事情,现在前端 4 分钟就搞定这件事。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-5

插入数据,也是很高频、很常见的操作。在小程序端,你需要 wx.request 来请求后端接口,开路由,写逻辑代理,接收到数据之后,存到 MongoDB,整个流程包括中间沟通的时间,1000 多分钟都过去了。你用云开发模式,前端工程师一个人,直接调 wx.Cloud.database,通过这个 add 可以直接插入一条数据,直接操作远端数据库的服务,很方便。这段代码既可以跑在小程序端,也可以跑在云函数,从前到后都由一个前端开发来编写,统一的技术栈,后面也只需要一种技术栈的人来维护。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-6

3. 云开发有哪些功能?

云函数是 serverless 的核心,也是云开发功能中很重要的一点。云函数,你不需要服务器,也不需要配置域名,调用方式通过 wx.cloud.function 来调用的,开发者工具有一键上传的入口,你可以将自己的代码一键上传到云函数的运行容器中。整个运行环境,由腾讯云保证安全和隔离性。

云函数有一个很便捷的特性,你不需要自己写逻辑来获取到小程序的 appid、openid,我们通过私有协议将其置于云函数的上下文中,云函数中直接获取,不需要鉴权解密等额外行为。我们在前层,有一层自己封装的鉴权服务,所有到达云函数的完全是安全的,携带微信的正常登陆态。

开发小游戏,云开发真的是银弹吗?(二)-InfoQ-7

运管方面,云函数可以实现秒级的弹性伸缩,当请求量、并发量大时,可以快速进行扩容,防止服务崩溃。此外云函数与云主机不同,其按运行时间,只有请求处理时才产生一定的费用。

文章评论