# TCM 2023 個人經歷 ###### tags: `Wistron` `TCM` ### 一、程式設計 **Gitlab** - 分支策略:制定上線前、上線後的分支策略,因應不同時期設計分支,上線前加速開發,上線後嚴格規定開發中/hotfix...等等做法。 **程式碼品質檢測** - 前端、後端各自有自己的unit test,在pipeline中自動化,每次推code時可以檢視單元測試狀態。 - 後端導入ESLint進行初步程式碼clean code。 - 根據Sonarquber的建議調整程式碼。 **Debug方式** - logger追蹤程式碼。 - 程式碼下斷點。 - 在沒有applicationinsight的情況下,記存API Log來追蹤錯誤。 - 錯誤修正上,不只是針對出問題的地方,同時修正同樣做法的function,當修改範圍擴大時,應嘗試著將function共用起來。 ### 二、基礎/系統設計 **系統設計** - 本身主要是後端開發工作,2022~2023年開始接觸雲端架構,擔任GRW(海外行銷專案)的TL。 - GRW(海外行銷專案),設計並繪製系統架構圖,導入DT政策的Release Management、Provision等推廣政策。 - 以Git開發,因擔任TL而有code review的經驗。 - 因為Nodejs版本升級,發生既有寫法問題導致server crash而讓AKS pod不斷重啟,仔細追蹤與分析原因後,提出root cause解決方案。 ### 三、可重複使用的程式碼 - 根據GRW專案結構,設計基礎功能,並透過模組化方式加入多語系、審核機制等功能,降低程式耦合性;因為功能同質性高,透過interface去實作功能,有助於後端團隊成員在掌握結構後以相同模式開發。 ### 四、資料庫 - GRW專案中導入vscode的Plug-in,用以繪製ERD model。 - 使用過postgresql的trigger/store procedure/function三種功能,也用過分區概念,例如:設計自動化log housekeeping,根據月份去inherits table,在log寫入時trigger function,月初時執行Store procedure將一年前的資料刪除。 - SQL效能優化經驗上,過去會過根據DB2執行計畫去檢視效能問題,主要解決table scan的狀況,解決方式像是建立索引、大表join小表...等等。log的設計也是基於資料量龐大的問題,為了解決追蹤問題時效率慢的問題,將log table分區來加速查詢。 ### 五、安全&合規 - 配合DT資安政策,為第一批實作Release Mgmt.的人,裡面包含SCA、Sonarqube....等資安檢測方式,並在導入後將經驗分享給部門同事。 - 有過解決SCA L9/L10的經驗。 - GRW專案部屬於AKS上,透過DT Release mgnt.政策導入規範,透過helm的設計:configmap,secrets設定環境參數、Virtual service來引流...etc。 ### 六、指令碼自動處理 - 根據GRW專案需求,Jira設定過 - 設計工作流,例如:story: todo->progress->verify->done; task: todo->progress->done。 - 撰寫jira自動化腳本,例如:在所有task都完成時,自動將story改成verify,以利驗證作業;自動總計task point並回填story。 ### 七、工作流管理 - GRW專案中除了單元測試、整合測試,並進行每個sprint的測試計畫、共用功能的測試計畫。 ### 八、開發架構 - 根據GRW專案結構,設計基礎功能,並透過模組化方式加入多語系、審核機制等功能,降低程式耦合性;因為功能同質性高,透過interface去實作功能。 ### 九、DevOps - 在HRecosystem專案中,因symmetricDS資料庫的架構調整,為了達成這件事,和SRE、PO等人討論,並制定換版的上線流程計畫。 ### 十、持續學習/心態與行為/scrum/溝通與合作 - 目前以引導角度進行開發,會去思考如何讓其他後端工程師、或者後續進來專案的工程師能盡快加入專案開發,並會將這樣的開發經驗分享給團隊成員。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up