お疲れ様です!IT業界で働くアライグマです!
結論から言うと、Rails 8 + SQLiteは「小〜中規模サービスの本番運用」に十分耐えられます。同時接続150人規模の負荷試験でもエラー率0%を達成した実績があります。
「SQLiteは開発環境専用」「本番ではPostgreSQLかMySQLを使うべき」——これは長年の常識でした。しかし、Rails 8の登場とKamalによるシンプルなデプロイ手法の普及により、この常識が覆りつつあります。
この記事では、Rails 8とSQLiteを組み合わせた本番運用の実践方法を、Kamalデプロイと負荷試験の結果を交えて解説します。
Rails 8 + SQLiteで本番運用が現実的になった背景
なぜ今、SQLiteが本番運用の選択肢として注目されているのかを解説します。
Rails 8の変更点:ソリッドクォーリング
Rails 8ではSolid Cache、Solid Queue、Solid Cableという3つの「Solidシリーズ」が導入されました。これにより、Redis依存なしでキャッシュ・ジョブキュー・WebSocketをSQLiteベースで運用できるようになりました。
- Solid Cache:Active Jobのキャッシュバックエンド。SQLiteでキャッシュを永続化
- Solid Queue:Active Jobのバックエンド。SQLiteでジョブキューを管理
- Solid Cable:Action Cableのバックエンド。SQLiteでWebSocket接続を管理
SQLiteの進化
SQLite自体も進化しています。WAL(Write-Ahead Logging)モードの改善や、litestreamによるリアルタイムレプリケーション対応など、本番運用を意識した機能が充実してきました。
インフラコスト削減のプレッシャー
小規模なサービスでも「PostgreSQL + Redis + Sidekiq」のような構成が当たり前になっていましたが、月額コストは軽く数千円〜数万円かかります。SQLite単体ならVPS月額800円程度で運用でき、コスト削減のインパクトは大きいです。
インフラコスト削減の観点では、Terraform対抗馬の新IaC『formae』入門も参考になります。
IT女子 アラ美Kamalによるデプロイ設定:Docker + VPSの構成
Rails 8では公式にKamalがデプロイツールとして推奨されています。Kamalを使ってSQLiteアプリをVPSにデプロイする手順を解説します。
Kamalの基本概念
Kamalは、DockerイメージをビルドしてVPSにデプロイするシンプルなツールです。以下の特徴があります。
- ゼロダウンタイムデプロイ
- ローリングリスタート
- SSL証明書の自動取得(Let’s Encrypt連携)
- シンプルなYAML設定
config/deploy.ymlの設定例
# config/deploy.yml
service: myapp
image: myuser/myapp
servers:
web:
hosts:
- 192.0.2.1
labels:
traefik.http.routers.myapp.rule: Host(`myapp.example.com`)
registry:
server: ghcr.io
username:
- KAMAL_REGISTRY_USERNAME
password:
- KAMAL_REGISTRY_PASSWORD
env:
secret:
- RAILS_MASTER_KEY
volumes:
- data:/rails/storage # SQLiteファイルを永続化
ポイントはvolumesでSQLiteのデータディレクトリを永続化することです。これがないと、デプロイのたびにデータが消えてしまいます。
初回デプロイの実行
# 初回セットアップ
bin/kamal setup
# デプロイ実行
bin/kamal deploy
# ログ確認
bin/kamal logs -f
パッケージマネージャの高速化については、uvで実現するPythonパッケージ管理の高速化でも解説しています。



負荷試験の実施:k6とwrkで同時接続150人を検証
SQLite本番運用の最大の懸念は「同時アクセスに耐えられるか」です。実際に負荷試験を行い、その結果を共有します。
テスト環境
- サーバー:さくらのVPS 2GBプラン(2vCPU、2GB RAM)月額約800円
- OS:Ubuntu 22.04
- Ruby:3.3.0、Rails 8.0
- SQLite:3.43.0(WALモード有効)
- Web Server:Puma(workers: 2、threads: 5)
負荷試験ツール:k6
// load_test.js
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 150, // 仮想ユーザー数(同時接続)
duration: '60s', // テスト時間
};
export default function () {
const res = http.get('https://myapp.example.com/api/items');
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 500ms': (r) => r.timings.duration < 500,
});
sleep(1);
}
テスト結果


- リクエスト成功率:100%(エラーなし)
- 平均レスポンス時間:約120ms
- P95レスポンス時間:約280ms
- 書き込み処理:10req/sec程度でも安定動作
AIを活用した自動化の事例としては、tallyでAIエージェントに銀行取引を分類させるもおすすめです。



ケーススタディ:個人開発アプリをRails 8 + SQLiteで本番運用した例
ここでは、実際にRails 8 + SQLiteで個人開発アプリを本番運用した事例を紹介します。
状況(Before)
- PHP資格試験の学習サポートアプリを開発したい
- 予算は月額1,000円以内に抑えたい
- ユーザー数は想定100〜500人程度
- 従来なら「Heroku + PostgreSQL + Redis」で月額2,000〜3,000円かかる構成
行動(Action)
- Rails 8.0.0 + SQLite 3.43.0 + Kamal 2.0で構成。
Gemfileにgem "solid_queue"とgem "solid_cache"を追加し、Redis依存を排除 - さくらのVPS 2GBプラン(月額約800円)を契約。
config/deploy.ymlを作成し、bin/kamal setupコマンドで初回デプロイ(所要時間約15分) - SQLiteのWALモードを設定:
config/database.ymlにpragmas: { journal_mode: "wal", synchronous: "normal" }を追記 docker-compose.ymlにlitestreamサービスを追加し、litestream.ymlでCloudflare R2へのS3互換レプリケーションを構成(設定時間約10分)load_test.jsを作成し、k6 run --vus 150 --duration 60s load_test.jsで負荷試験を実施。結果:同時接続150人・エラー率0%・平均レスポンス120ms- SSL証明書はKamal + Let's Encryptで自動取得・自動更新を構成(
deploy.ymlのtraefikセクションで設定)
結果(After)
- 月額コストは約950円(VPS 800円 + R2バックアップ150円程度)
- デプロイ時間: Kamalで約3分(Herokuの約5分から短縮)
- 3ヶ月運用してダウンタイムなし、障害発生なし
- ユーザー数300人超でも安定稼働中
「SQLiteは開発環境専用」という固定観念を捨てたことで、月額コストを約1/3に削減できました。
AI開発の自動化については、IQuest-Coderで実現する自律型AI開発でも解説しています。



SQLite本番運用の注意点と限界
Rails 8 + SQLiteは魅力的ですが、すべてのケースに適しているわけではありません。注意点と限界を整理します。
向いているケース
- 小〜中規模サービス:同時接続数100〜500人程度
- 読み取り中心のワークロード:ブログ、ドキュメントサイト、APIサーバーなど
- 個人開発・MVP:低コストで素早く市場検証したい場合
- シングルサーバー運用:水平スケールが不要なケース
向いていないケース
- 高頻度の書き込み:毎秒数百件以上の書き込みが発生する場合
- 水平スケール必須:複数サーバーでDBを共有する必要がある場合
- 厳密なトランザクション:金融系など高い信頼性が求められる場合
- 大規模データ:数TB規模のデータを扱う場合
注意点
- バックアップは必須:litestreamまたは定期スナップショットを設定
- WALモードは必ず有効化:並列読み取りに必須
- ファイルロックの理解:書き込み時は排他ロックがかかる
AI支援ツールの導入については、smart-coding-mcpでAIアシスタントにセマンティックコード検索を追加するを参考にしてみてください。
本記事で解説したようなAI技術を、基礎から体系的に身につけたい方は、以下のスクールも検討してみてください。
| 比較項目 | DMM 生成AI CAMP | Aidemy Premium |
|---|---|---|
| 目的・ゴール | ビジネス活用・効率化非エンジニア向け | エンジニア転身・E資格Python/AI開発 |
| 難易度 | プロンプト作成中心 | コード記述あり |
| 補助金・給付金 | リスキリング補助金対象 | 教育訓練給付金対象 |
| おすすめ度 | 今の仕事に活かすなら | AIエンジニアになるなら |
| 公式サイト | 詳細を見る | 詳細を見る |



まとめ
Rails 8 + SQLiteは、適切なユースケースであれば本番運用に十分耐える構成です。
- Rails 8のSolidシリーズ:Redis不要でキャッシュ・ジョブキュー・WebSocketが運用可能
- Kamalでシンプルデプロイ:Docker + VPSで月額1,000円以下の運用が可能
- 負荷試験結果:同時接続150人でエラー率0%を確認
- 向いているケース:個人開発・MVP・小〜中規模サービス
「本番ではPostgreSQLを使うべき」という常識を疑い、プロジェクトの規模に合った技術選定をしましょう。
まずは個人開発やサイドプロジェクトで試してみてください。














