专访TLC大会讲师王伟嘉:聊聊云开发CloudBase的设计与实践

2020-08-20 10:44:32 浏览数 (1)

云开发 CloudBase 是腾讯云推出的云原生一体化解决方案,以「小程序·云开发」为代表的 Serverless 产品自上线起就受到了广大开发者的欢迎,如今已经是国内 Serverless 领域的头部角色。

伴随着 Serverless 等新技术的快速发展,云原生时代的应用开发应该是怎么样的?如何设计、构建一套工业级的 Serverless 服务?CloudBase 云服务的背后有哪些精巧的设计?TLC 大会专访云开发团队前端工程师、Node.js Core Collaborator 王伟嘉(Starke),来深入聊聊云开发CloudBase的设计与实践。

Q:Starke 老师您好,本次TLC大会您的议题是《云开发 CloudBase —— 云原生一体化服务的设计与实践》,云开发和云原生都是比较新颖的技术,能否先跟我们的观众介绍一下云原生和云开发分别是什么,CloudBase 相比于传统的开发和生产模式,有什么独特的优势吗?

Starke:“云原生”这个概念近年来也是越来越火,从字面意思上讲,云原生可以分为“”和“原生”两个词:

”即和“本地”相对,过去我们一般都是把服务部署在自己建设的服务器集群上,而现在随着云时代的到来,越来越多的公司和开发者会选择直接使用各个云厂商提供的服务(而不是自建服务器),这其中包括 IaaS、PaaS、BaaS、FaaS 等等。

原生”意思就是土生土长的,也就是应用从设计的最开始就是面向云的,设计上会充分考虑云上基建的特点和优势。比如微服务的架构,就非常适合云上资源弹性和分布式的特点;比如云上资源大多数都是通过 API 来标准化的,这就很适合团队基于此来构建 DevOps 流程。

而我们的云开发 CloudBase 这个产品,就是我们对云原生理念的一种尝试和实践,我们想为开发者提供简单、可靠、高效率的一系列云上基础服务,让开发者更方便高效地利用云资源开发自己的小程序、Web、原生应用,比如,在微信小程序里,你就可以使用“小程序·云开发”,非常简单的几行代码就可以调用云数据库、云函数、云存储等服务。就目前我们收到的大量用户反馈而言,我们目前的产品是受到广大开发者欢迎的,当然我们也在不断地迭代和进化,来为开发者提供更好的产品。

所以相比于传统的开发模式,云原生的一切优势都可以在 CloudBase 所提供的这一套服务上体现,比如你可以完全不用考虑扩容缩容的问题,因为资源本身就是按量计费、自动弹性伸缩的;比如你可以直接在各个端上使用 CloudBase 的 SDK,而不是自己去设计一套 API 和 HTTP 接口。此外我们还对 Web 社区大多数流行的框架做了适配,比如 Vue、Nuxt.js 等等,如果你使用了这些框架,那么你也可以很方便地把 CloudBase 的服务引入进来。

Q:我们注意到 CloudBase 是基于腾讯云的 Serverless 云原生一体化解决方案,作为一款工业级的 Serverless 服务,您觉得在设计、开发这套服务的过程中,最大的难点在哪里?
Starke:首先从产品设计上讲,最大的难点在于深刻地理解开发者需要什么东西。首先“开发者”是一个非常泛的概念,这里面包含了很多很多人,从各大公司里资深的研发工程师到高中大学里刚刚接触编程的学生,都属于开发者。所以设计出一套易上手、对新手友好,并且也能满足一些高阶、专业需求的云服务,是很有挑战的事情。CloudBase 在设计上采取了“渐进式”的原则,也就是为入门者预设好了大多数的使用场景和参数默认值,在绝大多数场景下,都无需调整,如果开发者有一些比较高阶的需求,也可以通过自行修改参数的方式来满足。

然后从技术的角度讲也有诸多挑战,比如在保证用户的资源隔离性上,我们就做了大量的工作。在一些 BaaS 的场景下,对 C 端用户的身份认证、授权也是一大难题,我们为此设计了适合国内场景的多种登录方式(微信登录、邮箱登录、匿名登录等等),以及用于替代传统 ACL 的安全规则机制,让开发者可以用表达式来自定义资源的访问权限。

此外在社区生态上,如何把各个框架的开发者无痛、渐进式地引入进来,让他们更好地接入 CloudBase,也是很重要的问题。对此我们推出了 CloudBase Framework 来适配各种框架、工作流场景。

Q:CloudBase 目前有哪些比较知名的用户?有哪些成熟的应用场景?
Starke:目前腾讯内部已经有诸多团队使用了 CloudBase 的服务,比如微信读书团队,就使用 CloudBase 来承载日常的运营活动,这些运营活动的特点就是短时间内会承载极大的流量,在传统的开发生产模式下,需要运维人员提前预留大量的临时服务器资源,而这些资源可能就只用几个小时甚至几十分钟而已,给运维带来了很大的负担,也会有资源的浪费。但使用了 CloudBase 之后,就无需顾虑这些,因为资源本身就是完全弹性的。

另外,CloudBase 和各端天然打通,这个特点在一些对链路安全要求比较高的场景下尤其重要,比如在《创造营2020》的投票小程序里,腾讯创造营研发团队就采用了小程序·云开发的方案,使用 CloudBase 与微信之间的私有安全链路,轻松地避免了投票接口的防刷,也提高了传输性能,无需多写一行代码就能把羊毛党和黑客拒之门外。

还有就是基于 CloudBase 本身提供的能力去打造的场景,比如我们的云数据库支持实时推送,这在一些弹幕、即时抽奖、实时消息等场景下就非常好用,只需要简单调用几个封装好的接口,就可以获得海量、高可用的实时推送能力,腾讯IEG的设计团队已经在英雄联盟等大型游戏赛事活动的小程序、Web 网页中使用了 CloudBase 提供的能力。

Q:现在 Serverless 无疑是前端圈里一个非常热门的话题和方向,Serverless 对于广大前端工程师的意义何在?您对此有何看法?
Starke:这个问题我们不妨来回顾一下前端工程师这个职业是怎么从“切图仔”发展到现在的:

首先是 2005 年前后,随着 AJAX 技术开始广泛流行,以 Gmail 为代表的 Web 2.0 应用开始登上舞台。AJAX 让网页可以异步动态获取数据,并且渲染视图,前端工程师这个职业可以说是从这个时候才开始分化出来的

后来在 2009 年,Node.js 横空出世,它让熟悉 JavaScript 的前端工程师可以轻松地编写服务端逻辑,从此 BFF(Backend For Frontend )的概念逐渐流行起来,从此前端工程师开始跳出浏览器的边界,彻底接管视图层逻辑

然后就是 2018 年以来,随着 Docker、Kubernetes、Knative 等容器相关技术的成熟,Serverless 和 FaaS(Function as a Service,函数即服务)成为了可能,它们极大地降低了服务端运维的成本,让不那么熟悉基础运维的前端工程师也可以写出高可用、高并发的后台接口,就像写前端逻辑一样。

所以,我认为 Serverless 对前端工程师最大的意义就是,它为前端赋予了新的能力,大大拓宽了前端的边界。除此之外,Serverless 还把“基础设施”和“应用服务开发”解耦开了,随着各种端的进一步统一和融合,未来很有可能只需要两种工程师:基础设施工程师应用开发工程师

Q:今年很多新人进入互联网行业,作为前辈,且在行业内取得了不错的成就,您对他们有什么建议呢?
Starke:对新人而言,我觉得最重要的就是保持对技术的热爱吧,我知道有些人可能因为这一行收入比较高,或者专业热门而选择了学计算机和编程,但这些都不是永久的,互联网行业可能也会终有一天变成夕阳产业,唯一能支持你一直走下去的,就是你对技术本身的热爱,就是那种极客精神。
大会信息
第四届TLC大会的主题是 “前端智造,内容新生”,主题涵盖社交、电商、娱乐等领域,讲师是来自腾讯、阿里、paypal、Bilibili、京东等知名企业的技术专家,并且有丰富的大会分享经验。大会将于2020年9月5日在充满活力的深圳·科兴科学园国际会议中心与开发者相约,欢迎报名参加。

0 人点赞