ニュース

Dropbox、4年をかけてRust言語で再構築された新しい同期エンジン「Nucleus」をリリース

すべての「Dropbox」ユーザー向けに提供

ローカル・クラウド間でファイルの変更を相互反映させる同期エンジン

 米Dropboxは5月25日(日本時間)、コードネーム「Nucleus」と呼ばれる新しい同期エンジンをすべての「Dropbox」ユーザー向けにリリースしたと発表した。同社はこの4年間、デスクトップクライアントの同期エンジンを白紙の状態から再構築する作業に取り組んできたという。

 ローカル・クラウド間でファイルの変更を相互反映させる同期エンジンは、「Dropbox」デスクトップクライアントでもっとも長く使われているコード部分であると同時に、もっとも重要なコード部分の1つだ。古い「Dropbox」同期エンジンは「Python」で実装されているが、何年にもわたり本番環境で運用されているにもかかわらず大きな問題は見当たらず、非常にまれな不具合も見つかり次第修正されており、非常に安定しているように見える。こうした問題なく動作しているコードに手を加えるのは、一般的に労多くして益は少ない。それでもこの同期エンジン(Sync Engine Classic)の再構築に取り組んだことには、いくつかの理由があるという。

 まず、「Sync Engine Classic」のデータモデルは時代遅れになっていた。設計当時は単にファイルを同期することのみを考えたシンプルな設計になっていたが、同期するファイルの規模が大きくなり、複雑なファイル共有へのニーズが高まると、当初のシンプルな設計では対応が難しい。とくにファイルの一貫性(サーバーとクライアントとの間に矛盾がないこと)を保証する仕組みに欠けていたのは問題で、極めてまれにしか起こらない不具合の追跡に時間を費やさざるを得なかった。また、柔軟性に欠けていたため、効果的な改善を行うのも難しかった。

 また、テストを前提としてシステムが設計されておらず、プレリリース前に自動テストが行えなかった点も問題となった。そのため、時間をかけて段階的にリリースし、ユーザーからの不具合報告で問題を把握し、デバッグするという方法に頼らざるを得ない。「Sync Engine Classic」はスレッドベースのアーキテクチャーになっており、スケジューリングをすべてOSに委ねてしまっていたため、統合テストが再現できないという問題も抱えていたという。

 新しい「Nucleus」同期エンジンでは「Python」言語に代わり「Rust」言語が用いられており、パフォーマンスと保守性が改善されてる。また、コードはほとんどすべて単一スレッド(「制御スレッド」)で実行する仕組みに改められた。スケジューリングはOS任せではなく「Dropbox」で管理されるようになり、問題の特定や不具合の再現が容易になっている。クライアント・サーバープロトコルの再設計により、ファイルの一貫性が確保されるようになったのも大きな改善といえる。

 こうした水面下での改善はエンドユーザーの目に留まりにくいが、これからパフォーマンスの向上を図ったり、新機能を追加する際の基盤となる。今後の「Dropbox」の飛躍に期待したい。