低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

赵兵:如何更快打造云原生应用:CloudBase Framework 云原生一体化实践

腾讯云

2020 年 11 月 30 日

赵兵:如何更快打造云原生应用:CloudBase Framework云原生一体化实践

2020 年 11 月 29 日,腾讯 2020「小程序·云开发」技术峰会在北京顺利召开。本次峰会以“重新定义开发”为主题,深度聚焦小程序云开发的创新成果与实践案例。以下为腾讯云高级前端开发工程师赵兵的演讲实录:


大家好,我是来自腾讯云开发团队的赵兵 今天为大家带来的分享是 如何更快打造云原生应用


CloudBase Framework 云原生一体化实践


首先做一个自我介绍,我来自腾讯云开发 CloudBase 团队,目前负责云开发 CloudBase Framework 研发⼯作。KubeConf 讲师,前端早早聊讲师,开源项目 CloudBase Framework 发起人。长期从事前端⼯程提效、 架构升级和开源建设


Serverless 云端⼀体化、⼤前端技术研究和落地。


本次分享将会分为 3 个部分


分享希望能让大家


了解云原生为应用开发带来的机遇和挑战


了解云开发团队的 CloudBase Framework 的思路和建设实践


了解云开发下更加高效的云原生应用模型,以及如何利用 CloudBase Framework 更快地将应用打造为云原生应用


随着云计算技术的发展,应用开发逐渐进入了云原生 (Cloud Native) 时代 那么云原生为应用开发带来了怎样的机遇和挑战呢?


云原生和传统应用又怎样的区别,相比之下有哪些优势?


这里引用 云原生应用的提出者 Pivotal 的一张对比图 我们可以看到云原生应用更加具备协作、弹性、持续交付、自动化扩展性、快速恢复这些特点


云原生应用的优势总结下来是更快交付,降低开发、交付和运行的风险,更加方便拓展业务


那么应用程序部署至云原生平台的挑战有那些挑战呢?


这里以云开发为例,云开发为用户提供了弹性、自动扩展性、免运维的平台,用户在迁移和托管已有的传统应用时,还有哪些痛点呢:


存量业务如网站、后端服务希望能托管在云开发平台,但存在不小的改造成本


希望覆盖各种开发语言、框架和现有的应用交付方式


应用中存在前后端使用多种云开发资源时,希望能降低发布成本,同时实现持续交付


另外就是希望能有更加自动化的配置和交付方式


基于上述的痛点,CloudBase Framework 应运而生了


核心是要解决传统应用快速迁移云原生应用的痛点


  • 帮助传统的业务如网站、后端服务,迁移到云原生化的架构降低开发成本,提升开发效率,同时节省服务器和系统管理,降低改造成本


  • 帮助已经使用 Serverless 架构的 FaaS 模式开发的团队,支持他们覆盖更多开发语言、框架和现有的应用交付方式


演示和解析


云原生一体化工具 CloudBase Framework 演示和实践


这一环节我们会


首先实战演示


介绍工作原理


介绍插件体系


云开发的云原生应用模型


演示


首先是演示环节,这一部分我们会一起来实际感受一下 CloudBase Framework 的功能 1. 本地 CLI 部署,自动检测部署一个 Vue 项目 2. 云端一键安装应用,安装一个 wiki.js 这样复杂的应用


演示


首先是演示环节,这一部分我们会一起来实际感受一下 CloudBase Framework 的功能 1. 本地 CLI 部署,自动检测部署一个 Vue 项目 2. 云端一键安装应用,安装一个 wiki.js 这样复杂的应用


首先,介绍一下工作原理


核心是一个 CLI 工具,可以通过 CLI 来初始化项目,也可以选择自己的已有项目


一键部署: cloudbase 一条命令来完成登录鉴权/自动检测项目框架和语言,交互式确认并保存项目配置


内部通过内核+ 插件来处理,将应用交给相应的插件来转换和适配,最终生成统一的描述文件来云端部署


云端的平台,插件和云资源之间是相互对应的,比如 container 插件就会把应用部署在容器托管中


CloudBase Framework 采用了微内核、插件化的设计,主要的功能逻辑均由开放的插件来完成,内核层主要进行配置解析、生命周期的管理以及最终基于 TCB SAM 描述文件的合并和云端部署。


就像一个集线器一样,将具体的问题领域交给可拆装的插件来完成,只需要实现特定的接口就可以实现一个插件,插件本质上就是一个导出对应的插件实现的 npm package


这张图就是 CloudBase Framework 的插件体系,自下而上分别实现了云资源插件、语言开发开发插件、应用框架插件,以及第三方应用插件。


插件可以组合其他插件来实现逻辑的复用,例如 Node 插件复用了云函数插件和云托管插件,低代码开发插件复用了小程序插件、静态网站插件、云函数插件、鉴权插件、数据库插


件等。通过组合使用插件,和复用插件来实现新的第三方插件,可以应对更为复杂的应用。


基于 CloudBase Framework 可以将一个云原生应用简化为下面的模型公式:


应用代码 + 声明式应用配置 + 不同环境的配置信息 = 云开发云原生应用


  • 应用代码 Code:包含前后端代码


  • 声明式应用配置 cloudbaserc:包含插件配置、依赖资源(MySQL/CFS)、生命周期 Hooks 编排


  • 不同环境的配置信息 Environments:应用在不同环境 (预发布、生产环境、开发环境)的配置信息


云开发云原生应用可以采用标准化的流程自动化配置和部署,一键部署在 Serverless 化的计算平台上,实现持续交付和快速扩展,更加节省资源。


这是云开发 CloudBase Framework 的部分里程碑,自推出以来经过云开发平台众多企业用户和开发者的实践,团队协作和持续的迭代,目前功能已日渐完善和稳定


如何使用 CloudBase Framework 更快打造云原生应用 这一环节我们会介绍 如何快速迁移


面向开发场景的解决方案


面向海量应用的解决方案


面向开发者的云开发应用中心


企业案例和价值总结


如何快速将现有应用迁移上来


方式一:本地部署应用


1、安装 CloudBase CLI


2、在项目执行 tcb 命令


3、确认自动检测的应用/框架配置


如果未检测到相应的框架,可以手动编写 cloudbaserc.json 配置,重新进行第 2 步部署


如果配置无误,即可实现自动一键部署


方式二:Git 云端导入应用


在控制台填写 Git 地址的一键部署按钮跳转到控制台


2、在控制台选择合适的应用/框架配置


如果不存在合适的应用/框架配置,可以在项目中编写 cloudbaserc.json


3 一键部署应用到云开发平台


面向开发场景的解决方案体系


针对于不同的开发场景,我们提出了面向开发场景的解决方案来帮助开发者快速迁移和持续开发


静态网站、SSR、服务部署


举个例子:在网站开发的场景,开发者可以基于云开发 CMS + 静态网站 + Next/Nuxt 静态导出来实现企业网站,这就是所谓的 JamStack 架构,可以说是企业网站开发的最佳时间,加载性能更高,成本更低,加上有云开发 CMS,连管理后台都不用开发


面向海量应用的解决方案体系


针对已有的成熟应用,我们的思路是引进来提供更加便捷的部署和安装方式,提供可以高性能、高可靠性、可弹性扩缩容的的应用体验


例如前面讲师提到的 DiscuzQ 这一成熟的社区工具,可以在这里一键进行云原生化的部署 下面是我们目前已经支持的应用的类型,更多成熟的应用也在不断引入当中


基于前面提到新的云原生应用模型,我们可以轻松将海量的应用描述为云开发云原生应用


我们推出了应用中心来一键部署。


用户可以点击部署按钮,一键云端安装应用。也可以通过填写 Git 代码仓库来快速导入一个应用。


欢迎大家扫描二维码云开发应用中心,体验和部署应用:https://cloudbase.net/marketplace.html


截止目前,已经有 1000+ 应用使用 CloudBase Framework 来部署应用,例如:


企业微信通过 CloudBase Framework 来降低开发第三方应用的门槛


云开发低代码平台使用 CloudBase Framework 来实现应用的快速部署


腾讯直播团队使用 CloudBase Framework 搭建了基于 Dart 的 Flutter 云端一体化的开发模式


以及许多企业和个人开发者基于 CloudBase Framework 打造了自己的云原生应用


CloudBase Framework 已经加入腾讯开源组织,对外正式开源


欢迎大家扫描屏幕上的二维码关注和 star 为什么选择对外开源?希望能通过开源协同来和广大开发者一起完善云开发 CloudBase Framework 的插件、生态等,建立良好的技术社区,最终回馈产品和更多的云开发者。


本次分享介绍了云原生应用的优势和挑战,结合腾讯云开发的实践介绍了 Cloudbase Framework 及云开发下的云原生应用模型,以及我们如何通过场景化的解决方案、应用中心和一键部署来帮助开发者更快打造云原生应用来降本增效。


感谢大家,我今天的分享到此结束,大家可以添加我们屏幕上的小助手微信一起入群交流

2020 年 11 月 30 日 17:29405

评论

发布
暂无评论
发现更多内容

承兑商支付平台开发搭建,USDT支付系统解决方案

135深圳3055源中瑞8032

区块链钱包开发技术公司,数字钱包APP系统搭建

135深圳3055源中瑞8032

架构师训练营第 1 期 week6 总结

张建亮

极客大学架构师训练营

架构师训练营第六周作业

我是谁

极客大学架构师训练营

区块链交易所源码开发,币币场外交易系统搭建

135深圳3055源中瑞8032

架构师训练营第 1 期 week6

张建亮

极客大学架构师训练营

cglib 入门前篇

Rayjun

Java cglib

深入浅出System.gc() 源码解读

AI乔治

Java 架构

作业一:

丁乐洪

C 语言实现一个简单的 web 服务器

C语言与CPP编程

c c++ socket C语言 HTTP

架构师训练营第 2 周课后练习

菜青虫

极客大学架构师训练营

最实用的无线PORTAL测试案例

测试 无线网络 网络

jdk 源码系列之HashMap

sinsy

源码 jdk HashMap底层原理

架构训练营第二周学习小结

李日盛

区块链云算力挖矿平台开发公司,云算力软件开发价格

135深圳3055源中瑞8032

架构师训练营第二周作业

李日盛

架构

DDIA 读书笔记(3)数据编码与演化

莫黎

Mac常见问题解决方案与使用技巧

jiangling500

Mac

第二周-作业

ray-arch

极客大学架构师训练营

架构师训练营第 2 周学习总结

菜青虫

极客大学架构师训练营

架构训练营 - 第6周课后作业 - 学习总结

Pudding

打破内卷化,AppGallery Connect的全生命周期赋能方案

脑极体

前端组件化

韩向民

第2周 框架设计-作业

SuGeek

架构师训练营第 1 期第 6 周作业

du tiezheng

极客大学架构师训练营

架构师训练营 - 第 6 周课后作业(1 期)

Pudding

新手初学Java性能之 垃圾收集器

Java架构师迁哥

第六周 Doris临时故障时序图

Geek_fabd84

软考资料学习库

玄兴梦影

二、ood原则

Geek_28b526

成为架构师 - 架构师训练营第 02 周

陈永龙Vincent

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

赵兵:如何更快打造云原生应用:CloudBase Framework云原生一体化实践-InfoQ