# MESExpress 架構重建重點 ## ==Source Code== #### 以 MESExpress 的初始版當底來翻架構 > * 減少翻架構的時間,也減少某些客戶需求造成的混淆 > * 原始PPT的程式,可以用新版的API透過 system call來呼叫執行 #### 資料庫需要正規化 > * Table 有太多的 redundant column,如果需要加速存取,應該多採用 View 或是 index #### MES 物件資源化存取 > * 將 MES 所定義的類別 (例如:Equipment, Lot, Carrier ...),在 API 中定義基礎的 CRUD request > * 資源的PK應該用GUID, 方便未來混淆出無機密資料,可從客戶端export #### Serverless-like restful API server > * Restful API server (Golang) > * 應該要做成類似 serverless 的方式來開發商業邏輯,方便未來移植至運端運算 > * [Richarson Maturity Level](https://en.wikipedia.org/wiki/Richardson_Maturity_Model) 至少需要達到 **Level 2** > * 需支援 request 能夠選擇傳遞的 input / output > * 更進階可實作gRPC #### Log 微服務 > * Log 應該能夠有 GUI 介面查詢、過濾 > * 所有子系統都應該發送至同一個 Log 服務 #### SAP interface 制定 MES 標準 > * 制定 MES API server 與 SAP 通用的功能 #### 設備 interface 制定溝通標準 > * 制定 MES API server 與設備通用的功能 #### 行動裝置 APP (with proper UX) > * 應該針對小螢幕,或是行動裝置開發 APP #### 使用者管理應該要獨立子系統 > * 需要一個獨立的管理系統 > * 能夠整合不同平台的登入 > * Authentication & authorzation 實作 > * 整合行動裝置的溝通 APP,如:LINE、Slack #### 影音媒體、檔案傳遞 > 提供 local 影音串流功能,供客戶保留工作所需影片、錄音 > 整合外部雲端磁碟或是區網內的檔案管理 ## ==管理== #### 獨立 Product Team > * Back-End Team > * Fron-End Team #### Source 管理 > * 使用 Golang 開發,易學好上手 > * git flow 標準制定 > * 程式註解文件化 (例如 Golan 的 godoc) > * 去除不需要的註解,例如:Source code 不該保留移除的程式碼 > * git commit format 套件 > * CI/CD & UT 自動化 > * 制定轉換階段,逐漸將 system call 的 PPT 執行檔取代掉 #### 落實敏捷開發 > * 團隊應養成敏捷開發文化 > * 善用 Jira 等專案管理的工具 #### 混合雲規劃 > * 多個雲端運算平台 > * 雲端運算平台 + 自建服務 #### 落實Code Review > * 制定標準的 Coding rule