
個人開発はこの構成で十分回る:Express×SQLite×EC2×pm2
個人開発で一番時間を食うのは、実は「何で作るか」を迷う時間でした。今は構成をほぼ固定していて、新しいものを作るときも迷いません。
この記事では、その構成と各部品の役割、そして「いつ構成を変えるか」を書きます。

使っている構成
言語:TypeScript(画面もAPIも)
画面:Next.js
API:Node.js + Express
データベース:SQLite(better-sqlite3)
サーバー:AWS EC2(小さめのインスタンス1台)
入口:Nginx
プロセス管理:pm2
SQLiteで足りる理由
データベースはファイル1つです。別のサーバーも設定もいりません。バックアップもファイルをコピーするだけなので、一人で管理するにはかなり楽です。
読み込みが中心で、書き込みがそこまで多くないサービスなら、小さなうちはこれで十分です。WALモードにしておくと、書き込み中でも読み込みが止まりません。
Nginxは「入口係」
外からのアクセスは全部Nginxが受けて、中のアプリに振り分けます。HTTPS対応もここでまとめてやります。
こうしておくと、1台のサーバーで複数のサービスを動かしても、ドメインごとに振り分けるだけで済みます。
pm2は「落ちても起こしてくれる係」
Node.jsのアプリは、エラーで止まるとそのままです。pm2で動かしておくと、止まっても自動で再起動してくれます。
pm2 start app.js --name my-app
pm2 save
pm2 startup最後の2行で、サーバーが再起動してもアプリが自動で立ち上がるようになります(startupが表示するコマンドを実行するのを忘れずに)。ログも pm2 logs で見られます。
構成を固定するとAI開発も安定する
いつも同じ構成だと、AIへの指示も使い回せます。「いつもの構成で」で通じるので、毎回の説明がいりません。トラブルの対処も一度覚えれば使い回せます。
構成を変えるタイミング
同時の書き込みが増えてきた → PostgreSQLなどに移る
画像や音声の配信が増えた → ストレージと配信を分ける
レンタルサーバーしか使えない → PHPで作る
サーバー管理を減らしたい → Cloudflareなどのサーバーレスを検討する
最初から大きな構成にする必要はありません。小さく作って、困ってから大きくするで十分間に合います。
公開先の選び方は、後日まとめて書く予定です。
開発のご相談は、XのDMからどうぞ。