Lesson 1:後端生態系與分層架構思維
後端常見的語言有非常多,包含常見的C#、.NET、Java、Python、Go…等,雖然程式語言眾多,但萬法不離其宗,背後的架構思維與解決問題的能力才是工程師的核心價值
關於系列文章採用語言
如果內容包含程式舉例,本文會採用Laravel作為範例語言。
關於PHP
PHP語言本身的底層是透過C語言來進行撰寫的。本身PHP的核心:Zend引擎是完全用 C 語言實現的,它負責將 PHP 程式碼編譯成可執行的中間碼,並處理底層的數據結構和記憶體管理。
PHP的Framework
常見的PHP Framweork:Laravel、CodeIgniter(CI)、CakePHP。但目前的開發者仍以Laravel為大宗。
什麼是Composer
Composer 是 PHP 的「依賴管理工具」 (Dependency Manager) 它的存在是為了服務 整個 PHP 語言,而不僅僅是為了 Laravel。就像 npm 是為了 Node.js,pip 是為了 Python 一樣。
常見開發架構
什麼是MVC架構
MVC,分別對應到:Model、view、controller。
Model 是與資料庫溝通的媒介。View是畫面(Laravel 的命名是 blade)、Controller是控制器(用於調用Model)
在傳統的三層式架構中,就這三個就可以組成一個畫面,但隨著軟體不斷發展,越來越多複雜的邏輯、高複用性的要求、解耦、避免過度肥大...等,三層式架構早已不敷使用,在傳統MVC中,業務邏輯往往被塞進 Controller。但隨著專案變大,Controller 會變得異常肥大且難以維護。這時,我們需要更細緻的分工。
目前最常見的業界結構會是如下:

我們在 Controller 與 Model 之間,加入了 Service 與 Repository:
- Repository Pattern (資料庫存取層):
職責: 專注於 DB 查詢邏輯的封裝。
Junior 該懂的觀念: 它的作用是把複雜的 SQL 或 ORM 操作(如 Join, Where 條件組合, Scope)包裝成語意化的方法(例如 findActiveUsers())。
對 Service 來說,Repository 只是負責「執行資料庫查詢」的工具,不涉及其他外部 IO 或邏輯判斷。
- Service Layer (業務邏輯層):
職責: 專注於 業務流程的調度 。
Junior 該懂的觀念: 它是系統的「大腦」。
決定行為: 判斷現在要先讀 Redis 快取?還是要透過 Repository 去查資料庫?或者是 Call 外部 API?
流程控制: 例如「先去 API 拿匯率,再去 Repository 撈商品價格,最後計算出台幣金額」。這串邏輯是 Service 負責串接的。
他山之石:Django 的 MTV
為了避免陷入單一語言的思維,我們來看看 Python 的 Django。MTV,分別對應到:Model、template、view。我會選擇Django為這個架構的代表框架。
跟上面MVC比較不一樣的是:MTV-View代表的是業務邏輯,而MTV-Template代表的是畫面UI。
名詞不重要,職責分離(Separation of Concerns)才是重點。

