研究会

機械学習、データベース、分散システム、その他技術的なことを書く研究会です

P2P の視点で見たポータブル Web アプリケーション

概要

ポータブル Web アプリケーションと P2P アプリケーションの相性についてのお話です。

詳細

先週くらいに Heroku Button という Heroku へのデプロイを簡単にするツールが発表されました。Heroku Button により GitHub で公開しているアプリケーションを他人に動かしてもらうのがより手軽に行えるようになりました (こんなふうに)。

こういう「作った Web アプリケーションを人に渡しやすくするツール」としては Heroku Button の他にも Docker といったものが登場しましたが、このポータブル Web アプリケーションの流れは P2P アプリケーション、特に「一部のノードがサーバーの役割を果たすタイプの」P2P アプリケーションにとても都合がよいのではないかと思います。

「一部のノードがサーバーの役割を果たすタイプの P2P アプリケーション」とは例えば P2P 匿名掲示板である新月 のようなものです。新月のネットワークは掲示板の書き込みを受け付けて他のノードと同期するノード群と、書き込みを閲覧するだけのノード群がいます (参考: 新月の紹介)。

この種のアーキテクチャーをとる P2P アプリケーションでは書き込みを受け付けるノードがたくさんいるかどうかがサービスの性能に大きく関わってくるのですが、新月の場合は書き込みを受け付けるノードを動かすには基本的に自宅サーバーを立てねばならず、一方閲覧するだけなら Web ブラウザーだけでできてしまいます。

このため大抵の人は「閲覧するだけのノード」として参加することを選択してしまい、何も対策を取らなければ増加するユーザー数に対してシステムの性能が追い付かなくなってしまいます。

そこで今回の Heroku Button のような、ノードを動かすための障壁を低くしてくれるようなツールはこの種のアーキテクチャーをとる P2P アプリケーションにとって助けになります。今まではノードを動かすのに手間がかかっていたのがボタン一発でクラウド上でノードを動かせるようになれば、システムの負荷分散に貢献してくれるノードが増えやすくなるのではないかと思います。例えば作った P2P Web アプリケーションのトップページに Heroku Button を設置するとかするとおもしろいのではないでしょうか。

とりとめのない話

ポータブル Web アプリケーション とか Immutable Infrastructure が真に力を発揮するのって、それらが通信することでシステムを形作る P2P 型のアーキテクチャーにおいてではないだろうか。ネットワークシステムでは全体の性質を決めるのは個々のノードの性質よりむしろ「ノードの繋がり方」らしいし (水分子の性質は水素原子と酸素原子を個々に眺めても分からないとか)、個々のノードは単純極まりないセルオートマトンライフゲームに生命の神秘を見出すという人もいるらしい。「繋がり方」でサービスを表現するインフラとはどんなものになるだろうか。

まとめ

  • Heroku Button や Docker でポータブル Web アプリケーション

  • P2P Web アプリケーションには Heroku Button つけよう

  • ポータブル Web アプリケーションに P2P の要素を絡めて新しい何かが生まれそう

参考