クックパッドのシステム構成

クックパッドのhashikemです。

弊社でも開発者ブログを始めることになりました。よろしくお願いします。 初めての記事なので、軽くクックパッドのシステム構成を説明します。

まず、OSはCentOSを使用しています。いざというときにRedHatに乗り換えられることを重視しましたが、CentOSのままの運用で、無事に現在にいたっています。

フロントのWebサーバはApache2.2です。nginx など、他の可能性も考えたのですが、mod_proxy_balancer, mod_rewriteなどの運用経験から、Apacheを使用しています。

アプリケーションはRails2.0です。以前はColdFusionで独自のフレームワークを作って構築していたのですが、アジャイルさを追求したフレームワークであるというメリットに惹かれてRailsへと移行しました。

アプリケーションサーバmongrel_clusterを立ち上げて、フロントのApacheからproxy balancerでバランシングしています。しかしやはり、named_scope使いたい!query_memcachedも使いたい!というわけで、Rails2.1への対応が当面の課題に上がっています。

DBは、MySQL 5.0 で、メインのストレージエンジンはMyISAMを使用しています。最近はInnoDBの使用が主流かと思いますが、実際に両方試してみたところ、弊社のシステムでは、ほとんど違いが見られませんでした。また、DBの一部では、Tritonnを使用して、レシピデータの全文検索を行っています。

サーバについては、ほとんどのサーバをVMWare ESXiで仮想化させており、インフラの運用、調整の負担を減らしています。

この構成で、月間の2億5000万PV、450万人のユニークユーザをさばいています。Railsはパフォーマンスが悪いという話をよくに耳にしますが、それでも、この規模のシステムを運用できるという証明にもなりますね。

現在、クックパッドは世界のRailsサイト中alexaのランキングで7位になっています。また、上位6位までのサイトのPVと比較すると、実はクックパッドよりPVの多いサイトは二つだけになっています。(2008年9月21日時点)(比較1比較2)

かなりざっくりとですが、弊社のシステム構成についてご理解いただけましたでしょうか。

今後、さらにさまざまな情報を発信していきたいと考えておりますので、よろしくお願いいたします。