はじめに
Node.jsアプリケーションを無料でデプロイする際によく使っていた Heroku が2024年12月現在では有料プランのみになってしまいました。代わりのサービスを探していたところ、無料のPaaSサービスとして Render を見つけたので、今回はこちらを使ってアプリケーションのデプロイを試してみました。
目次
前提条件
- GitHubで管理されているNode.jsアプリケーションがある
- PostgreSQLをデータベースとして使用している
構築手順
1. アダプターの設定
1.1 React(Next.js)の場合
- 特別なアダプター設定は不要
1.2 Vue.js(NuxtJS)の場合
- 特別なアダプター設定は不要
1.3 Svelte(SvelteKit)の場合
- Node.jsアダプターのインストールをする
npm install -D @sveltejs/adapter-node
-
svelte.config.js
の設定を変更する
// import adapter from '@sveltejs/adapter-auto'; // この行をコメントアウト
import node from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */
const config = {
preprocess: vitePreprocess(),
kit: {
// adapter: adapter() // この行をコメントアウト
adapter: node()
}
};
export default config;
2. Renderの初期設定
- Renderのウェブサイトにアクセスし、「Get Started Free」をクリックする
- GitHubなど任意のアカウントでログインする
- Dashboardにアクセスする
3. PostgreSQLデータベースの作成
項目 | 設定値 |
---|---|
Name | 任意のサーバー名 |
Project | オプション |
Database | オプション |
User | オプション |
Region | Oregon (US West) |
PostgreSQL Version | 16 |
Datadog API Key | オプション |
Plan Options | Free |
-
設定が完了したら「Create Database」をクリックする
-
作成した「TestDB」をクリックし、「Info」を少しスクロールするとデータベース接続情報(環境変数)を確認することができるので、これらをメモしておく
補足
- 作成したPostgreSQLにlocalから接続するときは、Hostnameの後ろに
.oregon-postgres.render.com
を追加して環境変数に追加する必要がある
4. アプリケーションのデプロイ
4.1 共通のビルド設定
項目 | 設定値 |
---|---|
Source Code | 選択したソースコード |
Name | 任意のサービス名 |
Project | オプション |
Language | Node |
Branch | デプロイ対象のブランチ |
Region | Oregon (US West) |
Root Directory | オプション |
Build Command | 各フレームワークのビルド設定を参照 |
Start Command | 各フレームワークのビルド設定を参照 |
Instance Type | Free |
Environment Variables | 前手順でメモをしたPostgreSQLの環境変数を設定 |
4.2 React(Next.js)のビルド設定
- React (Next.js) を使っていた場合、「Build Command」「Start Command」を以下のように設定する
項目 | 設定値 |
---|---|
Build Command | yarn; yarn build |
Start Command | yarn start |
4.3 Vue.js(NuxtJS)のビルド設定
- Vue.js (NuxtJS) を使っていた場合、「Build Command」「Start Command」を以下のように設定する
項目 | 設定値 |
---|---|
Build Command | yarn; yarn build |
Start Command | yarn start |
4.4 Svelte(SvelteKit)のビルド設定
- Svelte (SvelteKit) を使っていた場合、「Build Command」「Start Command」を以下のように設定する
項目 | 設定値 |
---|---|
Build Command | npm install; npm run build; |
Start Command | node build/index.js |
※ ORMとして Prisma を使用している場合は、Build Command に以下のコマンドを追加する必要がある
npx prisma migrate dev; npx prisma generate; npx prisma migrate deploy
4.5 デプロイの確認
-
設定が完了したら「Deploy Web Service」をクリックする
-
作成した「TestApp」をクリックする
-
生成されたURL
https://xxx.onrender.com
からアプリケーションにアクセスすることができる
最後に
RenderのFreeプランの利用には以下の制限があります
- コールドスタート
- 15分間アクセスがない場合、サーバーがコールドスタンバイ状態に移行
- 再アクセス時に約1分の起動時間が必要
- 利用時間制限
- ウェブサイトの月間アクセス時間が750時間まで
- データベースの制限
- PostgreSQLは1ヶ月の期間限定
- 継続利用には有料プランへの移行が必要
- 無料で継続利用する場合は定期的な再作成が必要(ただしデータは保持されない)
このような制限を考慮すると、RenderのFreeプランは開発段階でのテストやプロトタイプのデモンストレーションにはちょうど良いと感じました。ただし、継続的なサービス運用や本番環境での利用を考えている場合は、安定性とパフォーマンスの観点から有料プランへの移行が必要だと思いました。