イーロン・マスク氏がTwitter社を買収して以来、Twitterがサービス終了してしまうのではないかと言われています。すでに一部地域では読み込み時間が大幅に増加したり、コンテンツ読み込めなくなったり、二要素認証やデベロッパーAPIが消失するといった弊害が出ているようです。
Twitterが突然機能不全に陥る可能性はあるのでしようか。
私はTwitterがいきなりサービス終了するという可能性は低いと思いますが、今後もTwitterの機能が徐々に歯抜けになり過去のツイートが徐々に消えてしまうかもしれないと考えています。というのもTwitterのネットワーク・インフラが年々複雑になっているからです。
Twitterのネットワーク・インフラ問題
Twitterのネットワーク・インフラは様々なシステムが入り混じったどうぶつタワーバトルみたいに積み上げられたものです。技術力がないスタートアップ企業が急成長に対応するためにその時々で応急処置的に何でもぶち込んだ結果で、ろくに統合整備されなかったか、あるいは複雑化しすぎて手を付けられなかったのかもしれません。
TwitterはVPSプロバイダを通じてAWS(Amazon Web Service)などのスケーリングサービスを利用していません。なので一部のマスクファンが言うように「素人でもすぐに引き継ぎできる」ような代物ではありません。
ほとんどが社内の独自システム構成なため外部の技術者がいきなり入っていって運用・移行するのはかなり難しいと思われます。シリコンバレーにいる天才に協力してもらえばできるかもしれませんがその天才が何10人単位必要になってくるのではないでしょうか。
まず、システムになんらかの変更を加える過程でBGP(Border Gateway Protocol)のアップデートに失敗するとすべてのネットワークが停止してしまう可能性があります。
Facebookは2021年10月にこのBGPの更新に失敗しFacebook社(現Meta)が運営するすべてのサービス、Facebook、Instagram、Messenger、WhatsApp、Oculusがダウン。Facebookアカウントを利用していたサービス、アプリも利用できない状態となりました。原因究明と復旧に丸一日かかりました。
キャッシュやエッジポイント(PoP)などにも気を使わなければなりませんが、これらはデータセンターへと押し込まれて各ホストへと配られますので省きます。
こういった管理方法が後任者に適切に引き継ぎされなければTwitterが落ちてしまうということも十分考えられます。
複雑化してしまったストレージ・システム
Twitterの一番厄介なところはストレージ・システムです。ツイートや画像などをアクセス頻度に応じて新旧システムに振り分けているようです。Twitterは強靭なキャッシュ・システムを備えており、高速なアクセスが必要な話題のツイートなどやアクセスが多いデータはこのキャッシュに保存されます。逆に直近のアクセスが少ないツイートなどは古いストレージ・システムへと保管されています。
下のグラフはTwitterのエンジニアブログで公開されたTwitterのデータベース・システムの割合です。
軽くTwitterデータベースの変遷の歴史を解説します。Twitterが初めて公開されたときはMySQLを使っていました。その後2010年にデータ分割と負荷分散を行うシャーディング技術が核にあるSQL、Gizzardを導入します。2012年には動画像の管理にBlobstoreを導入。2014年にはより多くのトランザクション処理を行えるマルチテナント方式のManhattanを導入しました。
- 2007 MySQL
- 2010 Gizzard
- 2012 Blobstore
- 2014 Manhattan
他にもPostgresなど様々なSQLデータベースを導入しており、かなりカオスな状態です。
これらのレガシーストレージ・システムは完全に一つのデータベース管理システムに移行されたことはなく、ところどころで使われているようです。新旧システムが入り乱れており、標準化がなされていません。
ここ数年ストレージ・システムのデータベースを統合しようという試みが始まっていました。Kafkaを導入しHadoopからGoogle Cloud Platformへ移行するとの発表もありましたが思うように進んでおらず、ごく一部に限られているようです。
エンジニアたちを大量解雇した今、これらのシステムを維持管理するのは難しいと言わざる得ません。いくらお金を積まれてもできないというエンジニアは多いでしょう。
管理性が悪いPuppet
あと個人的にはTwitterがPuppetというサーバ構成管理ツールに依存していることが大きな問題ではないかと感じています。Puppetは管理性がイマイチで昨今ではほとんどの管理者はAnsibleを利用していると思います。(自分調べ)
Puppetの使いにくさはPuppet DSLという独自の言語で管理を行っている点にあり、TwitterはPuppetリポジトリに1000,000行ものコードが収められています。考えただけで頭を抱えたくなります。
経営陣やマーケティングチームなどは代えが効きますが、移行が完了するまでデータセンターで管理を行っていた人たちをなんとしてもつなぎとめる必要があります。にもかかわらず大量解雇がまだ行われているようので徐々に過去のツイートやデータが消えゆく日がくるかもしれません。
あるいは思いつきだけで行動するイーロン・マスク氏の性格上、問題が出てきたらデータを全部消して一回全部リセットする、ということも考えられそうです。
イーロン・マスク氏は利用者や技術者が多い日本を中心にインド、インドネシアやブラジルで技術チームを立ち上げるとのことですが、果たして日本にこの混沌を紐解くことができる有能な人材がいるのか甚だ疑問です。
おわり
Photo by Kenny Eliason on Unsplash
コメント