- 2023年7月にローンチしたThreadsは、最初の5日間で1億人が登録
- 小規模で機敏なエンジニアチームが、わずか5か月の技術作業でThreadsを構築
- 多くの人が登録する過程で経験した無理のないスケーリングは、10年以上にわたるインフラおよび製品開発の取り組みの成果
- Threadsのために特別に構築されたインフラではなく、Metaの数多くの製品のためにすでに構築されていたインフラを活用
- 実際には膨大な数のインフラが使われているが、最も重要な分散Key-ValueストアであるZippyDBと、非同期サーバーレス関数プラットフォームAsyncを紹介
ZippyDB: Threads向けのキースペース拡張
- ZippyDBはMetaのインフラを活用してゼロから構築された分散キー/バリューデータベースで、エンジニアがその上に構築できるフルマネージドサービス
- ZippyDBでホストされるキースペースは、比較的容易にスケールアウト/スケールインでき、複数のデータセンターに柔軟に配置できる。
- ソーシャルグラフストレージにはMySQLベースのTAO(The Associations and Objects)が使われる
- ZippyDBはMySQLに対応するキー/バリューデータベースで、カウンター、フィード順位/状態、検索などに使用される
ZippyDBの最適化と製品ローンチ
- ZippyDBのリシャーディングプロトコルにより、クライアントに影響を与えず、完全な一貫性と正確性を維持しながら、ZippyDBユースケースのシャーディング要素を迅速に増やせる
- 新しい物理シャードセットをプロビジョニングし、クライアントに新しい論理-物理シャードマッピングをライブ構成変更で適用することで、ダウンタイムなしにリシャーディングを実施
- リシャーディング作業を水平方向にスケールできるよう設計し、Threadsのローンチのような必要時にリシャーディング速度を高められるようにした
- 突発的なユースケースの成長を容易に処理できる一連の緊急オペレーターツールを開発
Async: Threads向けのワークロード実行拡張
- Async(またはXFaaS)はサーバーレス関数プラットフォームで、エンジニアがソリューションの概念から本番デプロイまでの時間を短縮できるようにする
- Asyncは現在、1日に数兆件の関数呼び出しを処理しており、HackLang、Python、Haskell、Erlangなど多様なプログラミング言語をサポート
- デプロイ、キューイング、スケジューリング、スケーリング、災害復旧、レディネスの詳細を抽象化し、開発者が中核となるビジネスロジックに集中できるようにする
- Asyncは、ユーザー体験を妨げずに数秒後から数時間後に実行できる作業に主に使われる
- Threadsでは、ユーザーがInstagramですでにフォローしている人をThreadsでもフォローできるようにすることで、コミュニティ形成をすばやく支援するうえで重要な役割を果たした
- 5日間で1億人のユーザーを処理するには相当な処理能力が必要だったが、Asyncは増加した負荷をうまく吸収し、制御された実行のためにキューイングした
インフラと文化の出会い
- わずか5か月の技術作業期間でのThreadsの迅速な開発は、Metaのインフラとエンジニアリング文化の強みをよく示している
- Metaの製品は、長年のテストに耐えてきた共有インフラを活用することで、製品チームが素早く動き、成功した製品を迅速にスケールできるようにしている
- このインフラは自動化の度合いが高く、短期間で容量を確保する取り組みを除けば、ワークロードの自動再配分、ロードバランシング、スケーリングが円滑かつ透過的に行われる
- Metaは迅速に動くエンジニアリング文化を志向しており、エンジニアは強いオーナーシップを持って協力し、大規模な共通目標を効率的に達成する
3件のコメント
すごくかっこいい
承知しました〜