ネットサービス

Twitterをたった1台のPCで運用するためにはどれぐらいのスペックが必要なのか?


Twitterのような大規模なネットサービスは基本的に複数台のPCやデータセンターなどのインフラで運用されていますが、もしもTwitterを1台のPCで運用した場合、どのようなスペックのPCが必要になるのかについて、テクノロジー研究者のトリスタン・ヒューム氏が解説しています。ヒューム氏は、最新の高性能ストレージとデータの通信によって、Twitterのほぼ全機能を1台のPCで提供できる可能性について検討しています。

Production Twitter on One Machine? 100Gbps NICs and NVMe are fast - Tristan Hume
https://thume.ca/2023/01/02/one-machine-twitter/

Twitterの核となる「ツイートの配信」では、ユーザーはテキストベースのツイートをフィードに投稿し、他のユーザーはそれらのツイートを時系列で追いかけます。ツイートの配信には基本的に2つの方法があるとされています。


1つ目は、タイムラインのページで、フォローしているアカウントから時系列の逆順でツイートを取得し、十分な数のツイートが集まるまでヒープを使用してマージする方法です。この方法にはさまざまなフィードから大量のツイートを取得する必要があり、高速化できないことが課題だとされています。

2つ目は、キャッシュされたタイムラインにツイートがプッシュされる方法です。この方法は大量のツイートを取得する方法よりも高速である可能性があるとされていますが、有名人のツイートには膨大なリプライなどがあるため、バックグラウンドでの処理もしくは別途マージする必要があります。実際のTwitterではこの方法が用いられています。

ツイートを配信するにあたってどれだけのツイートを保存する必要があるのか考える必要があり、TwitterのCEOであるイーロン・マスク氏は「1日あたり約5億ツイートと数十億のインプレッションが行われています」と述べています。

There are about 500M tweets per day & billions of impressions, so hate speech impressions are <0.1% of what’s seen on Twitter!

— Elon Musk (@elonmusk)


また、Twitterはツイートに関するさまざまなデータを公開しており、ヒューム氏によると、公開されたデータの多くは現代のコンピューターの規模では比較的小規模な数値とのこと。

そこで、ヒューム氏はツイートの保存にRAMNVMeHDDを混合したものを考案しています。必要なスペックとして、512GB~1TBのRAMや、8TB以上の容量で高速なNVMeドライブを搭載することを推奨しています。また、HDDには20TBの基本的にアクセスされることがない古いツイートを保存するそう。

ヒューム氏はプログラミング言語のRustを用いてプロトタイプを作成し、タイムラインのマージに関するベンチマークを行いました。その結果、すべての負荷の処理に十分な速度が得られ、実際のTwitterの負荷に対応できることを確認しています。

一方で、ヒューム氏は「1台のPCでTwitterを構築した場合、データの損失や長時間にわたるサービス停止のリスクがあることや、悪いコードによってPCのリソースを使い果たす可能性、一部のバグがサービスをダウンさせる可能性、ゼロダウンタイム機能やデータベースの構造に注意が必要な点、Twitterのデバッグが困難な点などから、1台のPCでTwitterを構築することは現実的ではありません」と述べています。


ヒューム氏が作成したプロトタイプではツイートの配信以外の機能を追加するための余裕があるとされており、追加できる機能についてヒューム氏は検討しています。

追加が可能な機能としてヒューム氏は「HTTPリクエスト」や「タイムラインのライブ更新と無限スクロール」、「タイムライン上の画像の表示」を挙げています。

一方で「動画の表示」や「ツイートの検索」、「通知機能」、「広告の表示」は困難だとされています。

さらにヒューム氏はTwitterを1台のPCに構築するコストを概算しています。ヒューム氏はTwitterのすべてを1台のマシンで実行するために、16コアのXeonCPUを2つ、768GB RAM、46TB NVMe、360TB HDD、NVIDIA A100 Tensor コア GPUDell PowerEdge R740xdを使うことを想定しています。

サーバーのコスト:1万5425ドル(約203万円)
32GBのRAM 24個:3168ドル(約41万8千円)
samsung PM1733 8tb NVMe 6個:7200ドル(約95万円)
NVIDIA A100 Tensor コア GPU:1万ドル(約132万円)
帯域幅を使用するためのコスト:1年で約13万ドル(約1714万円)

ヒューム氏は、「サーバーのコストをこのレベル以下にすることは、エンジニアの観点では経済的な合理性がありません」と述べています。また、ヒューム氏は「このPCを実際に構築することはないでしょう」と述べる一方で「仕事の自由時間にこのPCをどのように構築するかについて、メモや図を作成しています」と述べています。

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

・関連記事
Netflixはどのようにして800Gb/sものデータ転送を実現しようとしているのか? - GIGAZINE

Twitterのデータセンターが記録的な暑さでダウンしてサービス停止の瀬戸際に - GIGAZINE

NVIDIAが2TB/s超の広帯域メモリを80GB搭載したデータセンター向けGPU「NVIDIA A100 80GB」などを発表 - GIGAZINE

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

You can read the machine translated English article here.