打通前后端,这款效能提升开源“神器”你一定要了解
作者:趙兵,騰訊云云開發團隊高級前端開發工程師
背景和介紹
云開發(CloudBase)是云端一體化的云服務平臺,是國內 Serverless 理念的領先實踐,使用云開發,開發者無須關心服務器搭建和管理,只需編寫業務代碼和調用原生提供的云能力,就可以快速搭建完整的小程序/小游戲、H5、Web、移動 App 等應用,目前,云開發已服務超過 50 萬開發者。
在開發者使用云開發的過程中,我們收集到如下場景的反饋和需求:
存量業務如網站、后端服務希望能托管在云開發平臺,但存在不小的改造成本;
無法覆蓋各種開發語言、框架和現有的應用交付方式;
應用中存在前后端使用多種云開發資源時,希望能降低發布成本,同時實現持續交付;
應用中添加其他云能力需要手動在控制臺配置。
基于以上的場景,我們希望設計一個工具來解決上述問題,工具擬具備以下特性:
支持應用的無縫托管:用戶不需要改變開發習慣,不需要修改代碼適配云函數等云資源,而是可以直接將應用托管在云開發平臺上;
引入支持自定義的底層資源層:引入容器化的部署方案來承載各種開發語言、框架和現有的應用交付方式;
支持聲明式描述云資源:將應用內各個部分最終都能描述成統一的描述語言,支持前后端的統一部署;
使用簡單:使用者無須關心底層資源和底層聲明文件等細節,只需要有限的業務參數,即可將應用一鍵托管到云開發平臺。
上述特性的核心思想即讓開發者能夠使用一體化的方式來開發和部署應用。
由此,CloudBase Framework 應運而生!CloudBase Framework 是云開發基于上述一體化的思想開發的前后端一體化部署工具,支持前后端一鍵托管部署在云開發平臺,開發者無需改動業務代碼,即可享受加速訪問和彈性免運維的優勢,具有以下特點:
1. 云開發出品
由云開發推出,核心代碼已在 Github 開源:
https://github.com/TencentCloudBase/cloudbase-framework
(歡迎給我們的項目點個 Star,支持我們做得更好~)
2. 云原生,一體化
前后端一體化部署在 Serverless 架構的云環境上,彈性可擴展
3. 降低成本
資源按使用自動彈性擴縮容,按照使用計費,極大節約資源成本
4. 高效快速
簡單易用,并內置大量強大后端能力,只需要開發業務邏輯即可
亮點 1: 一鍵部署
CloudBase Framework 的第一個核心亮點是可以實現一鍵部署,常見的應用,不需要改動業務代碼,即可“零配置”部署到云開發上。
例如,圖中所示的基于 Vue CLI 工具創建的項目,在執行 CloudBase Framework 的部署命令時,會自動檢測項目框架和語言,交互式確認并保存項目配置,實現應用的一鍵發布。一條命令實現了應用部署,自動配置 COS 對象存儲和 DNS、域名等,自帶 HTTPS 安全訪問、CDN 訪問加速等能力。
支持常見框架和語言
CloudBase Framework 目前支持了 Vue、React 等前端框架,也支持 Nuxt 等 SSR 框架,基于 Node 開發的應用如 Express、Koa 等也可以一鍵托管。除此之外,借助底層 Serverless 云應用的能力,也可以部署其他后端的應用(PHP、Java、Go 等),值得一提的是可以部署 Dart Server,可以配合 Flutter 實現 Dart 語言的云端一體化,這也是國內云廠商對 Dart 語言和生態的一大補充。
自動檢測框架
在降低用戶使用門檻方面,我們實現了自動檢測的功能,針對常見前端框架無需編寫配置,可以實現自動識別項目的構建和發布默認配置
無需復雜適配
不需要學習復雜的服務器配置和更改代碼,只需要輸入業務參數即可部署
可配合 CI/CD
可以與您的現有工作流完美配合,可搭配 CI/ CD 工具實現持續部署,例如只需要幾行代碼就可以實現 Github 自動推送時自動部署應用前后端,同時也可以在 CI/CD 過程中增加手動確認步驟來 Review 發布過程。
????-?name:?Deploy?to?CloudBaserun:?|npm?i?@cloudbase/clicloudbase?login?--apiKeyId?${{secrets.SECRETID}}??--apiKey?${{secrets.SECRETKEY}}cloudbase?framework:deploy亮點 2: 一體化,易擴展
平臺一體化
云開發(CloudBase)是云端一體化的云服務平臺,采用 serverless 架構,開發者無須關心服務器搭建和管理,原生提供了很多開箱即用的云能力
項目一體化
使用 CloudBase Framework 開發的項目前端、后端等都可以在同一個項目內開發和維護,這一點和小程序開發非常類似,可以在 IDE 內通過一體化的方式開發和發布。
前后端一體化部署
如上面的例子所示,一個具備前端代碼、云函數和服務端代碼的一體化應用,只需要調用 CloudBase Framework 的一條命令,即可將完整應用部署在云端,統一管理和維護。
開箱即用的原生云能力
云開發一體化平臺提供了開箱即用的原生的云能力,無需學習底層資源配置,無需運維和管理。
例如,在云開發平臺上,我們需要部署靜態網站,無須關心對象存儲和 CDN 的管理;需要部署 HTTP 服務,無須關心網關層和計算資源的配置;需要使用云數據庫時,我們也不用擔心數據庫實例的容災。
輕松添加更多后端能力
可輕松引入更多開箱即用的后端能力
登錄鑒權:通過 SDK 實現登錄鑒權
云數據庫:內置的 NoSQL 數據庫,可通過聲明式的方式來創建集合和索引
云接入:引入 HTTP 訪問的支持
云調用:幾行代碼實現微信開放能力的調用
云函數:輕量級的計算能力
云存儲:實現文件的存儲和下載
Serverless 云應用:極簡方式使用 Kubenetes 容器
擴展能力:可以免開發安裝 CMS 內容管理系統等擴展能力
CloudBase Framework 降本增效
CloudBase Framework 通過提供一體化的開發和部署功能,將應用輕松遷移到一體化的云開發平臺上來。企業和個人開發者可以借助這套方案,提升業務效率,節省業務成本。
開發更快
集成云開發多端 SDK
開箱即用的后端能力
部署更快
一鍵部署,聲明式創建云資源
自動、快速彈性擴縮容
訪問更快
更多節點覆蓋
高性能,高可用
在 50 萬開發者,每日調用量 7 億的規模下,可用性保障可以做到 99.90%
省心更省錢
云開發平臺具備了免運維,全托管,按量付費的特點,通過 CloudBase 部署應用的成本相比傳統方式部署應用的成本,節省了運維成本、閑置租用成本以及多角色溝通的成本。
例如微信讀書團隊借助“小程序·云開發”帶來了很大的效能提升,微信讀書小程序上線 10 個月累計發布 349 次版本,開發效率分別是對應的 APP 和 H5 的 4 倍與 2 倍。
云開發還讓其團隊的分工和成員能力發生了顯著變化。以前其團隊按照前端開發、Node.js 開發和運維人員進行分工,現在前端負責全棧開發。
生態和插件
CloudBase Framework 具有開放性的特點,通過微內核、插件化的方式來設計這套方案。內核層面解決插件化、構建生命周期等問題,針對具體的場景則通過插件的方式來實現。
例如,針對不同技術棧的網站的托管,設計了 website 插件來處理這一類問題,可以解決前端頁面構建、靜態資源的部署以及域名的處理。
開發者也可以根據插件的規范來開發不同的插件發布到 NPM 上,使用時只需要指定其 npm 包名即可。
目前 CloudBase Framework 官方提供的插件有:
快速開始
安裝 CloudBase CLI
首先需要安裝 CloudBase 最新版命令行工具
npm?install?-g?@cloudbase/cli@latest登錄命令行工具
然后調用命令行進行登錄,會跳轉到騰訊云控制臺進行賬號的授權,如果沒有賬號,可以在控制臺進行開通
cloudbase?login初始化一個應用
通過 CloudBase 命令行工具我們可以非常方便地創建一個應用,如果在現有應用中使用,可以執行 cloudbase init --without-template
cloudbase?init通過交互式地創建環境和選擇模板來初始化應用
也可以直接指定模板 id 創建對應的項目,例如
cloudbase?init?--template?nuxt-ssr目前支持的一體化應用模板如下:
部署應用
接下來,只需要進入到項目目錄中調用命令進行部署
cloudbase?framework:deploy部署成功后,就可以通過命令行提示的地址進行訪問了:
https://framework.service.tcloudbase.com/express-starter/
愿景
CloudBase Framework 致力于打造一體化框架,目前已實現了一體化的部署工具,未來會引入一體化運行時庫和一體化 CI/CD 工作流,幫助業務更快更簡單地將業務部署在面向未來的云開發平臺上,提高效率,節省成本。
一體化思想
一體化平臺
一體化部署工具
一體化運行時庫:通過運行時框架簡化開發流程,以更少的代碼實現強大的功能
一體化 CI/CD 工作流:結合代碼倉庫推送,實現內置的自動化云端構建和部署
開源貢獻
我們非常歡迎各位開發者為 CloudBase Framework 貢獻一份力量,讓這個項目能夠更好地幫助開發者提升效率。
Github 地址:
https://github.com/TencentCloudBase/cloudbase-framework
參與貢獻
積極參與 Issue 的討論,如答疑解惑、提供想法或報告無法解決的錯誤
撰寫和改進項目的文檔
提交補丁優化代碼
認領待辦任務中的事項
7月23日19:30
第二屆“騰訊運維技術開放日
運維進階之路”將舉行線上直播!
掃碼添加海報底部”他二哥“微信進群
一起做運維大牛!
總結
以上是生活随笔為你收集整理的打通前后端,这款效能提升开源“神器”你一定要了解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大牛书单 | 腾讯运维大咖陪你过724
- 下一篇: Nature 子刊重磅:腾讯与钟南山团队