Dropboxはファイル保存コスト削減のためコールドストレージを採用

Dropbox(ドロップボックス)は、AWSから独自のデータセンターへと、負荷を移動する作業に何年も前から取り組んできた。ファイルの保存とアクセスの方法を細かく制御する必要があったからだ。そのために、Magic Pocketと呼ばれるストレージアーキテクチャを開発して活用してきた。しかしその過程で気付いたことがある。多くのユーザーは、バックアップ目的でDropboxにファイルを移動すると、その後はめったにアクセスしなくなるということだ。

そしてエンジニアが悟ったのは、すべてのファイルを同じ方法で保存するのは、ほとんど意味がないということ。多くのファイルは、Dropboxに預けた日の翌日以降、あまりアクセスされなくなるからだ。そこでDropboxでは、2種類のストレージを用意することにした。これまでのMagic Pocketを使うウォームストレージと、長期保存に適した新たなCold Storage(コールドストレージ)だ。そうすることでDropboxは、ファイルの保存コストを下げつつ、ユーザーの要求に応じて素早いアクセスを提供することもできる。

Dropboxのユーザーとしては、当然ながら、同社がどのような技術的な課題に直面し、それをどのような方法で解決しているかなどといったことに興味はない。ユーザーは、ファイルをクリックしたとき、特に遅れを感じずに開くことができれば、それでいいのだ。ファイルの古さなど関係ない。しかしDropboxでは、古いものは別のレイヤーに保存する手法を編み出した。

「コールドストレージには、通常、アクセス頻度の低いものを保存することになります。そのため、そうしたファイルの場合、ストレージ容量、パフォーマンス、そしてネットワークのバンド幅の間でバランスを考える必要があります」と、コールドストレージのプロジェクを担当するエンジニア、Preslav Le氏はTechCrunchに語った。

というわけで、コールドレイヤーに保存されたファイルを、許容範囲の待ち時間以内に取り出すことのできるシステムを設計するのは、エンジニアの責任だった。ユーザーが気付いてしまうような遅れは許されない。そのような仕事は、設計上のきわどい綱渡りを必要とする。こうしたアプローチでは、すべの要素のバランスをうまく取る必要があるからだ。

「私たちのコールド階層は、ウォーム階層と同じハードウェア上で動作し、同じネットワークに接続されています。それでも画期的な方法によってディスクの使用量を25%削減することで、コストを節約しています。耐久性やアクセス性を犠牲にすることもありません。ユーザーは、2つの層の違いにほとんど気付くことはないはずです」と、Dropboxはこの新機能を紹介するブログ記事に書いている。

同社では、耐久性と信頼性を確保しつつ、新たなストレージのレイヤーを開発して全体的なコストを削減する必要があった。そのプロジェクトは容易ではなかったが、2つの層を持つシステムによって、やがて10〜15%ほどのコストの削減につながるものと期待している。

( function() {
var func = function() {
var iframe_form = document.getElementById(‘wpcom-iframe-form-9b69cc279ae2694fa3a29fdd1fbe3fa5-5cd10824d270f’);
var iframe = document.getElementById(‘wpcom-iframe-9b69cc279ae2694fa3a29fdd1fbe3fa5-5cd10824d270f’);
if ( iframe_form && iframe ) {
iframe_form.submit();
iframe.onload = function() {
iframe.contentWindow.postMessage( {
‘msg_type’: ‘poll_size’,
‘frame_id’: ‘wpcom-iframe-9b69cc279ae2694fa3a29fdd1fbe3fa5-5cd10824d270f’
}, window.location.protocol + ‘//wpcomwidgets.com’ );
}
}

// Autosize iframe
var funcSizeResponse = function( e ) {
var origin = document.createElement( ‘a’ );
origin.href = e.origin;

// Verify message origin
if ( ‘wpcomwidgets.com’ !== origin.host )
return;

// Verify message is in a format we expect
if ( ‘object’ !== typeof e.data || undefined === e.data.msg_type )
return;

switch ( e.data.msg_type ) {
case ‘poll_size:response’:
var iframe = document.getElementById( e.data._request.frame_id );

if ( iframe && ” === iframe.width )
iframe.width = ‘100%’;
if ( iframe && ” === iframe.height )
iframe.height = parseInt( e.data.height );

return;
default:
return;
}
}

if ( ‘function’ === typeof window.addEventListener ) {
window.addEventListener( ‘message’, funcSizeResponse, false );
} else if ( ‘function’ === typeof window.attachEvent ) {
window.attachEvent( ‘onmessage’, funcSizeResponse );
}
}
if (document.readyState === ‘complete’) { func.apply(); /* compat for infinite scroll */ }
else if ( document.addEventListener ) { document.addEventListener( ‘readystatechange’, function(){
if (document.readyState === ‘complete’) {
func.apply();
}
}, false ); }
else if ( document.attachEvent ) { document.attachEvent( ‘onreadystatechange’, func ); }
} )();

画像クレジット:Chris Clor/Getty Images

原文へ

(翻訳:Fumihiko Shibata)

Source: TechCrunch Japan
Dropboxはファイル保存コスト削減のためコールドストレージを採用