Pushpin を活用してリアルタイムに構築
Pushpin</u> が Fastly の Fast Forward</u> プログラムの一環として提供されることになりました。私たちは質の高いオープンなインターネットの構築に向け、同プログラムを通じて同じ志を持つ皆さまをサポートしています。Pushpin はクライアント接続をオープンな状態に維持するプロキシサーバーで、リアルタイムの API エンドポイントの構築を容易にする、Fastly のエッジメッセージングシステム</u>である Fanout のオープンソース実装です。Pushpin は HTTP ストリーミング、HTTP ロングポーリング、WebSockets をサポートしています。Pushpin はプロキシサーバーなので、任意の言語でバックエンドを構築し、便利なライブラリ</u>を使用して簡単に統合することが可能です。
Pushpin は汎用性が非常に高いので、既存の API やマイクロサービスとの併用に適しています。
API ロジックを一箇所に集約 : リアルタイム化のためだけに別の言語で新たにバックエンドを書く必要がありません。
マイクロサービスに最適 : 集約型のメッセージブローカーを利用する必要がありません。各マイクロサービスに独自の Pushpin インスタンスを使用できます。
ステートレスな開発 : Pushpin がステートを記録してくれるので、お客様が記録する必要はありません。また、サーバーレスのバックエンドとも相性が抜群です。
ニーズに合わせて拡張が可能 : Pushpin は水平方向の拡張に優れています。拡張の必要がある際はインスタンスを増やすだけで可能になります。
Pushpin のしくみ
Pushpin は通常の有効期間が短い HTTP リクエストを使用して、バックエンドの Web アプリケーションと通信します。これにより、バックエンドアプリケーションを任意の言語と Web サーバーを使用して作成することが可能になります。主な統合ポイントは2点あります。
バックエンドはプロキシされたリクエストを処理します。HTTP の場合、各受信リクエストはバックエンドにプロキシされます。WebSocket の場合、各接続のアクティビティはバックエンドに送信される一連の HTTP リクエストに変換されます。Pushpin の動作は、バックエンドがこうしたリクエストにどのようにレスポンスを返すかによって決まります。
バックエンドは Pushpin にデータをプッシュするよう指示します。クライアントの接続方法を問わず、Pushpin のプライベートコントロール API に HTTP POST リクエストを行うことで、クライアントにデータをプッシュできます。Pushpin は、このデータをそのチャネルでリッスンしているクライアント接続に挿入します。
Pushpin を既存のアーキテクチャに組み込む方法はいくつかあります。
シンプルなバックエンドundefined
Pushpin の最も一般的な使用方法は、典型的な Web サービスのバックエンドの前面で、バックエンドが Pushpin にデータを直接パブリッシュすることです。Web サービス自体が受信リクエストに応答してデータをパブリッシュするか、データをパブリッシュするバックグラウンドのプロセス/ジョブが存在する場合があります。
API 管理undefined
API 管理システムの大半はプロキシサーバーとしても機能するため、Pushpin は (プロキシを連鎖させるだけで) API 管理システムと組み合わせることができます。
メッセージキューundefined
プッシュするデータが多い場合は、中間にメッセージキューを導入することが可能です。バックエンドプロセスは、メッセージキューに一度だけデータをパブリッシュできます。さらにメッセージキューはアダプタを介して、指定したチャンネルのサブスクライバーを有するひとつ以上の Pushpin インスタンスにデータをリレーできます。
マイクロサービスundefined
マイクロサービスの環境で Pushpin を使用すると、集約型のメッセージブローカーを利用せずに他のマイクロサービスからの即時的な更新を容易にリッスンできます。各マイクロサービスはそれぞれ独自の Pushpin インスタンスを取得し、マイクロサービス同士はベンダー固有のメカニズムではなく組織独自の API を介して通信します。
コミュニティ & リソースundefined
Pushpin を試してみませんか? 以下では、Pushpin.org</u> のリアルタイム化の例など、Pushpin の使用開始に役立つリソースをご紹介します。
ライブテキストエディター</u> - コラボレーションが重要な鍵になる世界において、操作変換を利用してコラボレーションを促すテキストエディターを作成する方法を紹介します。
Leaderboard</u> - Pushpin を使用し、HTTP ストリーミングを利用してスコアのソート済みリストを表示します。
マルチユーザーチャットルーム</u> - HTTP ストリーミングを利用してマルチユーザーチャットルームを作成します。
ToDo リスト</u> - Pushpin で更新を送信してインタラクティブな ToDo リストを作成します。
Webhook Inbox</u> - Webhook を受信、保存できる一時的な URL を簡単に作成できます。新しい Webhook リクエストを受信するとリアルタイムでユーザーインターフェイスに表示されます。
Pushpin に関するご質問や詳細については、 GitHub のプロジェクト</u>、新しい開発者フォーラム</u>、問題トラッカー</u>をご確認いただくか、Twitter (@pushpinorg</u>) にてお問い合わせください。Pushpin の商用サポートは Fastly Fanout</u> が提供しています。
オープンソースソフトウェアundefined
Pushpin はクライアント接続をオープンな状態に維持するプロキシサーバーで、リアルタイムの API エンドポイントの構築を容易にする、Fastly のエッジメッセージングシステムである Fanout のオープンソース実装です。オープンソースは Fastly で長く受け継がれてきた伝統の一部であり、私たちはオープンソースをベースに構築し、そのコミュニティに貢献しながら、可能な限りプロジェクトをオープンソース化しています。さらに、Fastly Forward プログラムを通じて5,000万米ドル相当の無料サービスを提供し、優れたインターネットや Fastly プロダクトの実現に貢献しているプロジェクトに恩返しをしています。Pushpin と Fanout の利用を可能にするために、Fastly は以下を使用しました。
Rust</u> - システムプログラミング言語
ZeroMQ</u> - 汎用メッセージングライブラリ
Qt</u> - 基礎的な C++ ライブラリ
OpenSSL</u> - 汎用暗号化とセキュアな通信を可能にするライブラリ
Httparse</u> - HTTP/1.x リクエストとレスポンスを解析するプッシュライブラリ
私たちは、オープンソースプロジェクトのメンテナーに、Fastly の取り組みの中で実装した改良やバグ修正を提出することで、オープンソースコミュニティにできる限り貢献しています。私たちはこれらのプロジェクトを作成してくださった方々に心から感謝しています。オープンソースのメンテナーまたはコントリビューターの方で、Fastly Forward への参加にご興味のある方はこちらまでお問い合わせください。