Rails 8でSQLiteを本番運用する:Kamalデプロイと負荷試験で検証したシンプル構成の実力

当ページのリンクには広告が含まれています。

お疲れ様です!IT業界で働くアライグマです!

結論から言うと、Rails 8 + SQLiteは「小〜中規模サービスの本番運用」に十分耐えられます。同時接続150人規模の負荷試験でもエラー率0%を達成した実績があります。

「SQLiteは開発環境専用」「本番ではPostgreSQLかMySQLを使うべき」——これは長年の常識でした。しかし、Rails 8の登場とKamalによるシンプルなデプロイ手法の普及により、この常識が覆りつつあります。

この記事では、Rails 8とSQLiteを組み合わせた本番運用の実践方法を、Kamalデプロイと負荷試験の結果を交えて解説します。

目次

Rails 8 + SQLiteで本番運用が現実的になった背景

💡 Web開発スキルを体系的に学びたい方へ
生成AI・機械学習を活用したアプリ開発スキルを短期集中で習得

なぜ今、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女子 アラ美
SQLiteって同時アクセスに弱いイメージがありますが、大丈夫なんですか?

ITアライグマ
WALモードを使えば読み取りは並列処理できますし、書き込みロックも非常に短時間ですよ!

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パッケージ管理の高速化でも解説しています。

IT女子 アラ美
Dockerfileは自分で書く必要がありますか?

ITアライグマ
Rails 8ではrails new時にDocker対応のDockerfileが自動生成されますよ!

負荷試験の実施: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);
}

テスト結果

Rails 8 SQLite本番運用の負荷試験結果(同時接続150人)

  • リクエスト成功率:100%(エラーなし)
  • 平均レスポンス時間:約120ms
  • P95レスポンス時間:約280ms
  • 書き込み処理:10req/sec程度でも安定動作

AIを活用した自動化の事例としては、tallyでAIエージェントに銀行取引を分類させるもおすすめです。

IT女子 アラ美
150人同時でもエラー0%というのは予想以上ですね!

ITアライグマ
読み取り中心のワークロードなら、さらに多くの同時接続にも耐えられますよ!

ケーススタディ:個人開発アプリを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で構成Gemfilegem "solid_queue"gem "solid_cache"を追加し、Redis依存を排除
  • さくらのVPS 2GBプラン(月額約800円)を契約。config/deploy.ymlを作成し、bin/kamal setupコマンドで初回デプロイ(所要時間約15分)
  • SQLiteのWALモードを設定:config/database.ymlpragmas: { 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.ymltraefikセクションで設定)

結果(After)

  • 月額コストは約950円(VPS 800円 + R2バックアップ150円程度)
  • デプロイ時間: Kamalで約3分(Herokuの約5分から短縮)
  • 3ヶ月運用してダウンタイムなし、障害発生なし
  • ユーザー数300人超でも安定稼働中

「SQLiteは開発環境専用」という固定観念を捨てたことで、月額コストを約1/3に削減できました。

AI開発の自動化については、IQuest-Coderで実現する自律型AI開発でも解説しています。

IT女子 アラ美
litestreamでバックアップできるのは安心ですね!

ITアライグマ
リアルタイムでレプリケーションされるので、障害時のデータロスも最小限に抑えられますよ!

SQLite本番運用の注意点と限界

Rails 8 + SQLiteは魅力的ですが、すべてのケースに適しているわけではありません。注意点と限界を整理します。

向いているケース

  1. 小〜中規模サービス:同時接続数100〜500人程度
  2. 読み取り中心のワークロード:ブログ、ドキュメントサイト、APIサーバーなど
  3. 個人開発・MVP:低コストで素早く市場検証したい場合
  4. シングルサーバー運用:水平スケールが不要なケース

向いていないケース

  • 高頻度の書き込み:毎秒数百件以上の書き込みが発生する場合
  • 水平スケール必須:複数サーバーでDBを共有する必要がある場合
  • 厳密なトランザクション:金融系など高い信頼性が求められる場合
  • 大規模データ:数TB規模のデータを扱う場合

注意点

  • バックアップは必須:litestreamまたは定期スナップショットを設定
  • WALモードは必ず有効化:並列読み取りに必須
  • ファイルロックの理解:書き込み時は排他ロックがかかる

AI支援ツールの導入については、smart-coding-mcpでAIアシスタントにセマンティックコード検索を追加するを参考にしてみてください。

本記事で解説したようなAI技術を、基礎から体系的に身につけたい方は、以下のスクールも検討してみてください。

比較項目 DMM 生成AI CAMP Aidemy Premium
目的・ゴール ビジネス活用・効率化非エンジニア向け エンジニア転身・E資格Python/AI開発
難易度 初心者◎プロンプト作成中心 中級者〜コード記述あり
補助金・給付金 最大70%還元リスキリング補助金対象 最大70%還元教育訓練給付金対象
おすすめ度 S今の仕事に活かすなら SAIエンジニアになるなら
公式サイト 詳細を見る 詳細を見る
IT女子 アラ美
AIスキルを身につけたいけど、どのスクールを選べばいいかわからないです…
ITアライグマ
現場で即・AIを活用したいならDMM一択!逆に、AIそのものを作るエンジニアに転身したいならAidemyで基礎から学ぶのが最強の近道ですよ。

まとめ

Rails 8 + SQLiteは、適切なユースケースであれば本番運用に十分耐える構成です。

  • Rails 8のSolidシリーズ:Redis不要でキャッシュ・ジョブキュー・WebSocketが運用可能
  • Kamalでシンプルデプロイ:Docker + VPSで月額1,000円以下の運用が可能
  • 負荷試験結果:同時接続150人でエラー率0%を確認
  • 向いているケース:個人開発・MVP・小〜中規模サービス

「本番ではPostgreSQLを使うべき」という常識を疑い、プロジェクトの規模に合った技術選定をしましょう。
まずは個人開発やサイドプロジェクトで試してみてください。

IT女子 アラ美
シンプルな構成で本番運用できるのは魅力的ですね!

ITアライグマ
小さく始めて、スケールが必要になったら別のDBに移行する判断もアリですよ!

厳しめIT女子 アラ美による解説ショート動画はこちら

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ITアライグマのアバター ITアライグマ ITエンジニア / PM

都内で働くPM兼Webエンジニア(既婚・子持ち)です。
AIで作業時間を削って実務をラクにしつつ、市場価値を高めて「高年収・自由な働き方」を手に入れるキャリア戦略を発信しています。

目次