「おすすめ」フィードの提供
spacecowboy氏が開発したBlueskyの「For You Feed」は、GoとSQLiteを活用した単一プロセスで構成され、低コストかつ高スケーラビリティを実現するカスタムアルゴリズムの具体例として注目を集めている。
キーポイント
軽量アーキテクチャの実現
単一のGoプロセスとSQLiteのみで構成され、16コア/96GB RAMの家庭用PC上で動作する。
推薦アルゴリズムの設計
機械学習モデルに頼らず、ユーザーの「いいね」データを基にした協調フィルタリング方式で推薦を行う。
低コストかつ高スケーラビリティ
月間総コストは約30ドルで、既存構成のまま1百万DAU規模のユーザー数に対応可能と試算されている。
分散型ネットワークとの統合
Blueskyのfirehoseを消費してデータを取得し、Tailscale経由で外部VPSと連携する設計を採用している。
影響分析・編集コメントを表示
影響分析
本記事は、大規模SNSにおける推薦システムが必ずしも重厚なAIモデルを必要としないことを示唆しており、軽量なデータ処理技術の組み合わせでスケーラビリティを確保できる実例を提供している。分散型SNSプラットフォームの発展において、開発者の参入障壁を下げつつユーザー体験を担保するアーキテクチャ設計の重要な指針となる。
編集コメント
重厚な機械学習モデルに依存しない推薦システムの構築事例は、分散型SNSやリソース制約のある環境におけるインフラ設計の参考になる。シンプルさとスケーラビリティのバランスを取る設計思想は、今後のオープンソース社会インフラ開発に示唆を与える。
Blueskyの最も興味深い機能の一つは、誰でも独自のカスタム「フィード」実装を運用し、他のユーザーに公開できる点です。これにより、投稿を推薦するために好きなメカニズムを自由に使用できるカスタムアルゴリズムが事実上可能になります。
spacecowboy氏は、約72,000人が利用するFor You Feedを運用しています。AT Protocolブログへのこの寄稿記事は、その仕組みについて解説しています。
このアーキテクチャは*魅力的*です。フィードの提供は、spacecowboy氏のリビングルームにある「ゲーミング」PC上で動作する単一のGo(プログラミング言語)プロセスによって行われており、構成は16コア、96GBのRAM、接続された4TBのNVMe(ストレージインターフェース)ストレージです。
推薦は「いいね」を基にしています。つまり、あなたと同じものを好きがる人は、プラットフォーム上で他に何をいいねしているのか?という問いかけです。
そのGo(プログラミング言語)サーバーはBlueskyのfirehose(ストリームデータ)を消費し、関連する詳細情報をSQLite(データベース)に保存します。現在約419GBのSQLiteストレージを使用しており、過去90日分の関連データを保持しています。
パブリックインターネットのトラフィックは、OVH上の月額7ドルのVPS(仮想プライベートサーバー)が処理しており、Tailscale(ネットワーク接続ツール)を介してリビングルームサーバーと通信します。
現在の総コストは月額30ドルです。電気代が20ドル、VPS(仮想プライベートサーバー)が7ドル、ドメイン名2つ分で3ドルです。spacecowboy氏は、既存のシステムは動作を確認した最も安いアルゴリズムに切り替えた場合、約100万人のBlueskyデイリーアクティブユーザーすべてを処理できると見積もっています。
タグ: go, scaling, sqlite, software-architecture, tailscale, bluesky
原文を表示
One of Bluesky's most interesting features is that anyone can run their own custom "feed" implementation and make it available to other users - effectively enabling custom algorithms that can use any mechanism they like to recommend posts.
spacecowboy runs the For You Feed, used by around 72,000 people. This guest post on the AT Protocol blog explains how it works.
The architecture is *fascinating*. The feed is served by a single Go process using SQLite on a "gaming" PC in spacecowboy's living room - 16 cores, 96GB of RAM and 4TB of attached NVMe storage.
Recommendations are based on likes: what else are the people who like the same things as you liking on the platform?
That Go server consumes the Bluesky firehose and stores the relevant details in SQLite, keeping the last 90 days of relevant data, which currently uses around 419GB of SQLite storage.
Public internet traffic is handled by a $7/month VPS on OVH, which talks to the living room server via Tailscale.
Total cost is now $30/month: $20 in electricity, $7 in VPS and $3 for the two domain names. spacecowboy estimates that the existing system could handle all ~1 million daily active Bluesky users if they were to switch to the cheapest algorithm they have found to work.
Tags: go, scaling, sqlite, software-architecture, tailscale, bluesky
関連記事
Datasette Agent Edit 0.1a0 のリリース
Simon Willison が、既存テキストの編集を可能にする「Datasette Agent」向けプラグイン「datasette-agent-edit」のバージョン 0.1a0 を公開した。これは共同 Markdown 編集や大規模 SQL クエリの更新などを支援する機能を含む。
マイクロPython WASM 0.1a2 のリリース
Simon Willison がマイクロPython の WebAssembly 版である「micropython-wasm」のバージョン 0.1a2 を公開した。
MicroPython と WASM を用いたサンドボックス環境での Python コード実行
Simon Willison は、コード実行のサンドボックス環境を実現する新アルファパッケージ「micropython-wasm」を公開し、Datasette Agent のプラグインとして利用を開始した。