📖

最近のlitestreamと安DB界隈

2024/09/29に公開

趣味開発でマネージドデータベースに課金したくない勢に安DBソリューションとして好評だったlitestreamについての近況をまとめてみました。安DBという謎の用語は「運用コストが安いデータベース」の意味で今作りました。

軽くおさらいするとlitestreamはSQLiteのレプリケーションを実現するミドルウェアで[1]、LiteFSはそれを分散環境に拡張してスケールをしようとしたもの[2]

LiteFS Cloudはサ終した

litestreamの技術をマネージドサービスにしようとたくらんだLiteFS Cloudは[3]、有料版が始まったかと思ったらいきなり提供終了した。

https://community.fly.io/t/sunsetting-litefs-cloud/20829/24

全然利用されなかったことが理由のようだ。確かにLiteFS自体が実験的な段階のソフトウェアな上にConsulサーバーと連携したり使いこなすのは難しい印象があった。

https://zenn.dev/laiso/articles/6b4ef36768cd2c

LiteFS は開発停止してる

LiteFS自体は放棄はされていないが活発に開発してない。作者のBen Johnsonが2週間前に以下のIssueにコメントしていた。

https://github.com/superfly/litefs/issues/436

2ヶ月前にはドキュメントに「litestreamもあるでよ」的な文章が追加された。

https://github.com/superfly/docs/pull/1730

litestreamはメンテフェーズ

litestreamはBen Johnson個人のプロジェクトで。使ってるユーザーからのIssue報告がちょくちょくある。最近は2024年は新規アップデートしてない

https://github.com/benbjohnson/litestream/issues?q=is%3Aopen+is%3Aissue

Ben Johnsonはなんかやってる

Ben JohnsonはlitestreamやLiteFSの開発者で中心となっている人物。ほとんどこの人が開発してる。

彼のGitHubタイムラインは最近活発ではないのでFly内部の新しいプロジェクトをやっていそう(憶測)

安DB需要がどこに流れたのか

litestreamをCloud Runなどのサーバーレスな環境で工夫して使っているひとはいるようだ。

一方マーケティングが活発なCloudflare D1やTurso(libsqlベース)などのマネージドデータベースにユーザーが流れている。

これらはSQLite互換なインターフェイスを持つが、我々が利用する部分はDBドライバーによって抽象化されたWeb APIアクセスになっている。

Cloudflareのインフラやlibsqlの技術(や宣伝のための費用)によって他のRDB製品を使って提供するより安くできる(多分)。

SQLiteじゃないところしてはSupabaseがよく話題に上がる。PlanetScaleは料金改定でみんなひいてしまった[4]

Rails界隈

最新版のRailsではプロダクション環境でSQLiteを使用しても警告を出さないよう変更された[5]。実際に37signalsはパッケージ型製品のONCEにSQLiteを採用しているようで[6]、job queueやキャッシュ層をDBアダプタから使えるモジュールを追加した。

https://zenn.dev/laiso/articles/018fed3e05b7ba

これは安DB需要に応えるためというわけではなく、37signalsの人たちのビジネスの都合や、以前からある反ビックテック+クラウドの姿勢があるのだけど[7]。安いVPSとコンテナ駆動の自動化ツール[8]で十分に運用が簡易化されたら結局こっちのが安いよねということになってシニアな趣味開発者たちにも受け入れられる可能性もある。

筆者の意見

これらのSQLite系のソリューションを商用環境で使うのはちょっと怖い。とはいえ技術力のある企業はたまに本番運用してる。珍しいのでニュースになる。

趣味開発はその時に試したいものを好きに使ってる。

自分は長期運用コストを見越したらFly.ioシングルインスタンスでゼロスケール+ディスク領域に生sqlite(WAL)。この環境ならlitestreamは必須ではない。最低限の負荷テストはしたのでDBが壊れたら考える。

すでにlitestreamを運用していて厄介な問題が発生していない人はそのまま使えばいいだろう。LiteFSの新規利用はあまり勧めない。

あとはそもそも起動時間の課金が発生するオンデマンド型のマネージドデータベースではなくて、従量課金のCloud FirestoreやDynamoDBのようなサービスを使うのがいいと思っている。利用が拡大したらコストコントロールに困るけど。

脚注
  1. Why I Built Litestream - Litestream ↩︎

  2. LiteFS - Distributed SQLite · Fly Docs ↩︎

  3. LiteFS及びFly.io最新情報 ↩︎

  4. New PlanetScale pricing: Scaler plan upgrades and our new enterprise plan ↩︎

  5. Log a warning when running SQLite in production by intrip · Pull Request #42191 · rails/rails ↩︎

  6. DHH discusses SQLite (and Stoicism) - YouTube ↩︎

  7. Why we're leaving the cloud ↩︎

  8. Kamal — Deploy web apps anywhere ↩︎

Discussion