グリーの大規模分散ストレージ戦略(nanofs) | GREE Engineers' Blog(情報元のブックマーク数)

Greeのインフラ苦労な話。こういう苦労話は面白いしためになる。

弊社で運営させていただいている “GREE” ではユーザの写真や動画データを保存することができます。1億ユーザを目指すグリーは、ユーザの増加とともに写真や動画データは上限なしに増加していきます。またユーザの皆様の大切なデータを失うことは許されませし、サービスを止めることも許されません。そんな状況の中、様々な技術や仕組みを使いサービスを運営してまいりました。
グリーのストレージの歴史は大きく分けて3世代がありました。

グリーの大規模分散ストレージ戦略(nanofs) | GREE Engineers' Blog

高価なサーバを入れて処理能力を上げたが・・・価格がね・・・

第三世代

第三世代では、第二世代の仕組みに加え高価なサーバを購入することにより1台のサーバでより多くのユーザを処理できるようにパフォーマンスを向上させました。同時に1台のサーバ内の複数のHDDに画像データを保存するため信頼性を向上し、また多くの画像を保存できるためサーバの台数を減らすことができました。しかし1台のサーバへのトラフィックが上がりwebDAVサーバのアプリケーションが処理しきれなくなってしまいました。ある程度はアプリケーションのチューニングにより改善を行うことは可能ですがトラフィックを分散させない限りいつかアプリケーションの限界を迎えることとなります。スケールアウトするのでサーバを増やせばよいのですが今度はサーバ費用が増加することになります。

グリーの大規模分散ストレージ戦略(nanofs) | GREE Engineers' Blog

そこで、分散ファイルシステムを独自開発とのこと。

第四世代目のストレージシステム

これまでの経験上Webサービスに適したシステムは下記の3つです。

  • Scalability (拡張性)
  • Availability (可用性)
  • Maintainability (保守性)

この3つのことをグリーの一部では “SAM(サム)” と呼ばれております。テストにはでませんので忘れてください・・・。
Scalability(拡張性)は、スケールアウトすることがトラフィックを分散させることに繋がります。
Availability(可用性)は、一部のサーバで障害が発生しても安定して稼働しつづける冗長化が保たれたシステムが好ましいと考えます。
Maintainability(保守性)は、運用コストが低く運用し易いシステムであるべきと考えました。
この3つに当てはまるアプリケーションとなるとMogileFSが思い浮かんだのですがよりシンプルな構造の分散ストレージがよかったので自社で開発する道を選びました。

グリーの大規模分散ストレージ戦略(nanofs) | GREE Engineers' Blog

screenshot