ニコニコ大百科のアーキテクチャ

Rubyだが非Railsとのこと。

ニコニコ大百科のアーキテクチャ - グニャラくんのグニャグニャ備忘録@はてな

ニコニコ大百科Rubyを使って構築した、と言うと「Railsなんですね〜」とよく言われます。しかし、Railsは使っていません。ニコニコ大百科専用に、テキトーなフレームワークを書き起こしました。

Rubyを用いたのは、当時Rubyをほとんど使ってなかったので復習のために使いたかったのと、同僚にRubyが書ける人がいたからです。Rubyは遅いといわれますが、実用上困っていません。遅い部分は、C言語で書いたlighttpdモジュールRubyモジュールが処理しているためです。むしろ、Hpricotのメモリリークや、libxml-rubyメモリリークバグや仕様変更、libmemcachedのRubyバインディングの挙動に悩まされました。今だったらNokogiri使えっていう話なんでしょうけど…

DBサーバ

DBサーバも、DellPowerEdge 860です。もちろん10万円未満で調達したものです。OSは、FreeBSD 7.0です。弊社では、多くのデータベースサーバFreeBSDで稼動しています。RDBMSは、MySQL 5.0 + Tritonnを使っています。マスタ1台+スレーブ1台の構成です。
SELECTを含めた、ほとんどのリクエストは「マスタ」に対して行われます。Webサーバでは、生成したhtmlなどを静的なファイルでキャッシュするため、マスタに対してリクエストを送ってもパフォーマンス上全く差し支えないし、レプリケーション遅れを気にする必要がないからです。


スレーブのみに、全文検索用のインデックスを付与したテーブルが存在します。スレーブは、主に全文検索クエリ用に用いています。


データベースにリクエストが届いた時点で負け」という思想で、データベースについては目立ったチューニングは行っていません。負荷的にはまだ余裕があります。