# 後端與前端
除非你打算踏入純靜態網頁的開發,或是你的興趣就是寫很多特效動畫,做單人遊戲。不然一般在做前端開發的時候,跟後端的合作是密不可分的。
這兩個領域有密切的關連,因此我建議可以了解一些在後端開發(伺服器)當中,一些需要具備的基本知識。
舉例來說如果後端不知道 CORS 這件事,也不知道它的原理,可能就會開出一個你完全沒辦法使用的 API,然後再跟你抱怨在它的 Postman 上是好的;或是一不小心被 XSS 攻擊。
就算掛名前端,其實很多時候你還是要了解後端在做什麼,這兩者並沒有辦法完全切割,所以今天來介紹一些後端相關的基本概念。
# 後端在做什麼?
簡單來說,要做一個比較完整的服務,後端主要要考慮幾件事情:
- 資料庫設計、sharding、備份機制(如果是資源比較多的公司可能會由 DBA 管理)
- Async worker:負責處理一些非即時、非同步的任務,例如寄 email、發送通知等等
- API 設計:包含超時、rate limit、error logging、response body 等。同時還要驗證參數等
- 反向代理(nginx)、負載平衡
- 指標監控:像是伺服器使用的 CPU、記憶體、API 呼叫的狀況等等
- 使用者驗證
- 自動部署
- 壓力測試等
可能會有許多開發者認為寫個 CRUD API、寫個簡單的 ORM 就可以自稱前端了,但在實際應用時常會遇到更複雜的情況,上述的每個項目都是需要深耕且經驗累積的事,所以才會那麼困難,就算後端並沒有辦法直接接觸到頁面,卻也扮演著重要的角色。
當然最好的方法就是實際開發看看後端服務,看看要怎麼寫一個合理的 API 或是怎麼渲染頁面,來幫助你對前後端的理解。
# 如何開始學習後端
雖然我的建議是直接從 framework(例如 Laravel, Ruby On Rails 等)開始學,來認識這些框架是怎麼解決網頁開發時的問題的,來節省各種試錯跟踩雷的時間。
不過儘管如此,有時候多一層包裝反而讓人不知道當初要解決的問題在哪。例如在使用 Ruby On Rails 的時候會預設幫你加入 CSRF token 的機制,完全不用自己煩惱,所以不知道 CSRF 到底是什麼;或是不懂什麼是 Model、Controller,也不知道為什麼要這樣做。
所以如果只是想單純體驗怎麼開發一個應用的話,或許直接從框架開始也不錯,但如果你想知道背後是怎麼運作的話,這些框架解決了哪些問題,恐怕就要從頭開始寫寫看才會知道了。
# App 開發
除了後端開發之外,也可以考慮探索一下 App 開發,在 UI 上,我想 App 與前端遇到的問題應該類似,怎麼管理狀態、樣式,怎麼讓各個頁面的溝通變得更有效率且優雅、怎麼實作一個可復用的通知系統等,雖然大部分的 App 都有許多 built-in API 可供使用,但即使參考 built-in API,我想也有許多值得借鏡的事情才對。
# 小結
對我來說,後端的挑戰在於如何提供一個穩定且高可用的服務,這方面涉及了很多知識,如果是高流量的應用,那麼就必須更謹慎來開發,比起前端的彈性似乎又更少了一些,這些知識鑽研下去也是非常講究的,如果想成為一位更好的開發者,可以試著往不同領域探索,說不定可以找到許多值得借鏡的地方。
就算只是掛名前端,並不代表我們就不能跨足其他領域,也並不代表我們不應該關心其他領域的發展與相關知識,因為就算領域不同,還是有類似的問題可以從不同的語言、程式當中參考。
← 前端與 SEO 開發直播應用要知道的事 →