Fastly と Fediverse の未来 : パート1
インターネットに関する最新のトレンドに敏感な方は、「Fediverse」という言葉を最近耳にしたことがあるかと思います。
分散型ソーシャル・ネットワーク・プロトコルの実装にはさまざまな種類がありますが、多くの方が ActivityPub と呼ばれるプロトコルをサポートする分散型ソーシャルネットワークの Mastodon を利用しています。Mastodon は公開から6年以上が経過していますが、近年ユーザー数が大幅に増加し、サーバーへの負荷が増えるようになりました。そのため、多くのシスアドがシステムを迅速に拡張する方法を学ぶ必要性に迫られています。私たちは、 Mastodon をはじめとする ActivityPub の実装や、Scuttlebutt を含むその他の分散 型プロトコルだけでなく、Fediverse の急速な拡大を背景に、関連する新しいツールや技術が前例を見ない勢いで誕生しているのを目の当たりにしています。
オープンソースと標準化にコミットしている私たちにとって、Fediverse が今後数か月でどのように発展していくのか非常に楽しみです。このブログ記事では、Fediverse の仕組みと、Fastly がそれをどのようにサポートしているかをご紹介します。ちなみに次回の記事では、Fediverse と Fastly の今後の取り組みについて取り上げます。
Fediverse (フェデレーションネットワーク) の仕組み
はじめに、基本的なアーキテクチャについて押さえておく必要があります。Fediverse に関しては、非常に沢山のガイド が存在するので、ここでは要点だけにとどめようと思います。以下が重要なポイントです。
フェデレーション内には無数のサーバーが存在します。これらのサーバーには個人が運営しているものと、組織や企業が運営しているものがあります。ひとり、あるいは数人のユーザーが利用するものもある一方で、数千人のユーザーを抱える大規模なインスタンスもあります。
異なるインスタンスのユーザー間でのフォローや、やり取り、コンテンツの共有が可能です。あるインスタンスのユーザーのコンテンツが公開されると、そのユーザーをフォローしている人のインスタンスにコンテンツがフェデレートされます (「Fediverse」と呼ばれるのはそのためです)。
ユーザーは、別のサーバーを利用したい場合や、既存のサーバーを何らかの理由で離れたい場合などに、サーバー間の移行を選ぶことができます。その際、自分のすべてのフォロワーと個人情報も一緒に移行できます。
Mastodon はフェデレーションネットワークの一例であり、先述した通り、同様のネットワークは他にも数多く存在します。分散型ソーシャル・ネットワーキング・プロト コルの最も素晴らしい点は、それらのプロトコルを実装したプラットフォームが、同じプロトコルを実装した別のプラットフォームと通信できることです。あくまで同じプロトコルを利用していれば、ですが。
これはある意味で、電子メールのシステムと似ています。例えば、「simon@example.com」のようなアドレスは、ユーザーの「simon」と、それらがホストされているインスタンスである「example.com」という2つのパートで構成されています。また別に例えるなら、ポッドキャストにも似ているといえます。誰もがコンテンツの作成やアクセスに異なるツールやシステムを利用でき、それらはすべて、驚くほど創造的な方法によってうまく連携して機能しています。
なぜこれが重要なのか?
ソーシャルネットワークは、人気が出てユーザー数が増えるとスケーリングの問題が発生することがよくあります。Mastodon のインスタンスのような多くの Fediverse サーバーにも、同様の問題が起こりえます。(特に、現在のようなアクティブユーザーの急激な増加を経験したインスタンスは、これまでほとんどありませんでした)。より多くのユーザーが皆さんのインスタンスに参加した場合、彼らがフォローしているインスタンスからコンテンツをフェデレートする必要があります。同時に、ユーザー数が増加すると、他の多くのインスタンスも皆さんのインスタンスからコンテンツをフェデレートしようとします。さらに、非常に人気の高いユーザーがひとりいるだけで、膨大な量のインバウンドリクエストによってシステムが過負荷の状態に陥る可能性もあります。一元化されたソーシャルプラットフォームのスケールアップでも大変なのですから、数千もの分散型プラットフォームのスケールアップには大きな困難が伴います。
多くのインスタンスが趣味レベルの人たちが運営していることが、こうした現状をさらに悪化させています。また、他のタイプの Web アプリケーションとは異なり、Fediverse サーバーのスケーリングに関しては、役立つガイドが非常に限られています。
Fastly による Fediverse への貢献
Fastly はオープン Web をサポートし、Fediverse が今後広く普及していくことを期待しています。同時に自分たちは、Fediverse コミュニティの成長に貢献し、重要な役割を担う存在になると考えています。そして、そのために私たちに何ができるかを理解しています。Fastly は、Fediverse のユーザーやクリエイターが自分たちのプラットフォームで、自分たちが望むやり方と規模で成功を収めるのをサポートしたいと考えています。私たちは Fediverse が専有的で、一元化され、ひとつのベンダーに依存するようなものになることを望みません。それは Fediverse がオープン Web の持つ魅力を体現していて、私たちにその素晴らしさを常に思い起こさせてくれるからです。実際に、Fastly のチームメンバーが Fediverse コミュニティの友人たちに、スケーリングの専門知識やインサイトを提供する機会も生まれているようです。
また、Fediverse 向けのツールを作る Glitch クリエイターの活発なコミュニティもあり、例えば Luca Hammer 氏が開発した便利な Fedifinder を使用して、多くのユーザーが既存のソーシャルネットワークから Mastodon に移行しています。実際、Glitch には多くの Fediverse ツール (特に開発者向け) があります。Glitch チームは、その中でも特に素晴らしいツールをいくつか紹介するために、Fediverse of Madness プレイリストを作成しました。さらに、オープンソースを支援する目的で立ち上げられた Fast Forward プログラムでは、Fediverse エコシステムのキープレーヤーとの取り組みをすでに始めています (詳細は近日公開します✨)。同プログラムの詳細については、ぜひこちらからお問い合わせください。
Fastly が Fediverse に最も大きく貢献できる分野は、スケーリングのサポートだと考えています。具体的には、お客様が (必要な規模でスケーリングしながら) 任意の場所でインスタンスをホストし、ネットワークの分散化を維持できるよう支援します。
Fastly は、セットアップ後すぐに利用を開始でき、インバウンドリクエストを効率的に高速処理できるキャッシュ機能を提供しています。これだけでも、(特に人気の高いユーザーの場合、数多くのフォロワーに同じコンテンツを表示する必要があるため) サーバーの負荷を抑えるのに役立ちます。また、Fastly のキャッシュは世界中に分散されているので、フォロワーがどこに居ても、最新の投稿が最速のスピードで配信されます。
とはいえこれは、ユーザーがコンテンツを投稿できなければ意味がありません。従来のキャッシュは (TTL と呼ばれる) 時間ベースの有効期限に基づいていて、新しいコンテンツは予測可能な間隔で配信されることを前提としています。しかし Fastly では、11年前の開発当初から、イベントドリブン型の有効期限が採用されています。Fastly の インスタントパージ機能によって、新しいコンテンツでも平均150ミリ秒の速さで無効化して更新できるので、新たな投稿が行われた際に、タイムラグなしでフォロワーはその投稿を確認できます。
これは素晴らしいことですが、インスタンスのオーナーとしては、ネットワークの状況をリアルタイムに把握する必要があります 。ここで Fastly のリアルタイムログ が役立ちます。リクエストされたコンテンツが Fastly のキャッシュから提供された場合も、お客様のサーバーから配信される場合と同じように、さまざまな場所やサービスに、任意のフォーマットでログを迅速にストリームすることが可能です。
さらに Fastly は、インスタンスを構成する異なるサーバー間で、透明性の高いロードバランシングを行います。また、サーバーのひとつがダウンした場合に、異なるサーバーやクラウド間のフェイルオーバーを実行する、よりスマートなロードバランサーとしても機能します。それ以外にも、パフォーマンスやデータプライバシーに関するコンプライアンス上の目的で、