ネットサービス

Dropboxが同期エンジンを全面的に改良、新エンジンはどこが改善されているのか?


クラウドストレージサービス「Dropbox」が、ローカルストレージとクラウドストレージを同期するためのエンジンを全面的に改良しました。改良に際しては「テストのしやすさ」に焦点が当てられており、新エンジンの概要をDropboxのソフトウェアエンジニアであるアイザック・ゴールドバーグ氏が解説しています。

Testing sync at Dropbox - Dropbox
https://dropbox.tech/infrastructure/-testing-our-new-sync-engine


以前の同期エンジンでは、すべての情報をローカルのメタデータに記載し、メタデータの情報を元にローカルとクラウドとの情報を同期していました。


新しい同期エンジン「Nucleus」では、ローカルの情報を表す「ローカルツリー」と、クラウド上の情報を表す「リモートツリー」、さらに「最後にローカルとクラウドの同期が完全にとれた状態」の情報である「同期ツリー」の3つのツリーを生成し、同期ツリーに対してローカルツリー、リモートツリーをそれぞれ比較することで、ローカルとクラウドのどちらでフォルダやファイルに変更が加えられたかが簡単に判断できるようになっていると説明されています。


以前の同期エンジンでは、同期の融通が「きき過ぎる」ため、テストが困難だったとのこと。例えば、「baz」フォルダ内にある「cat」ファイルをクラウドから同期する際、「baz」フォルダの情報よりも「cat」ファイルの情報を先に同期してしまうケースがあり、ローカルのデータベースは「cat」ファイルのような「孤立した」状態を表現する必要があったとのこと。こうした複雑さは、実際にファイル同期に問題が生じているか、それとも単純に孤立しているだけなのかという切り分けを難しいものにしていました。


新しい同期エンジン「Nucleus」では、こうした状態におちいった場合は常にプロトコルレベルでエラーを報告することで、同期エンジンよりも上層のアプリケーションで「孤立した」状態を考慮する必要が無くなったとのこと。また、従来の同期エンジンは複数のスレッドでタスクを処理しており、OSのメモリ管理やCPUの利用状況に動作が左右されがちでしたが、Nucleusはひとつのスレッドで動作し、OSの影響を少なくすることで、テストの再現性を高めているそうです。

Dropboxは何億ものデバイスで動作しており、それぞれの環境は異なります。そうした環境を再現するために必要なのが、ソフトウェアにランダムな値を入力する「ランダムテスト」であるとのこと。ランダムテストは再現性を確保するのが難しく、従来の同期エンジンもその例に当てはまっていました。Nucleusではランダムテストに失敗した場合は、エラーを引き起こした値を出力することで、エラーを簡単に再現できるようになっているそうです。


ランダムテストの実行では、ローカルツリー、リモートツリー、同期ツリーのそれぞれで完全にランダムな値を入力してしまうのは非効率とのこと。DropboxはNucleusの同期をテストするためのツール「CanopyCheck」を独自に開発し、3つのツリーが異なる状態から同じ状態へ収束していく過程を効率的にテストできるようにしたとゴールドバーグ氏は語っています。

また、共有フォルダを複数人で利用する場合は、複数人が同じファイルを同時に変更するケースが考えられます。誰かが編集していたファイルを誰かが削除してしまい、編集していたデータが失われることは避けなければならないとゴールドバーグ氏。そうした事態に対するテストを行うために、CanopyCheckと同じく独自ツールの「Trinity」でNucleusの情報を監視し、安全な同期を実現しているとのこと。


ゴールドバーグ氏は「Nucleusのプロジェクトの初期段階からテストの容易性に焦点を当てることで、同期エンジンを無事に書き換えることができました。そして今、Dropboxの同期を支える心臓部はこれまで以上に強固なものになっています」とコメントしています。

この記事のタイトルとURLをコピーする

・関連記事
最大100GBのファイルを転送できる「Dropbox Transfer」が正式に実装スタート - GIGAZINE

会ったこともなかった2人が何千億円も稼ぐ「Dropbox」を生み出す - GIGAZINE

Dropboxのスタートアップに貢献したYC設立者が語る創業秘話とは? - GIGAZINE

プログラミング言語Pythonの生みの親がDropboxを退社、Dropboxが語る一流プログラマーの姿とは? - GIGAZINE

Dropboxはストレージサービスで世界企業とどのように立ち向かっているか - GIGAZINE

in ソフトウェア,   ネットサービス, Posted by darkhorse_log

You can read the machine translated English article here.