/note/tech

Dropboxは膨大なデータをどうやって運用しているのか?――、自社の取り組みをメディア向けに解説

DropboxはもともとはAmazon Web Services(AWS)上にデータを置いていた。そのインフラをハイブリッド化していき、2014~2015年ごろに自社データセンター上のMagic Pocketを開発してデータを移行した。2016~2018年ごろには、自社のグローバルネットワーク回線を持ってデータセンター間を接続するようになった。

Dropboxに置かれたファイル(の変更差分)は、最大4MBのブロック単位に分け、それぞれのブロックを圧縮して並列に送るようになっている。データを保存するブロックストレージサーバーには、ブロックが圧縮され暗号化された形でばらばらに格納されている。圧縮には、Dropboxが開発してオープンソースで公開されている圧縮技術「Lepton」が使われている。

独自のストレージシステムであるMagic Pocketを開発して、データをAWSから移行したのは、データの増加が理由だ。総データ量が2018年初頭で500PBに達しており、「EB級のストレージが必要」と判断した。「お金の面もあるが、パフォーマンスや信頼性で、パブリッククラウドで構築していると限界があると感じた」と保坂氏。なお、総データ量は現在すでに1EBを超えており、1年で倍になったという。

こうした性質から、利用頻度が高いデータの「ウォームストレージ」と、利用頻度が低いデータの「コールドストレージ」の2種類のストレージ層に分けることを決めた。両者はユーザーが意識することなく、自動的に分類される。「どれだけアクセスしていなければコールドストレージとみなすかについては、複雑なアルゴリズムで、私もすべては知らない。推測だが、例えばExcelファイルとPDFファイルのように、変更されやすいファイルとされにくいファイルの違いも考慮しているようだ」と保坂氏。

ここで工夫されたのが、コールドストレージでデータを低コストかつ高信頼で保存するレプリケーションの仕組みだという。Dropboxでは、数千キロ離れたデータセンター間のレプリケーションでファイルを冗長化している。

1つ目の案は、各リージョンに置かれたファイルのパリティ情報を、リージョンを越えて保存する方法だ。当初はこの方法を考えて9カ月ほど構築を実行していたが、中止したという。

「ITの考えとして美しく管理しやすいが、われわれは1つのミスで信用を失うので、もしものことを考えなくてはいけない。管理プログラムにバグがあったら、人がミスをしたらと考えた」と保坂氏は説明した。

2つ目の案は、FacebookのウォームBLOBストレージシステムで採用されている手法だ。別のデータセンターに置かれた2つのデータをペアにして、両者のXOR(排他的論理和)をとったデータを3つ目のデータセンターに置くというものだ。この方法では、データ本体が消えても、ペアのデータとXORデータから、元のデータを復元できる。

「ただし、ペアを作るのに複雑さが出てくる。1つのファイルを消したときにはペアを作り直す必要がある。また、XORを計算しているタイミングでAが消えるとどうなるか。そのほかいろいろなパターンを考えると複雑になりすぎるので、この方法も採用しなかった」と保坂氏。

採用した方法は、2つ目の案の変形といえるものだ。データ(Dropboxの場合はブロック単位)のペアを作るのではなく、1つのブロックを2つに分けて別のデータセンターに保存し、その2つのXORをとって3つ目のデータセンターに置くという方法だ。

データを読み出すときは、1つのデータについて3つのデータセンターにリクエストし、最初の2つの返事を受け取って元データとする。2のデータの1つがXORデータであれば、半分のデータとXORデータから残り半分を復元する。

この方法をとっているコールドストレージと、データをまるごとレプリケーションしているウォームストレージとで読み出しのレイテンシーを比べると、やはりほとんどの場合でウォームストレージのほうが速い。

しゅごい