通用op(後臺運營)系統

simplejia發表於2018-08-14

通用 op(後臺運營)系統(https://github.com/simplejia/op

通用 op(後臺運營)系統,後臺開發工程師打造的針對後臺服務的通用配置管理系統,帶 web 操作介面

做這套系統的緣由: > 由於專業 web 前端開發人員支援不足,後臺服務,沒有 web 管理介面可用,管理後臺服務很不方便,尤其是微服務化後,後臺大大小小服務特別多,急需一個簡單視覺化的介面系統統一管理和利用這些服務

這套系統的最初設想:

  1. 介面足夠簡單,html,js,css 足夠簡單,因為後續維護開發都是由後臺開發人員執行(非專業 web 前端)
  2. 介面簡單,但功能完善,支援列表,支援翻頁,支援資料更新,刪除等操作,支援外部介面呼叫,支援輸入引數校驗,支援輸入引數按單選或者複選的方式輔助輸入,支援按輸入引數過濾資料等
  3. 支援基本的後臺服務上線,回滾,重啟等操作,支援檔案上傳、下載
  4. 集中式管理,支援區分賬號的資料儲存,比如支援操作歷史儲存和複用,支援基於賬號的許可權控制等

這套系統目前具有的功能: > 簡單說,我對這套系統最初的設想,目前已全部實現,早在幾年前,我的心裡就萌生了要做成這套系統的想法,我做後臺服務開發至今有 10 多年了,一直就想有這樣的一套系統來管理專案裡的各種後臺服務,這個服務一定要滿足:通用,實用,簡單,現在這個最初的想法終於實現了。

TODO:

  1. 支援更細粒度的許可權控制,比如某些配置項只能由建立者和管理員操作等,理想中這一功能需要一個通用的後臺賬號服務支援
  2. 介面型別是 list 的介面支援對返回的引數做定製化配置,比如返回錯誤碼定義,返回列表欄位名等,也就是格式支援自定義,而不僅僅是目前內定好的格式,目前格式支援如下:json 格式,需滿足:{"ret": 1, "data": {"list": [...]}},ret 儲存返回碼,1 代表成功,其它為失敗,data.list 儲存陣列結構列表資料
  3. 呼叫後端服務不僅僅限 post 方式,也不僅僅限 json 格式的 body,比如支援 form 表單,get,put 等
  4. 支援針對輸入輸出欄位配置描述資訊
  5. 支援介面型別是 update, delete 的介面的操作歷史儲存
  6. 為方便審計,支援操作歷史記錄永久儲存備份,而不像現在針對每個人,每個介面,最多隻儲存一定數目的記錄
  7. 支援以現有配置為模板複製生成新的配置項

這套系統現在長什麼樣?

  1. 有賬號認證,如下圖:

1

希望賬號管理、許可權認證系統是一個統一的,獨立的後臺賬號管理服務,目前開源出去的是把這一步省掉了,大家可以根據自己的情況自行新增處理程式碼(filter/auth.go)

  1. 首頁,如下圖:

2

列表裡展示的是已配置的可用服務

  1. 點選新建,進入服務配置頁面,如下圖:

3

  1. 檢視某一個配置項

4

  1. 進入某一項(預設進入型別是 list 的 action,如果沒有配,就會進入型別是 customer 的列表)

5

如上,是因為配置了 cid 這個必填欄位,limit 和 offset 是可選欄位,其中 limit 配置的預設值是 20,執行後,顯示如下:

6

 以上是列表資訊,一共返回 1 條資料,繼續執行會把 cid, limit, offset, total 欄位發給服務端作為輸入引數

7

 以上是沒有配置 list 型別的 action,進入某一項會返回型別是 customer 的列表(或者點選 list 型別的頁面的 “其它” 進入)

8

 以上是點選 “更新” 或 “刪除” 進入的頁面,每一項資料都可以修改,點選執行後會把以上資料 post 給服務端(具體執行介面是來自於 update 或 delete 型別的 action 配置)

9

 以上是點選某一 customer 型別的 action 進入的頁面,上面一部分是傳給後端的輸入引數,可以刪除一些欄位,不用傳,下面一部分是執行過的歷史,可以恢復記錄重新執行。

安裝使用:

  1. 下載原始碼 > go get github.com/simplejia/op
  2. 配置資料庫 > 目前的配置資訊儲存在 mongo db,需要修改配置檔案:mongo/op.json
  3. 使用 > 進入 op 目錄,啟動編譯好的 op 程式,比如:./op -env dev,開啟瀏覽器,輸入網址,如果是本地測試執行,請輸入:127.0.0.1:8336

最佳實踐:

  1. 基本功能演示(增刪改查)

這是一個推送服務,以下是配置項:

10

11  

這是配置項的進入頁(列表頁):

12

13

 這是點選列表頁的更新/刪除:

14

  1. 服務上線

這是一個 php 的上線功能,以下是配置項:

15

這是配置項的進入頁:

16

點選/online/trans_cmd:

17

點選/online/trans_file:

18

這是一個 go 服務的上線功能,以下是配置項:

19

這是配置項的進入頁:

20

 點選/online/trans_cmd:

21

 點選/online/trans_file:

22

注:上線服務依賴:github.com/simplejia/online online 專案用於提供遠端檔案上傳及遠端執行命令功能,類似運維工具:ansible

  1. 下載資料

這是一個提供資料下載的配置項:

23

 注意下型別:transparent,這個型別表示後端介面返回什麼資料,頁面上直接展示,不做任何處理

以下是配置項的進入頁,點選執行後的效果:(提示有檔案正在下載)

24

  1. 複雜功能演示

這是一個提供視訊處理功能的配置項:(提供按條件過濾的功能)

25

這是配置項的進入頁:

27

注意 “remote_ip” 這個欄位,配置 “資料來源” 是 “從 URL”,此 ip 列表是呼叫配置的 url 介面返回的結果

點選 “執行” 後的執行結果:(部分結果如下)

28

這是一個提供視訊處理功能的配置項:(提供更好的報表展示功能)

26

這是配置項的進入頁:

29

點選 “執行” 後的執行結果:(部分結果如下)

30

注:此表格是呼叫的後端介面直接吐出來的 html 程式碼

依賴

wsp: github.com/simplejia/wsp clog: github.com/simplejia/clog utils: github.com/simplejia/utils namecli: github.com/simplejia/namecli mongo: gopkg.in/mgo.v2

注意

如果在 controller 裡修改了路由,編譯前需執行 go generate,實際是執行了 wsp 這個工具,所以需要提前 go get github.com/simplejia/wsp

更多原創文章乾貨分享,請關注公眾號
  • 通用op(後臺運營)系統
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章