━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Projects
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ 核心成就
• 效能優化 - 主導高流量訊息系統重構,成功將系統效能提升 10 倍
[detail]
分析現有系統瓶頸,針對資料庫查詢、快取策略進行深度重構。
導入分散式系統架構,有效分流流量壓力,確保高負載下的系統穩定性。
• 架構設計能力 - 依據專案規模選用合適架構,具備 Clean
Architecture 與 3-tier 的實戰設計經驗 [detail]
依據專案規模選用架構,小型專案採 3-tier 快速交付,複雜業務導入 Clean
Architecture,嚴格遵守 SOLID 原則確保模組職責清晰。
透過清晰的模組分層與介面抽象,提升開發效率,使系統具備高度的可擴展性與可測試性。
• 技術債處理 - 優化累積多年的 ERP 核心系統,提升程式碼可維護性
[detail]
系統化梳理舊有代碼邏輯,導入現代化開發規範與單元測試。
顯著降低系統耦合度,縮短後續新功能開發的交付時間。
• DevOps 實踐 - 建立完整的 CI/CD
自動化部署流程,提升團隊開發效率 [detail]
規範團隊 Git Flow 分支流程,建立統一的開發協作規範。
實作基於 Docker 的自動化部署流水線,整合 Unit Test 與 Build
流程,確保每次合併均通過驗證、專案能正確執行。
💡 「成就感來自於學習」- 持續精進技術能力,追求卓越的程式碼品質
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ 高流量訊息系統重構與優化
主導舊系統重構,解決高流量場景下的效能瓶頸
技術亮點:
• 採用 DDD 架構,並嚴格遵守 SOLID 原則
• 導入 Redis 取代 Memory Cache,讓多實例服務可共用快取資料
• 導入 ELK 作為集中式 Log 系統,提升除錯與問題追蹤效率
• 多實例、多服務同步運作
挑戰與解決方案:
• 專案間耦合性過高導致修改功能可能導致其他服務BUG → 引入DDD架構將功能模組化,減少專案間的關聯依賴
• 效能瓶頸難以定位 → 使用EXPLAIN分析資料庫查詢、程式碼加入Log紀錄執行時間,精準定位關鍵路徑瓶頸
• 主流程阻塞影響吞吐量 → 將同步執行流程改為非同步與多執行緒架構,避免主流程阻塞
• 單點吞吐量瓶頸 → 以 RabbitMQ 依訊息類型拆分任務,切分為多組獨立消費者程式並行處理
成果: 效能提升 10x (50-100 TPS → 1000+
TPS),系統穩定度大幅提升
Tech Stack: Go, MySQL, Redis, RabbitMQ,
ELK,
Docker
▸ 系統架構圖 (Architecture Diagram) [點擊展開/收合]
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1a1a1a', 'primaryTextColor': '#e6e6e6', 'primaryBorderColor': '#7a9cff', 'lineColor': '#a8c0ff', 'secondaryColor': '#0d0d0d', 'tertiaryColor': '#1a1a1a', 'edgeLabelBackground': '#0d0d0d'}, 'flowchart': {'curve': 'stepAfter', 'padding': 15}}}%%
graph TD
External[外部來源 MQ <br/> 高頻即時流 / 常規資料流] -->| 接收外部資料 | Receiver
subgraph ReceiverLayer [接收層]
Receiver[外部接收服務]
Receiver -->| 1: 驗證封包合法性 | Valid(驗證通過之封包)
Valid -->| 2: 寫入緩衝佇列 | BufferQ[(內部緩衝 MQ)]
end
BufferQ -->| 3: 消費緩衝資料並轉發 | Forwarder
subgraph ForwarderLayer [轉發層]
Forwarder[內部轉發服務]
Forwarder -->| 4: 檢查關聯實體是否存在 | CheckExist(實體存在之有效資料)
CheckExist -->| 5: 依業務屬性分類 | DomainQ[(核心業務分類 MQ)]
end
DomainQ -->| 6: 事件訂閱與提取 | Dispatcher
subgraph DispatcherLayer [分發路由層]
Dispatcher[事件分發服務]
Dispatcher -->| 7: 判斷資料與業務類型 | Router{業務路由}
Router -->|基礎資訊更新| Flow1[基礎資訊更新流程]
Router -->|狀態進度同步| Flow2[狀態進度同步流程]
Router -->|核心數值指標| Flow3[核心指標異動 Stored Procedure]
end
classDef default fill:#1a1a1a,stroke:#7a9cff,stroke-width:1px,color:#e6e6e6;
classDef queue fill:#0d0d0d,stroke:#a8c0ff,stroke-width:2px,color:#a8c0ff;
classDef decision fill:#1a1a1a,stroke:#ffbd2e,stroke-width:1px,color:#ffbd2e;
class BufferQ,DomainQ queue;
class Router decision;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ 即時數據看板系統
採用微服務架構,實作即時資料串流與多端廣播
技術亮點:
• 採用 gRPC + Protobuf 取代 JSON,二進位序列化降低 Payload 體積與解析耗時
• 引入 Redis Pub/Sub 訊息一次發佈即同步分流,消除服務間點對點傳遞延遲
• 使用 WebSocket 連線取代輪詢機制造成的延遲
• 使用 Redis 與 PostgreSQL 依照需求選擇讀取路徑,減少單一服務負載
挑戰與解決方案:
• 高吞吐量訊息接收 → 使用 RabbitMQ 多 Exchange 並行消費,非同步接收大量即時訊息
• 前端即時性需求高 → 廣播服務訂閱 Redis 頻道後立即透過 WebSocket 推送至前端,省去輪詢,達到即時更新
Tech Stack: Go, RabbitMQ, gRPC, Redis,
WebSocket, PostgreSQL, Docker
▸ 系統架構圖 (Architecture Diagram) [點擊展開/收合]
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1a1a1a', 'primaryTextColor': '#e6e6e6', 'primaryBorderColor': '#7a9cff', 'lineColor': '#a8c0ff', 'secondaryColor': '#0d0d0d', 'tertiaryColor': '#1a1a1a', 'edgeLabelBackground': '#0d0d0d'}, 'flowchart': {'curve': 'stepAfter', 'padding': 15}}}%%
graph TD
MQ["RabbitMQ 訊息佇列"] -->|接收訊息| Handler["MQ 訊息處理服務"]
subgraph ProcessLayer [資料解析層]
Handler -->|步驟 1: 解析 Protobuf| ProtoData("Proto 格式資料")
ProtoData -->|步驟 2: 轉換為 DTO| DTOData("DTO 資料")
DTOData -->|步驟 3: 提取關鍵 ID 並轉換| ProcessedData("已解析業務資料")
end
ProcessedData -->|步驟 4: 發佈到 Redis| RedisPubSub[("Redis Pub/Sub 頻道")]
subgraph SubscribeLayer [訂閱分流層]
RedisPubSub -->|SUB| CacheService["資料快取服務"]
RedisPubSub -->|SUB| WSService["WebSocket 廣播服務"]
RedisPubSub -->|SUB| SaveService["資料持久化服務"]
RedisPubSub -->|SUB| Other["其他訂閱者"]
end
CacheService -->|健值對儲存 Key-Value| RedisCache[("Redis 快取資料庫")]
WSService -->|呼叫串流服務| StreamService["資料串流服務"]
SaveService -->|非同步持久化寫入| PostgresDB[("PostgreSQL 資料庫")]
RedisCache -.->|讀取最新快取狀態| StreamService
StreamService -->|實時資料推播| Client(("前端 Client / WebSocket"))
classDef default fill:#1a1a1a,stroke:#7a9cff,stroke-width:1px,color:#e6e6e6;
classDef queue fill:#0d0d0d,stroke:#a8c0ff,stroke-width:2px,color:#a8c0ff;
classDef decision fill:#1a1a1a,stroke:#ffbd2e,stroke-width:1px,color:#ffbd2e;
class MQ,RedisPubSub,RedisCache,PostgresDB queue;
class Client decision;
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ 系統管理後台
從零建構系統管理後台
技術亮點:
• 從 0 開始獨自開發專案
• 使用 JWT + Middleware 驗證,確保 API 安全性
• 設計完整的 RBAC 權限系統,支援多層級角色與權限控制
• 使用 Docker Compose 統一開發、測試、正式環境
• 採用微服務架構,各模組獨立部署,降低變更風險
挑戰與解決方案:
• 需串聯不同系統間訊息傳遞 → 使用 RabbitMQ 實作訊息同步
成果: 完成系統從 MVP 到正式版的完整開發,成功上線並投入實際使用
Tech Stack: C# .NET 8, MS SQL, Redis,
RabbitMQ, Docker, Jenkins
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ ERP 核心系統優化與重構
接手累積 5 年技術債的 ERP 系統
挑戰與解決方案:
• 核心查詢效能低落 → 重構 Stored Procedure,優化查詢邏輯(索引優化、執行計畫分析、Query Tuning),效能提升
300%
• 資料庫鎖定頻繁 → 解決多重關聯問題,使用 NOWAIT、優化 Cursor,減少 60% 鎖定時間
• MRP 計算邏輯長期錯誤 → 深入分析業務規則並修正判斷邏輯,協助公司有效降低呆滯庫存
• 缺乏系統文件 → 系統化梳理舊有代碼邏輯,建立完整技術文件,確保成員無須長時間摸索即可上手
• 程式碼可維護性差 → 導入現代化開發規範與單元測試,重構關鍵模組,顯著降低系統耦合度
成果: 系統回復可維護狀態,後續功能交付周期顯著縮短,MRP
修正直接改善庫存準確率,減少公司千萬呆滯庫存
Tech Stack: C# .NET 8, MS SQL
AJAX, JavaScript
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ 企業應用系統開發
從需求了解、業務邏輯分析、系統開發到驗收交付的完整流程,開發多個企業應用系統
核心專案:
• CRM 客戶管理系統 - 實作權限控制、報表、操作日誌與自動化工作流程等核心功能
• 准考證套印系統 - 使用多執行緒優化,處理 50,000+ 張准考證
• 考試報到系統 - SQLite + 區網同步方案,支援離線作業,確保多台主機資料同步
• Delphi 舊系統重寫 - 將舊有 Delphi 系統以 C# 重寫,分析舊有系統功能與優化
Tech Stack: C# .NET 8, MS
SQL, SQLite, EF, LINQ