SQLite on Rails: Supercharging the One-Person Framework - Rails World 2024
Rails World 2024のトーク
SQLiteを本番のRails用RDBMSとして利用するアイデア
https://fractaledmind.github.io/2024/10/16/sqlite-supercharges-rails/ にブログの形式でも公開されてい
最新のRailsのOne person framework志向とSQLiteはめちゃ相性がいい
長らくRails GuideにはSQLiteを本番で使わないよう警告が書いてあったが、7.2以降では消え、8.0ではproduction readyになった
これまであった問題は2つ
同時実行性
同時に4つのリクエストをさばくだけでレスポンスの半分がエラーになっていた
tail latency
同時接続数の増加に伴い、p99 または p95 のレイテンシが急上昇する
これらを解決した
https://fractaledmind.github.io/2023/12/23/rubyconftw/
Solid Trifectaにより、それぞれのバックエンドをRDBMSにできるようになったので、SQLiteがあればActiveStorage以外のdata-boundコンポーネントをrails new後すぐに扱える
テスト
ONCEで取得したCampfireにはベンチマーカーが付いており、SQLiteを利用するようにしても同時実行性や性能差がほぼ変わらず
Ruby Videoもこのスタックで動いている
気をつけるべきこと
バックアップ
Litestream ユーティリティを使うとSQLite データベースへのすべての更新を、さまざまなバケットストレージシステム、さらにはFTS サーバーにストリーミングできる
point in time backupと非常に安価なストレージコストを実現できる
スケール
垂直スケーリング、つまり単一のマシンをスケールアップする
VPSはすでに非常に安価
Hetznerから、48コア、192GB のRAM、1テラバイトのNVME SSD スペースを備えた VPS をレンタルでき、すべて月額 350 ドル以下
migration
SQLiteは下位互換性
メンテナーは20 年前に作成されたデータベース ファイルが、20 年後の SQLite で開けるように配慮している
米国議会図書館でデジタル データの保存形式として使用されている
https://www.youtube.com/watch?v=l56IBad-5aQ