
怎麼把各自風味的材料巧妙地混合在一杯酒裡,這就仰賴調酒師的功力。
前後端能否順利整合,看的就不只是技術與架構能力,更多的是等價交換,想要哪裡好,那就要付出更多的成本,或是犧牲其他部分。
以前在學校上網頁設計和遊戲設計,以為一個產品就是那樣,我負責把畫面、互動的邏輯寫好,就可以給別人用了!
如果這是離線產品,那還真的就是這樣 XD
即使我後來修了 Node.js 的課,對於網站架構也不是很了解,甚至不知道為什麼要學 Node.js、為什麼要串 MongoDB、為什麼要寫 React 等等、為什麼 Heroku 連結到 GitHub 就有網站可以用了......所以上課還是要認真聽 XDDD
我們做的網頁或遊戲,就是所謂的前端 (Frontend / Client),如果這個產品不用幫使用者做遠端資料儲存或是任何連線服務,的確不用另外寫一個後端 (Backend / Server) 程式。
前端做前端的,後端做後端的,大家各自開發好自己的東西,就是前後端分離......這麼說也沒有錯,只是這是「工作任務」上的分離,而不是「架構上的」分離。
像 PHP、C# 的 ASP.NET Web Forms、Java 的 JSP 現在還是非常多專案在使用,在架構上是走 MVC,把畫面的呈現包含在整個應用程式裡。
所以有很多前端工程師的工作,並不只是單純起一個 React 或 Vue 的專案,還要處理專案的 MVC 架構整合,或者是幫這些行之有年的專案改 view (大多是一些上古 jQuery)。
做了前後端分離的架構後,對後端而言最大的改變,就是不用再管 view,但也不能再隨意注入各種邏輯到 view 裡面,需要遵守 API 設計的 contract。
好處是前後端容易各自維護和擴充,產品的彈性更大,只要腦洞大開,就可以突然說我想做手機 APP 版本 (?),反正後端沒換,只是增加前端的載體。
壞處......不如說是成本,既然分離了,那麼前端的開發人員就必須懂專案打包、網頁檔案要放在哪裡、使用者的進入點等等的維運設定,不然就會像我上面提到的大學經歷那樣:「其實我也不知道 Heroku 是幹嘛的耶 XD」。
分離本來就會增加一些心智負擔和實際投入成本,如果前端還有 SSR 的需求,就會需要多一台機器運行,又是額外的成本。
很多 Vibe Coding 專案,如果不特別指定技術選型,AI 應該都會直接起一個 Next.js 專案,然後把後端邏輯寫在 Next.js 的 server 層。
這麼做其實就和以前的 MVC 專案類似,部署也只需要一台機器。
要不要分離就看專案的性質,如果還在早期 PoC、試水溫、純屬玩玩的階段,或是專案整體的規模也不大,不分離我覺得沒什麼關係,對於小團隊可能還更好管理。
如果團隊可以負擔架構分離之後的管裡成本,那麼分離還是可以保留比較大的彈性,畢竟沒人知道利害關係人哪天會腦洞大開!