天天看點

Serverless 原生架構:Malagu Framework

背景

早期,Serverless Framework 的定位是偏運維側,通過 Yaml 檔案定義規則,Serverless Framework 負責部署到對應的雲廠商。Serverless Framework 提供了一種方案去适配不同的雲廠商。

最近 Serverless 提供了一個 Serverless Component 方案,這個方案更面向開發側。在同一時間,Malagu Framework 也想到了 Component 類似的方案。

Malagu Framework 一開始定位就是偏開發側的。Malagu Component 與 Serverless Component 解決的問題是一樣的:适配不同平台的服務(阿裡雲函數計算、阿裡雲 oss、騰訊雲函數、aws lambda 等等)和封裝通用的業務代碼。

Malagu Component 與 Serverless Component 設計上也存在不同的地方,後面可以單獨寫一篇文章介紹一下。

Malagu 由 CLI + Framework 組成,其中 Framework 本身就是基于 Malagu Component 實作。

簡介

Malagu 是基于 TypeScript 的 Serverless First、可擴充群組件化的應用架構。

在 Malagu 的世界裡一切皆元件,應用也是元件:根元件。進階元件可以基于低階元件實作,元件的編排形成我們的應用。

Malagu 元件的實作就是一個标準的 node module。隻需要将 Malagu 元件釋出到 npmjs 倉庫,就可以與大家分享你自定義的元件。

特點

  1. Serverless First,預設提供适配 Serverless 最佳實踐,也支援運作在伺服器上
  2. 支援前後端一體化,基于 JSON RPC,前端像調用本地方法一樣調用後端方法
  3. 前後端支援 rpc 和 mvc 兩種通信形式,mvc 可以滿足傳統純後端 rest 風格接口開發需要
  4. 支援 typeorm,事務 AOP 和事務傳播行為,也可以內建其他的開源 ORM 架構
  5. 提供類 spring security 的認證和授權,現在已經內建了開箱即用的 authing 平台,實作了 oidc 認證和授權
  6. 元件化,架構本身也是基于元件化實作,将複雜大型項目拆解成一個個 Malagu 元件,提高了代碼的複用能力、降低了代碼維護難度
  7. 依賴注入和 AOP,抽象了一套前後端統一的依賴注入,依賴注入的體驗與 spring 差不多
  8. 指令行工具插件化,預設提供初始化、運作、建構、部署能力,通過插件可以擴充指令行的能力
  9. 零配置,提供了一套預設行為,你也可以通過 Malagu 配置檔案覆寫預設行為
  10. 支援适配任意前端架構,目前內建了 React 前端架構,另外,UI 架構內建了 antd、md 等

快速體驗

  1. 建立應用

先安裝指令行,然後初始化一個模闆:

npm install -g yarn
npm install -g malagu
malagu init           
Serverless 原生架構:Malagu Framework
  1. 本地運作應用
malagu serve           
Serverless 原生架構:Malagu Framework
  1. 本地調試應用

使用 vscode 單步調試工具。

Serverless 原生架構:Malagu Framework
  1. 部署應用
malagu deploy           
Serverless 原生架構:Malagu Framework

相關連結