iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 24
0
Modern Web

30 天打造 MERN Stack Boilerplate系列 第 24

Day 24 - Deploy - Technique Stack

一個 Web App 經過了開發和測試週期之後,最終要面對的就是部署上線,目前 Modern Web 的趨勢幾乎不考慮自架 Server 了,主要都是仰賴 AWS(Amazon Web Services)、Microsoft Azure 等 IaaS 服務,或是 Heroku、Linode 等 PaaS 服務。

Heroku

我們的 Boilerplate 目前的 Demo Site 就是使用 Heroku,Heroku 屬於 PaaS 服務,可以免費使用,主打的特色就是平台上提供了非常多樣的 Dynos,大家可以把它想像成 Plugin 的概念,當 App 需要 MongoDB 的服務時,就購買 Mongo Dyno,需要排程服務時,也可以購買 Scheduling 相關的 Dyno。

不過,使用免費版本最大缺點就是,當 App 閒置一段時間沒有收到 Request 的話會被迫休眠,直到收到新的 Request 才會被喚醒,而喚醒的時間通常要數十秒,我個人覺得非常久,不過畢竟是免費的就將就一下吧!

OpenShift

除了 Heroku 之外,還有另一個免費的 VPS 服務 - OpenShift,不過它是比較偏向 IaaS,而且速度相對 Heroku 好像慢了點,有興趣的讀者可以玩玩看。

PM2

找 VPS 的同時,我們也要注意 App 程式在 Production 的環境下該如何優化,PM2 是一個 Production Process Manager,我們的 Boilerplate 在 Production 環境也是透過 PM2 來啟動 Server 的,筆者自己使用它的原因主要是因為 Node 本身是 Single Thread,只能跑在單一 Core 上,藉由 PM2 的輔助,我們可以將 App Fork 到所有的 CPU Cores 上形成 Cluster,理論上可以達到平行化加速的效果。

Boilerplate 中的 Porduction App 程式進入點 src/server/pm2Entry.js 是修改自 PM2 官網提供的教學文件,內容是在講解使用 Programmable 的方式控制 PM2 運行在 Heroku 上,有興趣的讀者歡迎自行閱讀。


上一篇
Day 23 - Testing - Travis
下一篇
Day 25 - Deploy - Heroku
系列文
30 天打造 MERN Stack Boilerplate30

尚未有邦友留言

立即登入留言