Twitterが分散フレームワーク「Gizzard」公開! Scalaで書かれたShardingを実現するミドルウェア

2010年4月7日

Twitterは独自に開発した分散フレームワークの「Gizzard」をオープンソースとして公開しました。GizzardはScalaで書かれたJavaVM上で動作するミドルウェアで、PHPやRubyといったWebアプリケーションからの要求を自動的にデータベースに分散することで、大規模で可用性の高い分散データベースを容易に実現するためのものです。

Gizzard:フォルトトレラントな分散データベースを実現

The Twitter Engineering Blog: Introducing Gizzard, a framework for creating distributed datastores

Twitterのブログにポストされた「Introducing Gizzard, a framework for creating distributed datastores」では、Gizzardは次のようなものであると説明されています。

Gizzard, a Scala framework that makes it easy to create custom fault-tolerant, distributed databases.

GizzardはScala製フレームワークであり、独自のフォルトトレラントな分散データベースを容易に実現する。

Gizzardは以下の図のように、Webアプリケーションとデータストレージのあいだに入るミドルウェアとなり、Webアプリケーションからのデータの「Sharding」を行うことで分散データベースを実現する構造になっています。

fig GizzardはWebアプリケーションとデータベースのあいだでShardingを行うミドルウェア。この図はTwitterのエントリ「Introducing Gizzard, a framework for creating distributed datastores」に掲載されていたものを加工

Webアプリケーション層では、PHPやRubyなどが典型的なものとされ、データベース層ではリレーショナルデータベースやLucene、Redisなどネットワーク対応のあらゆるデータベースに対応すると説明されています。

Shardingによるデータ分割とレプリケーションを実現

Gizzardの核になっているのが「Sharding」(シャーディング)と呼ばれる技術です。Twitterの説明を借りると、Shardingとは「パーティショニング」と「レプリケーション」の2つの技術からなります。

パーティショニングとは、1つのデータベースをハッシュなどを使って複数の部分に分けることで複数のデータベースに分散すること。レプリケーションは、あるデータのレプリカ(複製)を別のサーバにも作ることです。レプリケーションにより、全体として耐障害性が増すとともに、大量のアクセスに対して複数のサーバが同時にレスポンスできるようになるため性能向上が期待できます。

この2つの技術からなる「Sharding」は、しかし難しい技術だといいます。

The problem is: sharding is difficult. Determining smart partitioning schemes for particular kinds of data requires a lot of thought. And even more difficult is ensuring that all of the copies of the data are consistent despite unreliable communication and occasional computer failures.

問題は、Shardingは難しい、ということだ。データに対して適切なパーティショニングの構造を決定するには多くのことを考慮しなければならない。さらに難しいのは、ネットワークやサーバなどの故障を想定しつつ、すべてのデータの一貫性を実現しなければならないことだ。

そして、既存のオープンソースとして公開されているさまざまなソフトウェアはまだ未成熟だったり制限があったために、独自にGizzardを作ったと。

Unfortunately, as of the time of writing, most of the available open-source projects are either too immature or too limited to deal with the variety of problems that exist on the web.

残念なことに、現時点では多くのオープンソースはまだ未熟だったり、制限があったりする。

トラフィックに対応するための挑戦が続くTwitter

Twitterはめざましい成長の裏で、ずっと「いかに大量のトラフィックをさばくか」という技術的なチャレンジを続けてきました。このチャレンジについては以下の記事でその一部を紹介しました。

上記の記事ではMySQLとMemcachedのボトルネックをいかに克服したか、という内容でしたが、その後Twitterは大量のデータ管理のためにNoSQLデータベースのCassandraを選択したとも伝えられていました。

そして今回のGizzardの発表です。Twitterの技術部門では、大量のデータとトラフィックに対応するためにさまざまな選択肢を検討しているということなのでしょう。

あわせて読みたい

NoSQL RDB プログラミング言語 Twitter




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本