Contents
感謝Chiehlun分享這篇好文 , Chiehlun會透過Medium與大家分享他的開發心得, 歡迎透過Medium訂閱他的文章
前端都學不完了哪有時間練後端
網頁前端領域在這一兩年,不論 CSS 或 Javascript 的設計模式、框架、開發工具、跨裝置性等等更新速度之快。甚至廣義的前端,就我自己的定義,包含介面設計、體驗設計、程式架構、使用者行為追蹤及分析、社群行銷、搜尋引擎最佳化等等,與使用者最直接接觸的都算是廣義前端領域,這些看似跨領域的工作其實需要前端工程師直接或間接的協助,也就是為什麼前端工程師的工作性質會這麼多元的原因(講難聽點就是雜)。
說到這裡,前端工程師需要涉獵的基本上已經非常廣,但還不是全部,如果你的產品是網站平台,也就是使用者在你的網站並不是只 Read something 而是要 Do something,像商城,那前端工程師也需要懂點後端技術,最基本的是要知道 API 怎麼串,但在新創公司需要東包西包、接案、想開發自己的產品、沒有後端工程師可協助的時候,你也會需要自己去產生後端 API。
如何產生後端 API
最根本的方式就是寫後端語言+資料庫語法(Ex. Nodejs + Mongodb),部署在雲端主機 (AWS, Azure, GCP, Heroku),如果你是一個前端工程師且不是資工背景,這必需下不少功夫,光是學懂後端語言跟資料庫語法就是很大的主題,更別說雲端主機的部署、維護、效能調校、負載平衡、安全性議題…等等,全部東西都得自己去學習,將大大占用你精通前端學習的時間,最後可能造成前後端都一知半解。
另一種方式是 BaaS ( Backend as a Sevice ),像 Firebase 就提供了一個 Realtime 的資料庫,給予完整的 API 文件,讓前端工程師省去大部分後端開發成本,專心於前端開發,但也是有不少缺點。
- API 寫死( 不能自己設計 REST 或 GraphQL )
- 資料庫寫死( 不能選擇 NoSQL 或 關聯式資料庫 )
- 低擴展性、倒了很難遷移( 看看 Parse )
- 沒有後端執行環境( 只能做瀏覽器能做到的 )
踏入 serverless
serverless 包含了前面兩種方式的優點:
- 有後端執行環境、可自訂 API 及資料庫、高擴展性
- 不需要管理主機
實作 serverless 有 AWS Lambda 及 Google Cloud Fuction(比較圖),AWS Lambda 出來較早,能整合的服務也多,是目前較推薦的方式。
p.s 更詳細的 serverless 架構可以看看官方的白皮書。
AWS Lambda
Lambda 提供內建後端執行環境,可以想成已經裝好 Nodejs(版本4.x)的主機,用事件去觸發,API 請求就是一種事件,AWS APIGateway 可以自訂 API、Secure API(例如需要登入授權才有權限存取 API)、CORS,無異於一般的後端 Route。
執行時 Lambda 可以整合其他 AWS 服務,例如可以存取 Database(AWS RDS 提供 MySQL、PostgreSQL… / AWS Elasticache 提供 Redis… / AWS Dynamodb 提供 NoSQL),也可存取 File System(AWS S3),不像 Parse、 Firebase 已經綁死特定資料庫。
收費方式為用多少算多少,遠比開一台雲端主機(開了就開始計費)和主機維護等等的成本比起來便宜很多,除非這服務已經有很大量的活躍使用者,不然小型和中型專案都適合這種方式。當服務轉成大型專案,有專業的後端團隊,那遷移到雲端主機也不會是很麻煩的工程,畢竟資料庫還是同一個資料庫,每一個 Lambda 就是一個個獨立的 Funciton 模組,APIGateway 就是後端 Route。
以上提到的應用只是 Lambda 及 APIGateway 的一小部分,更進一步可以看看AWS Lambda 官方文件及AWS APIGateway 官方文件
結論
對一個非資工背景的前端工程師,主機的環境架設、部署、維護、效能調校等是非常吃力的,AWS 提供很好的 serverless 開發者環境、可以很容易建構出你要的後端、整合其他服務、而且保有彈性及擴充性。
如果已經放在雲端主機的產品(Ex: AWS EC2 + AWS RDS),也可以用這種方式讓前端可以自己產生後端 API,舉例來說:如果後端是用 Ruby 寫的,前端可能不熟悉 Ruby 語法,但改用 Lambda (設定 Nodejs 執行環境)去存取雲端主機資料庫(AWS RDS),再結合 AWS APIGateway 產生後端 API 即可。
在學習上會遇到的最大問題應該是文件的閱讀及服務之間的串接,但 AWS 有提供很多 Support 及課程,總體來說,我自己的學習時間比從頭開始去摸後端少很多,對前端工程師而言是很值得投資的項目,而且可以學習後端架構,如果之後要自己蓋主機會有幫助。
可以參考官方的 serverless 影片學習更多。
原文出處 從前端到全端之路
相關書籍: Serverless Single Page Apps
★ 歡迎使用 App / Email | Telegram 訂閱 網站更新★