您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)Serverless Frist的漸進式應(yīng)用開發(fā)框架 Malagu是怎樣的,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Malagu 是基于 TypeScript 的 Serverless First、組件化的漸進式應(yīng)用開發(fā)框架。使用同一套編程語言和 IoC 設(shè)計,用于開發(fā)前端、后端和前后端一體化應(yīng)用。并且結(jié)合了 OOP(面向?qū)ο缶幊蹋?、AOP(面向切面編程)等元素,借鑒了很多 Spring Boot 設(shè)計思想。
?在后端,Malagu 抽象一套接口,方便適配任意的平臺和基礎(chǔ)框架,是一個平臺或基礎(chǔ)框架無關(guān)的上層框架。平臺如阿里云函數(shù)計算、騰訊云云函數(shù)、Vercel 等,基礎(chǔ)框架如 Express、Koa、Fastify 等。
?在 Serverless 場景,Malagu 是以應(yīng)用為單位開發(fā)項目,一個應(yīng)用一般包含多個 API 接口。如果我們的應(yīng)用很大,我們應(yīng)該將大應(yīng)用拆解成一個個小的微應(yīng)用或者微服務(wù)。就像微服務(wù)架構(gòu)的粒度拆分原則一樣,合理的粒度拆分,對我們的應(yīng)用管理是有很多好處的??蚣軙WC一個應(yīng)用在一個函數(shù)中的運行性能。?
Serverless 是云計算新一代計算引擎,為取代傳統(tǒng)云服務(wù)器架構(gòu)而生。Serverless 核心理念是讓開發(fā)者不用關(guān)心服務(wù)器的存在,專注于業(yè)務(wù)代碼。
?現(xiàn)在,所有云廠商和社區(qū)都在大力推廣和布道 Serverless 理念,通過 Serverless 可以低成本高質(zhì)量快速落地商業(yè)方案。目前,大家普遍認(rèn)為 Serverless = FaaS + BaaS,未來也可能是其他的形態(tài),不管形態(tài)如何變化,Serverless 的核心理論是不變的。所有 Serverless 的開發(fā)體驗關(guān)鍵在 FaaS 的開發(fā)體驗,而 FaaS 目前開發(fā)體驗不是很理想,存在著很多的疼點,短時間內(nèi)在 FaaS 底層上很難解決,比如冷啟動、數(shù)據(jù)庫訪問、本地開發(fā)調(diào)試運行、平臺無關(guān)等等。?
?我們可以換一個思路,從開發(fā)框架層面嘗試解決這些問題(事實證明,可以通過開發(fā)框架來解決這些問題)。那么,我們面臨新的抉擇是采用傳統(tǒng)框架,還是需要一個全新的框架?如果選擇做一個新框架,那么,我們是選擇特定編程語言,還是通用編程語言?
?傳統(tǒng)框架在開發(fā)體驗上,大家肯定是接受的,畢竟已經(jīng)使用了這么多年。但是傳統(tǒng)框架開發(fā)的應(yīng)用在遷移到 Serverless 環(huán)境時,往往會遇到各種各樣難以解決的問題,這些問題往往是與框架底層設(shè)計密切相關(guān)。雖然我們可以通過框架擴展能力去解決或者緩解部分問題,實踐下來的結(jié)果是框架改造門檻很高、效果不太理想、需要 Hack,不夠優(yōu)雅。當(dāng)您在 Serverless 采用傳統(tǒng)框架時,您往往會感覺雖然應(yīng)用可以跑起來,但是真正應(yīng)用到生產(chǎn)級別您會有顧慮。所有我們需要一個全新的、Serverless Fisrt 的開發(fā)框架。只有這樣才能極大發(fā)揮 Serverless 優(yōu)勢,并讓 Serverless 開發(fā)體驗超越傳統(tǒng)開發(fā)體驗。
?目前,開源社區(qū)也存在不少語言無關(guān)的 Serverless 工具或框架,比如 Funcraft、Serverless Framework、Vercel 等等。這類通用語言型 Serverless 工具在運維層面確實可以做到不錯的體驗,也可以形成通用的標(biāo)準(zhǔn)。但是,在應(yīng)用代碼開發(fā)、調(diào)試、運行等開發(fā)體驗上不那么理想。每種編程語言在開發(fā)、調(diào)試和運行等方面都有自己獨特的地方,通用語言型 Serverless 工具很難做到統(tǒng)一,且開發(fā)體驗還能做到很好。只有選擇特定的編程語言,才能讓開發(fā)、調(diào)試和運行等方面的體驗達(dá)到極致。
Serverless 讓后端開發(fā)門檻變得極低,前端開發(fā)者基于 Serverless 開發(fā)后端應(yīng)用學(xué)習(xí)成本也極低。未來越來越多的前端開發(fā)者成為全棧開發(fā)者。Typescript 既可以開發(fā)前端,又可以開發(fā)后端,對于前端或者全棧的開發(fā)者來說十分友好。?
前端架構(gòu)其實就是一種類 Serverless 架構(gòu),比如前端瀏覽器需要加載前端代碼來執(zhí)行,而 Serverless 場景也需要加載用戶的代碼來執(zhí)行。因此,前端的很多解決方案天然適合 Serverless 場景,比如前端通過打包、壓縮、Tree Shaking 來減少代碼體積,減少代碼部署和冷啟動時間。同樣,該優(yōu)化方案也適用與 Serverless 場景,所以選擇 Typescript,則相當(dāng)于直接擁有了經(jīng)過無數(shù)真實場景打磨的現(xiàn)成解決方案。
另外,Typescript 和 Java 很接近,Java 開發(fā)者也能很方便切換到 Typescript 技術(shù)棧。
?Malagu 是基于 TypeScript 的 Serverless First、可擴展和組件化的漸進式應(yīng)用開發(fā)框架。Malagu 屏蔽掉不同 Serverless 平臺底層細(xì)節(jié)和 Serverless 場景存在的大部分痛點。Malagu 基于真實業(yè)務(wù)場景打磨,提供生產(chǎn)級別可用的解決方案。提供多云解決方案,云廠商不鎖定。
Malagu 框架是由一系列組件組成,每一個組件其實就是一個 node 模塊,根據(jù)您的業(yè)務(wù)場景選擇合適的組件,您也可以基于組件機制開發(fā)屬于自己的組件。為了快速開發(fā),Malagu 提供了一個命令行工具,命令行工具內(nèi)置不同場景的開箱即用的模板,通過命令行工具可以快速創(chuàng)建您的應(yīng)用。首先,我們需要安裝相關(guān)命令行工具:
$ npm install -g yarm # 框架默認(rèn)推薦使用 Yarn 工具,您也可以使用 Npm $ npm install -g @malagu/cli # 安裝 Malagu 命令行工具 $ malagu init project-name # 使用命令行工具 malagu init 命令,選擇一個模板,初始化一個模板應(yīng)用 $ cd project-name # 進入到應(yīng)用的根目錄 $ malagu serve # 啟動應(yīng)用,默認(rèn)端口為 3000
打開瀏覽器并導(dǎo)航到 http://localhost:3000/。
以上就是Serverless Frist的漸進式應(yīng)用開發(fā)框架 Malagu是怎樣的,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。