通用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

相關文章