更新 heroku-18
因舊有 Heroku Cedar-14 stack
將進入 EOL。
因舊有 Heroku Cedar-14 stack
將進入 EOL。
本文為 Heroku 官方文件的閱讀 + 翻譯筆記,最新的資料請參考官方網站。
這篇文章將會介紹如何升級 Heroku Postgres 資料庫。這裡所要說的是關於變更資料庫的 plan
(付費方案的部分),以及升級資料庫版本。
關於資料庫的變更只能夠使用 Heroku CLI 指令介面來完成。
升級/變更一個正在運作的 Heroku Postgres 資料庫是一件特別需要注意的操作。
Heroku 共有三種變更方式。在所有的情況下,變更資料庫方案時,應用程式會需要停止服務一點時間,此時無法寫入任何資料。
升級方式 | 需求說明 |
---|---|
PG copy | 可用於所有升級的情況包含從 Hobby 方案變更到其他方案。也可用於升級 Postgres 的版本。 |
Follower Changeover | 變更正式環境資料庫的使用方案,資料庫版本維持一致。僅可用於 Standard,Premium,Private 或 Enterprise 方案的資料庫。需花費幾小時準備 follower ,期間應用程式仍可運作,切換所需的停機時間小於 1 分鐘。 |
pg:upgrade | 升級大型資料庫版本。僅可用於 Standard,Premium,Private 或 Enterprise 方案的資料庫。 |
Node 對於擴展到不同規格的主機環境上其能力有限。首先是它是單執行緒,所以預設它不會自動使用額外的 CPU 核心。再者由於它基於 v8 引擎所以有記憶體上的限制概略是 1.5GB,所以也無法自動使用額外的記憶體。
因此 Nodejs 的應用程式需要多個進程來最大化可用的資源。這個過程我們稱為叢集,我們可以透過使用 Nodejs Cluster API 來完成這個功能。
我們可以直接在程式中使用 API 又或者使用基於這些 API 抽象化的函式庫。這裡我們將使用 throng。
使用叢集的方式,應用程式可以善加利用各種 dyno 的資源使效能得到提升。Heroku 的 Nodejs buildpack 也提供一些環境變數來協助我們。
Procfile
是一種定義指令是否可以在 Heroku dynos(一種輕量化的容器,可以執行特定用戶設定的指令)上執行的機制。
它遵循著 Unix 的程序模型(process model)。這裡為了簡化概念,我們可以說 dyno 就是執行指令的一個個體。舉例來說一個 web dyno 就意味著執行一個 web server 的程式。希望這樣的說明可以理解這些特殊的名詞概念。
當我們在本機設定 gem 的時候有時候會採用直接從 github 下載的方式
1 | gem 'datetimepicker-rails', github: 'zpaulovics/datetimepicker-rails', branch: 'master', submodules: true |
不過當我們要把程式碼部署到雲上的主機時,有些時候會碰上該機器無法去 fetch repo 的狀況
這個時候請參考這邊改變設定即可