2020 年 11 月 29 日,腾讯 2020「小程序·云开发」技术峰会在北京顺利召开。本次峰会以“重新定义开发”为主题,深度聚焦小程序云开发的创新成果与实践案例。以下为微信小程序开发生态产品经理董娜利的演讲实录:
董娜利:大家好,我是腾讯微信云开发生态的产品经理董娜利,今天很荣幸跟大家在这里去分享云开发的相关能力。我今天分享的主题是:云托管-新一代云开发模式。看到新一代这个词,大家可能会觉得这个东西,有点东西!
我本次分享会主要分为三个部分:第一个部分,重点介绍云托管是什么、能做什么、它的特性是什么;第二个部分,会介绍在传统模式的基础上,我们如何去使用云托管;第三个部分,我会主要讲一下我们云托管后续的能力升级规划。
我们先一起看下目前传统模式下业务后台资源管理的情况,我们平常的业务分为闲时和忙时的,忙时的资源利用率比较高,闲时资源利用率低,就导致我们资源成本的浪费。关于资源维护,资源维护人力成本非常高,比如说扩容,如果传统模式下,我们扩容是需要提前预购买,走很多流程。如果我们传统模式下想要学习其他的一些开发模式或者业务框架的话,我们的学习成本是比较高的,而且我们的改造成本也不低。
针对这些现状,小程序云开发推出了什么?
我们推出了云函数,云函数针对这些问题,比如说弹性扩缩容可以完美解决资源浪费问题,购买了配额方案或按量付费后几乎无需任何运维成本,而且简单易上手,学习成本极低。
但是在我们由传统模式转换到云函数模式的过程中,可能会发现一些小问题,比如说改造成本,而且在一定程度上会受到语言及框架的限制,同时云函数目前还暂不支持服务常驻。
我们又该怎么解决小的限制呢?
经过对这些问题的深度剖析以及三个月的努力,小程序云开发推出了新一代云开发模式-云托管,它既可以完美的兼容云函数的优势,又可以解决云函数目前的限制。
云托管是云原生应用引擎,面向应用的 PaaS 托管平台,你可以做到我们业务的平滑迁移,无需任何运维,也不会有语言及框架的限制,你只需要有一套代码,后面放心的交给我们云托管就可以了。
下面来看下一下我们云托管的产品架构。我们云托管在 K8S 的基础上提供了云调用、弹性扩缩、日志监控告警、流量灰度等能力,内置 Jenkins、docker 镜像构建等 CICD 工具,支持现在市场上可以看到的所有语言的应用。
云托管具有以下这些产品特性,比如说自动弹性扩容,只需要你们自定义的设置一些扩缩容的条件,云托管即可定性扩缩容;而且我们天然拥有微信生态优势——免鉴权,而且安全高性能。关于精益成本,今天上午陈宇明老师已经形象生动的说明了我们成本的节约,相对于服务器模式,我们的成本预计能节约 30%左右;而且我们不限制语言、框架,不需要重构业务即可低门槛上云原生;我们同时还提供了云托管的云调用能力,继续可以使用云函数
原有方式调用 OpenAPI,业务可以做到平滑迁移。
再来看下云托管的技术特点。我们现在支持到 0.25core 规格的超细粒度资源管控;并且在突发业务的情况下,我们可以达到 20s 快速扩容,并且支持实例副本数缩容到 0,也就是说如果你的业务没有流量的时候,无需支付任何费用,可以做到 0 成本。
代码一键部署,这一块显而易见,开发只需准备业务代码,云托管自动构建部署,帮你服务运营到云托管上,就可以实现服务的自动运行。
云调用,很多服务商或者是我们的用户都有反馈说,云托管支不支持云调用,因为现在我们微信提供很多 OpenAPI,云托管到底支不支持呢?其实我们现在已经做了很大一个优化,相对于函数来说,我们做了更灵活的变动。比如说我们的 OpenAPI 已经完全可以支撑所有云函数调用的 OpenAPI,就是有 100 多个 OpenAPI 全量支持的一个形式,比如说我们可以做到免 access-token 的程度,链路安全高效。我们还兼容了云函数现在 OpenAPI 的调用方式,让开发者以最小的工作量将原来的服务迁移到我们云托管服务中。
接下来我们来看个对比,我们的云托管与服务器、K8S 与云函数的对比项,列出来的这些只是我个人觉得比较明显的点,还有很多其他的点。通过从这些对比项可以看出来,云托管可以很有实力的成为我们新一代的云开发模式。
介绍了那么多云托管的特性,云托管特别适合在哪些场景下使用呢?我们来看一下。
这里我罗列了三个,这三个是有很明显的场景化的一些业务。
第一个,就是面向服务托管后台业务,他们使用传统技术栈的后台服务想要不改动现有业务技术架构,并且想快速迁移存量业务,可以完全使用云托管,同时云托管还支持微服务间东西向通信和服务常驻。
第二个,流量不稳定触发型业务,云托管可按实时流量自动扩缩容,按实际用量计费,大大降低成本;云托管配合云开发其他能力可以同时降低数据库、存储的使用成本。第三个,如果你的业务对安全性要求比较高的话,我们云托管还是可以支持业务部署在用户的私有集群上,而且还可以提供混合部署的方案,当然还有其他很多业务场景,我在这里就不一一赘述了。比如说像云函数这种,云函数基本上可以做到无缝连接过程,就是你之前使用云函数,如果现在使用云托管的话,根本不需要运维成本或者改造成本的。
对于以上这些场景,这边选取了第一个场景详细讲解下如何接入云托管。
我们先来看一下传统模式的产品架构。小程序和公众号通过公网访问到服务器上的服务,扩容的时候需要人工介入扩容服务器,其他日志监控告警,LB 等服务都需要自建或者是第三方提供。
我们就会发现存在这些问题,小程序或公众号如果走公网访问后台的公网接口,是很容易被扫描、被攻击,而且安全性比较低。同时还会受到公网的波动影响,你的稳定性可能也不是特别高。由于需要自建服务或者第三方提供服务就会涉及内外部多方协作,有协作就会产生额外的成本,研发效能会随之下降很多。
显而易见,另外一个问题是服务部署流程长,我们需要模块注册、上线扩容等都需要经过冗长的步骤,还要走审批、流程,同时还需要人工介入的情况。
针对这些问题,如果你接入云托管,我们来看一下接入云托管之后的情况。小程序或公众号通过微信私有协议内网专线访问部署在云托管上的服务,无需开辟公网入口,微信保障链路安全,而且云托管天然提供很多业务所需的能力。比如说我们刚刚说的负载均衡、日志服务、监控告警、自动弹性扩缩容等等其他的一些能力,而且它还可以联动云开发的其他资源能力。
说了那么多,接入我们云托管需要多少改造成本呢?可以看到,前端,我们只需要改造一行代码就可以了,将原接口 wx.request 改为新接口 wx.cloud.callcontainer 就可以了,后端只需要增加一个 dockerfile 文件,dockerfile 文件的编写,我们在开放文档上有详细示例,大家也不需要担心学习成本。
我下面介绍一下使用云托管在控制台中的开通部署非常简单,进入云控制台,选择云托管,点击开通即可使用。
部署这里只需要准备一套代码,把你的代码通过某种方式上传,可以本地打包,或者代码仓库线上拉取,点击确定,一键部署到云托管上面。这是我们各个版本的运行情况,可以清楚地看到我们现在装载的情况、流量的比例、实例的数量、监控服务详情里面还有更多服务,比如说实例管理、日志服务、构建日志和版本的配置等等。
配置版本的时候,我们可以看到上一页有高级配置,高级配置里面有很多自定义的一些个性化的能力,可以满足业务更多个性化的需求。
最后讲一下云托管后续能力的规划升级。
后续我们云托管打算建设更多的基础能力,如 VPC、Redis 等,同时还会结合云开发能力构建云开发生态,助力企业和开发者降本提效,全方位为业务运行保驾护航。
目前我们云托管已发布到 RC 版,大家会后可以下载使用,有任何疑问欢迎到我们开放社区提问,我们会及时回复大家,谢谢。
评论