Evan Priestley 氏は知る人ぞ知る、Facebook を代表する (元) エンジニアの一人です。Facebook には 2007 年から 2011 年の間に在籍していました。
Facebook はもともと昔ながらの、URL とファイルレイアウトが同一構成の PHP サイトとして開発されていた (それぞれの URL がディスク上の .php ファイルに map されている形だ)。この設計は沢山の問題を生んだが、それらの問題は長い間認識しづらかったし、設計を変えることにも躊躇していた。設計を変えるには全てのコードをいじる必要があり、それによって、なにかを壊してしまう危険性があったからだ。
後に canvas pages などをローンチしたとき、それら用に mod_rewrite を使った rewrite rule を apache の設定に追加した。これは 2007 年の出来事で、はじめて Facebook が URL-direct-to-disk のしがらみから解放された時期だったと思う。
2009 年に vanity name (URL に反映されるユーザ固有の文字列) をローンチしたとき、我々はコードを 404 ハンドラ内に実装した。URL が vanity URL っぽければ、ルックアップを実行し、ルックアップに成功すれば通常フローに戻る実装だ。
2009 年 ~ 2010 年に Facebook Lite プロジェクトの開発過程で、我々は MVC っぽくて URL ルーティング機能もついたウェブフレームワークを開発した (名は “Alite” という)。このフレームワークは後にメインのウェブスタックに採用される。Alite は blanket rewrite rule を使い、URL ルーティングをアプリケーション側に任せるといった、1998 年から存在する、その他のスタックとそう変わらないものだ。
僕の知る限り、本体のサイトは (2011 年時点で) 完全に Alite に移行し、Groups URLs などの綺麗な URL (https://www.facebook.com/groups/example/) を回している。これからの新しいアプリケーションは任意の URL のルーティングが可能なので、”.php” の時代はぼちぼち終わりを告げているはずだ。とはいえ、まだまだ “.php” のページや、それらへのリンクが存在するので、古いアーキテクチャの名残りはしばらく存続するだろう。