ソフトウェア

X(旧Twitter)と同等規模のアクセスをさばけるMastodonインスタンスを100分の1のコード量で作成したエンジニアが登場


分散型SNSであるMastodonを「Rama」というプラットフォームを用いて実装することで、X(旧Twitter)と同等規模のアクセスをさばけるインスタンスをXの100分の1のコード量で実現することに成功したとRamaの開発者がブログで発表しました。

How we reduced the cost of building Twitter at Twitter-scale by 100x – Blog
https://blog.redplanetlabs.com/2023/08/15/how-we-reduced-the-cost-of-building-twitter-at-twitter-scale-by-100x/


Ramaはアプリケーションのバックエンドを構築するための汎用プラットフォームで、あらゆる規模のエンドツーエンドのバックエンドを100分の1のコード量で構築可能とのこと。Ramaの開発者たちは「本当にコード量が100分の1になる」ことを実証するため、MastodonインスタンスをRamaで実装することに決めたと述べられています。


今回作成されたMastodonインスタンスは「https://mastodon.redplanetlabs.com/」でホストされています。負荷に耐えられることを示すためにボットが1億個稼働中で、毎秒の投稿数は平均で約3500投稿とのこと。それぞれの投稿は平均で403人のフォロワーに届けられ、最大で2200万人のフォロワーに届けられる投稿も存在しています。ブログによると、Xでは毎秒7000件のツイ―トが平均700人のフォロワーに届けられているとのことで、今回のMastodonインスタンスもサーバーコストをかければXと同等の規模までスケールアップすることが可能です。なお、今回のインスタンスは実証のためだけに用意されたものであるため、ある程度稼働した後に閉鎖される予定となっています。

今回のインスタンスの実装は下図の通り。MastodonのバックエンドはRamaのモジュールとして作成されており、この部分でデータの処理やインデックス作成などを行います。さらにSpringReactorでMastodon APIを実装し、フロントエンドにはSoapboxを利用しています。AWSのS3は画像とムービーを提供するのに使用されるとのこと。コードの合計量は1万行で、RamaモジュールとAPIサーバーがそれぞれ約5000行で実装されています。


今回の実装において重要なのは、下図の通りノード数の増加に比例して処理能力が増加するという特徴です。投稿が行われるたびに、投稿したユーザーをフォローしているユーザーのタイムラインにその投稿を書き込む必要があり、下図ではその平均書き込み回数を「平均ファンアウト」という指標で示しています。Xでは平均ファンアウト約700で毎秒7000件のツイートが行われていますが、これを今回のテスト環境である平均ファンアウト403で再計算すると毎秒1万2200件投稿するのと同等の負荷になります。テストでは毎秒2万件近い投稿をさばけたため、Xの規模を超えても問題無くスケールすることが実証されました。


下図は投稿が行われてからフォロワーのタイムラインに表示されるまでの時間の分布を表したものです。フォロワー数が多いアカウントが投稿を行った際には負荷が急上昇するため、他の投稿の展開に遅延が発生しがちとのこと。Xのレイテンシーが99パーセンタイル地点で1.8秒であることに比べればかなり高速に処理できていると言えます。


また、ユーザーのホームタイムラインデータを取得するのにかかる時間の分布は下図の通り。ホームタイムラインの構築には、ミュート・フィルターされていない投稿のデータに加えて、返信数やお気に入り数などの統計データや、ユーザー名・表示名・プロフィール画像など投稿したアカウントに関する情報を用いる必要があるため、平均87ミリ秒でホームタイムラインデータが取得できているのはバックエンドが効率的であることを証明しています。


今回のMastodonの実装コードやRamaは記事作成時点ではまだ非公開となっており、今後徐々に公開されていく予定とのこと。2023年8月22日までにRamaのクラスターをシミュレートできるデモとドキュメントが登場し、2023年8月29日までに今回のMastodonの実装コードをオープンソース化すると述べられています。

なお、具体的なコード自体はまだ公開されていませんが、Ramaの思想やその思想をどのように今回のMastodonインスタンス構築に生かしたのかについて、元のブログで非常に詳しく解説されているので、興味がある人は確認してみてください。

この記事のタイトルとURLをコピーする

・関連記事
大規模な分散システムを構築する際に押さえておくべき概念 - GIGAZINE

従業員の3分の2がクビになってもTwitterのシステムが停止せず動き続けた理由を元Twitterエンジニアが語る - GIGAZINE

デジタル情報を整理するための完璧なシステム「PARAメソッド」とは? - GIGAZINE

オープンソースでセルフホスト可能なBaaSプラットフォーム「Appwrite」を使ってみた - GIGAZINE

3基のAIで構成される決議システム「NAGIシステム」を使ってみた - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by log1d_ts

You can read the machine translated English article An engineer who created a Mastodon insta….