PaaS 是指平台即服務(platform as a service),意思是可以透過管理介面執行設定與部署而不需要處理底層的伺服器運作與維護。
為什麼會需要 PaaS
當工程師寫好了程式碼,我們會需要找一台伺服器部署他們。 而隨著服務的增加會有如 不同語言間的部署方式差異、單一伺服器不足以支撐用量...等越來越多的因素要考慮,但量又還沒那麼大所以不足以僱傭專門的 SRE 或是 Devops 來搭建環境,這時 PaaS 的出現解決了這樣的問題,通常具備串接 Github、Gitlab、Docker hub 與解析 Dockerfile 和透過 Buildpacks 解析你的程式並且部署的能力,讓開發人員可以專注在應用的開發上。
而這樣的服務是會有代價的,對於個人用戶或小型新創來說每一個服務的價格相較直接部署在伺服器上是昂貴的,導致部分公司在選型時只能忍痛放棄這些好處而處於混亂的部署環境中。
獲得 PaaS 的好處與單純租用伺服器的價格
這時就有一種產品推出了,就是可以自行搭建的 PaaS 服務,本次介紹的兩個服務都是基於 Docker 且在我的公司都經歷過半年的測試比對的 PaaS 服務。
這類服務的做法是安裝在你租用的主機上,而由他代為管理並提供 PaaS 所有的一切服務,包含串接 Github、Gitlab、Docker hub 與解析 Dockerfile 和透過 Buildpacks 解析你的程式碼,而由於他是建立在你的伺服器上所以並沒有額外的費用,很適合個人與剛起步的小型新創。
但要注意的一點,同時壞處也是部署在你的伺服器上所以會需要關注 Ram、Disk、Cpu...等等是否超過使用量而影響穩定,無法完全無視基礎建設,但對於個人與剛起步的小型新創來說不是問題,等到業務成長後再搬移也是一個好選擇。
CapRover
- 基於 Docker + Nginx
- 開源
- 可叢集拓展 (相依於 Docker Swarm)
- 多種部署來源 Github、Gitlab、Docker hub、手動上傳
- 穩定性高 (持續高負荷使用半年沒有任何異常)
- 內建監控機制 (內建 NetData)
- 自動處理 ssl certificate
- 個人評價: 十分推薦
這是一款非常適合個人專案與小型新創的服務,在我的用例中我使用了
digitalocean 6 美元一個月的機器部署了一台 PostgreSQL、一台 MySQL、一個 Wordpress 官網、一組 SaaS 服務(.NET 7 撰寫平均十個租戶最大上線人數 300 人) 有啟用 2GB 的 Swap,這樣的使用情景相信是很多新創或個人網站的需求,而只要 6 美元的價格就可以撐住這樣的服務量級是很吸引人的,當後續流量提升時可以透過
Docker Swarm 來拓展叢集而如果資料庫 I/O 吃重也可以連接服務器提供商的 RDS 服務,有著成長的可能性。
Easypanel
- 基於 Docker + Traefik
- 不開源
- 不可部署叢集
- 僅可使用 Github、Docker hub
- 穩定度尚待加強(在低負荷情況下,時常出現 html error 這樣的錯誤訊息)
- 內建還不完善的監控機制(可以顯示每一個服務的 Ram 與 Cpu 用量,但數值不太精準)
- 自動處理 ssl certificate
- 個人評價: 未來可期
這是我在嘗試 CapRover 前使用的服務,這是一個很新的專案且他採用了隱藏很多細節設定的做法,讓剛接觸的工程師會很好上手,但這也導致了擴展性與自定義的受限。
我一樣 6 美元一個月的機器使用了在上面部署了 三台 PostgreSQL 一台 Line Bot 一個 Line 服務管理介面(.NET 6 最大上線人數 4 人),而大約每一個月會崩潰一次,但這是開發環境所以還能接受,而且經過頻繁的更新在使用的穩定度與資源消耗上也有顯著的降低,因此還是放在這裡推薦,未來可期。
總結
其實還有很多用過的 PaaS 沒講到,如
OKD、
Porter 但其他我認為不夠輕量與便宜,因此暫時沒有講到,當在業務拓展時緩慢選用更適合的技術是合理的,這裡先介紹新創較為適合的服務而往後在介紹當量及提升時有哪些服務可以更簡單管理與提高穩定度。
參考