Twitterというサービスは難しいだろう、という自分の考えを一旦ここにまとめてみる。身内向け記事で、この記事内では何も解決していない。
まず、技術要件的にTwitterというサービスはとても複雑で、そこらの企業がサッと真似できるようなサービスではない。小さい範囲で見ればなにかのフレームワークのチュートリアルでやるような話にも見えるが、これを莫大な数字とともに動作を担保していく、というのはとても大変な話だろう。
以下に例を挙げてみる。
- はちゃめちゃに莫大すぎる桁の数のツイートをどう保存するのか?
- Manhattanという名前のTwitter用分散データベースを新規に作成、用意している
- 1秒間にとんでもない数がポストされるであろうツイートを、どうやって即時でみんなのTLに反映しているのか?
- イベント処理専用の機構を用意している
- なぜ様々な種類の検索クエリを投げてもすぐにレスポンスが返ってくるのか?
- Elasticsearchのクラスタを筆頭に複数の小さなサービスからなる機能群を用意している
blog.twitter.com のInfrastructureに存在する記事を見ていると、基本的にはスケーラビリティを確保し、コスト面やメンテナビリティにも気を遣いながら、技術的に正しくアプローチしようといった基本的な姿勢が伺える。また、既存の環境でさし当たった問題に対して真っ当かつ専門性も高めに新しい構造を設計している。少なくとも「この規模の数のツイートを処理しなければならない」という課題に直面している企業は世界中を探しても有数で、その中でもTwitter社は(技術的には)かなりうまくやっているように思う。
ただ、運用面に関して言えば、ここ数年(もしかしたら十数年)のTwitterはうまくいっていない、と評価される。例えばタイムライン上の広告出現、User Streams APIの廃止、おすすめタブ、スパム発生の常態化、一部APIの有料化、イーロンマスク、API全体の有料化、サードパーティ製クライアントの追い出し、表示系APIの激しいレートリミットなど。これは今サッと思い出せたものでしかなくて、もっとたくさんある。
Twitter社は我々に嫌がらせをするためだけにこれらの変更を加えているのだろうか?僕はTwitter社に関わりのある人間ではないが、それでも断じて「違う」と言えるだろう。では、何故このような変更を加えてしまうのだろうか?中には(自分の主観でしかないが)おおよそのユーザーの理念に反する大きな変更も存在したが、それを行う理由があると思う。
端的に、Twitterというサービスを運用するにはあまりにも大きなコストが掛かるのだと思う。
考えてみると上記の変更は全てお金に関わるもののように思う(思い込みかもしれないが)。ユーザーストリームなんて、世界中の人間がセッションを貼り続ければ重くなって全部切りたくなるに決まっているし、おすすめタブで炎上ツイートを表示して我々を釘付けにし、その間に挟まる広告の回転率も高めたくなるのだろう。
最近では、イーロン・マスクがTwitter社を購入したと思ったら、直後に大規模なレイオフを行った。このタイミングでSREの面々や、自分が尊敬していたエンジニアもその対象になっており、個人的には現在でもかなりの疑問を呈したい結果となっているが、一方ではそれくらいのことをしなければならないほどの窮地に陥っていたのではないかと思う。なんだったら今頃本当にTwitterが消えてしまった!という世界線も考えられたのではないか。
つまり、最初から大量だったツイート/ユーザーが、人気に応じてさらに増えてしまった結果、技術面ではどうしようもなくなってしまい、運用的な面での自転車操業を余儀なくされているのではないか、と考える。顧客のスケールに現在の世界の技術力が追いついていないのではないか。
この傾向はイーロン・マスク以後は尚更顕著である。例えば、先日はスパムに対する一時対応として「ログインしていないと個別のツイートが見れない状態にした」と明かしている。おそらくは有料APIを使わないスパム企業に対するスクレイピング対策だろうと思うが、このような対応は得てしていたちごっこを繰り返すだけで、根本解決には至らないだろう。
実際にこれは尾を引いており、昨日くらいから現在にかけてはかなり激しいレートリミットを仕掛けられる結果となっている*1。これに対して周りのTwitterユーザーはまたしても「誰かが立てている非中央集権的サービスへの移行騒ぎ」を起こしているが、これは結局現在のTwitterの互換にはならないし*2、Twitterほどのスケーラビリティを確保できていないので人が集まればすぐにパンクする。
先程書いた通り、イーロン・マスク以後にこのような傾向が現れるようになったわけだが、イーロン・マスクが全ての元凶であるとは思えず、むしろ潜在的に苦しい状況だったところを打破しようとしているのではないかとまで思う。今朝のイーロン・マスクのSEXツイートも、彼のキャラ性質を活かしたヘイト管理に過ぎないのではなかろうか。
以下の記事の、以下の部分がとても虚しい。
The Infrastructure Behind Twitter: Scale
There is no such a thing as a temporary change or workaround: In most cases, workarounds are tech debt.
(意訳) 一時的な変更や対処法なんて存在しない:ほとんどの場合、そのような対処法は技術的な負債となる。
(基本的な収入源としての広告も一向に良くならないのは何故なのだろう、個人的にはInstagramのような、もう少しまともな広告であってほしいと思うが、Twitterではそれは難しいのだろうか。)
ただ、そんな状況下であったとしても、僕は知り合いが好き勝手にツイートできるような環境を用意したTwitterが好きで、これは技術的/運営的な側面から自分には用意することができない環境でもある。これに対しての感謝や尊敬の気持ちとして常々Twitter社に課金したい気持ちが強く、なのでTwitter Blueに加入している。Blue自体の機能を受け取りたいためにBlueに加入しているわけではないためとても不健全に思えるが、もはや自分にはこのくらいしかすることがない。TwitterにTwitterとして居て欲しいだけなのに。とっても非力で、本当に悲しい。
過去に何度か、Sample Stream APIを利用して世界に流れるツイートのうちランダムな1%を見続けていたことがあるが、その時の思い出としてはスパム、チンコ、おっぱい、マンコといった感じで、ほとんど意味を成していなかったように思う。その時ですらそんな有様だったので、現在流れているツイートやユーザーのうち、無視できない割合がスパムによる負荷なのではないかと思う[要出典]。これらを積極的に削除するような運用面でのリソースはもはやTwitterには残っていないだろう。
Twitterはその手軽さからみんなに愛されるようになり、長年にかけて空気感を構築してきたのだと思うが、そんなTwitterの善意に肖って意味のない金稼ぎをし続ける企業や個人がいて、もしもそいつらがこの場を崩そうとしている[要出典]のであれば、それは本当に悲しい。ほとんどが善意ではなく、悪意に対してリソースを割くことになっていたのなら、そいつらがTwitterを壊している、ということにもつながるだろう。だったら本当に許せないね〜、悲しい。