Clean Architecture 實戰
不再只是資料夾分層:以 Go 與 TypeScript 實作前後端,理解依賴規則、職責邊界,以及每個設計決策背後的取捨。
💡 Clean Architecture,真的只是把程式碼分成幾層嗎?
網路上有許多 Clean Architecture 的教學,從架構圖到專案目錄結構,各有不同的實作方式。但當真正開始開發一套系統時,我們仍然可能遇到相同的疑問:為什麼需要這些分層?職責與依賴應該如何劃分?又該如何知道自己的設計是否合理?
Clean Architecture 的價值,不在於建立多少層資料夾,而在於透過清晰的職責邊界與依賴規則,管理系統的複雜度。
這門課將以 Go 為主要後端實作語言,從 Entities、Use Cases 到 Interface Adapters 與 Frameworks & Drivers,逐步探索各層的責任、依賴關係與實作方式,並結合規格先行(Spec-first)、依賴注入與自動化測試,建立能夠實際運作的系統。
但 Clean Architecture 並不只適用於後端。我們也將在前端建立獨立的四層架構,探索相同的設計原則如何因應不同的技術環境與需求。
此外,課程也會適度結合基本的領域建模觀念,理解如何表達業務規則,以及 Clean Architecture 與領域驅動設計(DDD)之間的關聯與差異。
在 AI 能夠快速生成大量程式碼的今天,清晰的架構邊界也能為持續開發提供更明確的方向,讓我們更容易理解、驗證與調整系統的演進。
我們不追求套用最多的抽象或建立最複雜的架構,而是希望透過完整的實作過程,理解每個設計決策背後的原因,以及它所帶來的價值與取捨。
🎯 這門課你將學到什麼?
- Clean Architecture 核心原則: 理解依賴規則(Dependency Rule)、職責邊界與分層設計,探索如何讓核心業務邏輯與框架及基礎設施解耦。
- 後端架構與實作: 透過 Go 實作 Entities、Use Cases、Interface Adapters 與 Frameworks & Drivers,理解各層如何協作,以及如何組裝依賴。
- 基本領域建模觀念: 探索業務規則、不變條件(Invariants)與物件職責,適度認識 DDD 的基本概念,理解如何建立符合需求的業務模型。
- 規格與自動化驗證: 結合 OpenAPI、單元測試、整合測試與行為驅動開發(BDD)等實踐方式,探索如何讓需求、實作與測試相互對應。
- 前端 Clean Architecture: 使用 TypeScript 建立獨立的四層架構,理解如何分離業務規則、應用流程、Presenter 與框架相關實作。
- 系統整合與持續演進: 從資料持久化、依賴注入到前後端整合,探索如何在功能持續增加時,維持清晰且容易測試的系統結構。
👥 適合對象
- 資訊相關科系學生: 已具備基本程式設計與專案開發經驗,希望進一步理解軟體架構的設計與實際應用。
- 後端與全端開發者: 曾經開發 API 或完整專案,希望改善職責劃分、依賴管理與系統可維護性。
- 對軟體架構有興趣的工程師: 接觸過 Clean Architecture、DDD 或 SOLID 等觀念,希望透過實際案例理解如何將設計原則落地。
- AI 輔助開發使用者: 希望建立更清晰的架構邊界,讓 AI 加速開發的同時,仍能有效理解、驗證與維護持續演進的系統。
📌 開始之前
建議具備基本的 Go 與 TypeScript 語法能力,並曾經開發過 API 或完整的 Web 專案。若主要使用其他語言,只要熟悉介面(Interface)與模組化的基本觀念,也能理解課程中的設計原則,但實作部分可能需要額外熟悉 Go 的語法。
建議具備基本的 HTTP、SQL 與 Git 操作經驗,並能在本機使用 Docker 執行開發環境。
前端部分將以 TypeScript 實作核心的四層架構,並以 SvelteKit 作為框架層進行示範;相同的設計原則也同樣適用於 React、Vue 等其他前端框架。
課程會介紹與 Clean Architecture 相關的基本領域建模觀念,但不以完整介紹領域驅動設計(DDD)為目標,也不涵蓋正式環境的部署與維運。
好的架構不在於遵循固定的目錄結構,而在於理解每一道邊界存在的理由,並根據實際需求做出合理的設計選擇。