InstagramがCassandraを使っているらしい
Instagramといえば1年前の以下の資料によればAWS上にDjangoを使ってサービスを展開させておりデータのストレージとしてはPostgreSQLとRedisを使っていました。
- 「バックエンドの経験はなかった」Instagram創業者は、どうやってシステムをスケールさせてきたか - Publickey
- Kosei Kitahara's Blog: Instagram のスケール正攻法
- Mike Krieger, Instagram at the Airbnb tech talk, on Scaling Instagram | Cache (Computing) | Scalability
今回はさらにCassandraを使うようになったみたいです。
元ネタはこちら
Planet Cassandra | DataStax Academy: Free Cassandra Tutorials and Training
この記事はDataStaxの人がインタビュアーでInstagramの人がインタビューイという構成ですが、Instagramの人も元DataStaxのようですね。
InstagramではCassandraを7,8か月使っており、当初はセキュリティのために監査情報を保存していた。しかし最近ではもっとクリティカルな部分、インボックスやニュースフィードと呼ばれる部分、をRedisからCassandraに置き換えた。置き換え理由はRedisだとメモリの限界に達したためとのこと。
個人的見解ですが、最初はRedisで始めてサービスが成長したら永続化できるものを後で採用するというのはひとつのパターンなのかもしれませんね。またCassandraを採用した理由として元DataStaxの人がいたからって理由も大きいと思いますが、それ以外にもニュースフィードって更新は多いけれども一貫性はそれほど重要ではない、ちょっと古いニュースフィードを表示してもそれほど問題ではない、からというのもあるかもしれませんね。この辺は某氏の受け売りですがw
インフラとしてはAmazon EC2のhi1.4xlargeのSSDインスタンスを12ノード使って1.2TBのデータを保存しており、使っているCassandraのバージョンは最新の1.2でVnodes, Leveled Compactionといった機能を含んでいるとのこと。
詳細は6/11,6/12にサンフランシスコで開催されるCassandra Summit 2013で明らかになるでしょう。
Events | DataStax
2年前の2011年のCassandra SummitではTwitterがtweet buttonの部分にCassandraを採用したというユースケースがあったようですね。
Cassandra at Twitter | Computer Data Storage | Cache (Computing)
ちなみに6/13には同じサンフランシスコでHBaseConもあったりします。
ま、どっちも僕は行かないんですけどね。