2010年4月6日、Twitterは独自に開発した分散フレームワーク「Gizzard」をGitHubにオープンソースとして公開しました。Gizzardは「シャーディング」と呼ばれる、1台に格納するとパフォーマンスに影響を及ぼす大容量なデータベースを複数台に分割することで解決を図る手法をサポートするフレームワークです(図1)。TwitterのバックエンドにScalaが使われていることが以前話題となりましたが、このGizzardもScalaで書かれています。
Gizzardはミドルウェアとして動作し、RailsやPHPなどで動くWebフロントエンドからのリクエストを受け取り、My-SQLやRedisのようなインメモリDB、Luceneなど各種データストアへ渡します。Twitterでは同時に公開している分散グラフデータベース「FlockDB」とあわせて運用しており、秒間10,000を超えるリクエストをさばいているようです。また耐障害性も備えており、レプリカ作成はもちろんのことレプリカが壊れても正常に動作するようなしくみを有していたり、データストア間のマイグレーションもすばやく行えるようになっているようです。
Gizzardを試してみようという人のために、「Rowz」というMy-SQLと組み合わせたサンプルアプリケーションを公開しています。
URL:http://github.com/twitter/gizzard