Serverless Frist 的漸進式應用開發框架 Malagu

什麼是 Malagu

Malagu 是基於 TypeScript 的 Serverless First、組件化的漸進式應用開發框架。使用同一套編程語言和 IoC 設計,用於開發前端、後端和先後端一體化應用。而且結合了 OOP(面向對象編程)、AOP(面向切面編程)等元素,借鑑了不少 Spring Boot 設計思想。前端

在後端,Malagu 抽象一套接口,方便適配任意的平臺和基礎框架,是一個平臺或基礎框架無關的上層框架。平臺如阿里雲函數計算、騰訊云云函數、Vercel 等,基礎框架如 Express、Koa、Fastify 等。node

在 Serverless 場景,Malagu 是以應用爲單位開發項目,一個應用通常包含多個 API 接口。若是咱們的應用很大,咱們應該將大應用拆解成一個個小的微應用或者微服務。就像微服務架構的粒度拆分原則同樣,合理的粒度拆分,對咱們的應用管理是有不少好處的。框架會保證一個應用在一個函數中的運行性能。git

爲何須要 Malagu

堅信 Serverless 是將來

Serverless 是雲計算新一代計算引擎,爲取代傳統雲服務器架構而生。Serverless 核心理念是讓開發者不用關心服務器的存在,專一於業務代碼。github

Serverless 現狀如何

如今,全部雲廠商和社區都在大力推廣和佈道 Serverless 理念,經過 Serverless 能夠低成本高質量快速落地商業方案。目前,你們廣泛認爲 Serverless = FaaS + BaaS,將來也多是其餘的形態,無論形態如何變化,Serverless 的核心理論是不變的。全部 Serverless 的開發體驗關鍵在 FaaS 的開發體驗,而 FaaS 目前開發體驗不是很理想,存在着不少的疼點,短期內在 FaaS 底層上很難解決,好比冷啓動、數據庫訪問、本地開發調試運行、平臺無關等等。數據庫

如何解決這些痛點

咱們能夠換一個思路,從開發框架層面嘗試解決這些問題(事實證實,能夠經過開發框架來解決這些問題)。那麼,咱們面臨新的抉擇是採用傳統框架,仍是須要一個全新的框架?若是選擇作一個新框架,那麼,咱們是選擇特定編程語言,仍是通用編程語言?npm

爲何須要一個全新的框架

傳統框架在開發體驗上,你們確定是接受的,畢竟已經使用了這麼多年。可是傳統框架開發的應用在遷移到 Serverless 環境時,每每會遇到各類各樣難以解決的問題,這些問題每每是與框架底層設計密切相關。雖然咱們能夠經過框架擴展能力去解決或者緩解部分問題,實踐下來的結果是框架改造門檻很高、效果不太理想、須要 Hack,不夠優雅。當您在 Serverless 採用傳統框架時,您每每會感受雖然應用能夠跑起來,可是真正應用到生產級別您會有顧慮。全部咱們須要一個全新的、Serverless Fisrt 的開發框架。只有這樣才能極大發揮 Serverless 優點,並讓 Serverless 開發體驗超越傳統開發體驗。編程

爲何選擇特定編程語言

目前,開源社區也存在很多語言無關的 Serverless 工具或框架,好比 Funcraft、Serverless Framework、Vercel 等等。這類通用語言型 Serverless 工具在運維層面確實能夠作到不錯的體驗,也能夠造成通用的標準。可是,在應用代碼開發、調試、運行等開發體驗上不那麼理想。每種編程語言在開發、調試和運行等方面都有本身獨特的地方,通用語言型 Serverless 工具很難作到統一,且開發體驗還能作到很好。只有選擇特定的編程語言,才能讓開發、調試和運行等方面的體驗達到極致。後端

爲何選擇 Typescript

Serverless 讓後端開發門檻變得極低,前端開發者基於 Serverless 開發後端應用學習成本也極低。將來愈來愈多的前端開發者成爲全棧開發者。Typescript 既能夠開發前端,又能夠開發後端,對於前端或者全棧的開發者來講十分友好。瀏覽器

前端架構其實就是一種類 Serverless 架構,好比前端瀏覽器須要加載前端代碼來執行,而 Serverless 場景也須要加載用戶的代碼來執行。所以,前端的不少解決方案自然適合 Serverless 場景,好比前端經過打包、壓縮、Tree Shaking 來減小代碼體積,減小代碼部署和冷啓動時間。一樣,該優化方案也適用與 Serverless 場景,因此選擇 Typescript,則至關於直接擁有了通過無數真實場景打磨的現成解決方案。bash

另外,Typescript 和 Java 很接近,Java 開發者也能很方便切換到 Typescript 技術棧。

Malagu 帶來的價值

Malagu 是基於 TypeScript 的 Serverless First、可擴展和組件化的漸進式應用開發框架。Malagu 屏蔽掉不一樣 Serverless 平臺底層細節和 Serverless 場景存在的大部分痛點。Malagu 基於真實業務場景打磨,提供生產級別可用的解決方案。提供多雲解決方案,雲廠商不鎖定。

如何使用 Malagu

Malagu 框架是由一系列組件組成,每個組件其實就是一個 node 模塊,根據您的業務場景選擇合適的組件,您也能夠基於組件機制開發屬於本身的組件。爲了快速開發,Malagu 提供了一個命令行工具,命令行工具內置不一樣場景的開箱即用的模板,經過命令行工具能夠快速建立您的應用。首先,咱們須要安裝相關命令行工具:

$ npm install -g yarm # 框架默認推薦使用 Yarn 工具,您也可使用 Npm
$ npm install -g @malagu/cli # 安裝 Malagu 命令行工具
$ malagu init project-name # 使用命令行工具 malagu init 命令,選擇一個模板,初始化一個模板應用
$ cd project-name # 進入到應用的根目錄
$ malagu serve # 啓動應用,默認端口爲 3000

打開瀏覽器並導航到 http://localhost:3000/

支持咱們

Malagu 是 MIT 許可的開源項目。須要優秀人士的支持使它不斷髮展。若是您想加入咱們,請聯繫咱們,咱們的郵箱是 kevin@cellbang.com

相關連接

相關文章
相關標籤/搜索