BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース スケーリング Dropbox

スケーリング Dropbox

賢いシステムアーキテクチャを最初から用意するのは難しい。 成功的なスケーリングとは通計、自己洞察、効果的なビルド、提供プロセス、そして究極な変化に快適に対応出来ることにおいてもっと賢くなることを意味する。Rajiv Eranki氏は2013年、ブダペストで開かれたRAMPコンファレンスでDropboxスケーリング成功の鍵について発表した。

振り返れば、彼は2012年書いた自分のブログポストで、最高サーバ責任者として2000ユーザから4千万ユーザに至るまでのDropboxスケーリング経験について語ったことがある。大 学院を卒業したばかりのEranki氏がDropboxに誘われた当時のDropboxは1個の(物理)MySQLデータベースと1個のフロントエンドで 構成されていた。Eranki氏の話によると、小さいスタートはそれなりのメリットを持っている。そのようなシンプルなアーキテクチャはすべてのユーザを 跨るクエリーを簡単に実行するとか、簡単にバックアップを実施するとか、デバックしやすさと”驚くべき柔軟性と敏捷性”を製品開発初期の段階で提供するこ とを可能にする。

単純さを維持することこそスケーリング成功の鍵であるというのがEranki氏からの教えだ。賢いアイデアとテクニックは魅力的に見えるかもしれな いが、Dropboxからの教えは、適切ときハードウェアをもっと購入するのと、必要なときデータベースシャーディングをすることこそ楽にスケーリングで きる最善の方法であるということだ。 ”私達は賢いアーキテクチャを試すたびに失敗しました。” Eranki氏は独り言を言った。ハッシュ テーブルたちを管理する為、Bloom Filtersのような賢いデータ構造を使いたい希望はシンプルなデータベースシャーディングに反するものなので決して上手く行かない。MySQLデータ ベースに賢い分散シャーディングスキマーを使うのは実用的なマスタースレーブアーキテクチャより複雑だ。トランザクション調整は勝つ為のもう一つの関門で ある。2フェーズコミットは不安定性とパフォーマンスという宿題を彼に与えた。この問題に対して彼はトランザクションエラーをトランザクションが失敗するようコミット順番を調整することと、追加トランザクションと通して後で回復出来るよう設計する方法を選択した。

"追跡出来る状態を維持する”はEranki氏の話の中でう一つの重要なテーマである。Dropboxは自分達のコードどこでも使えるよう、彼ら独 自のアプロケーション別の通計と使いやすいロギングAPIを作成した。彼らは通計収集を自動化した後、システム状態のモニタリングを手伝うダッシュボード を構築した。”ほとんどのグラフはお役に立ちません。” Eranki氏はこう語る。それよりは特定アプリケーションレベルの要求事項を中心にダッシュ ボードを構築するのがより役に立つ。測定値に対するアラートは継続的に”監視”されない。でも、あなたは事前に設定したリミットを何時超えるかは知りたい はずだ。
”最も大きいユーザの動きに注目します。” Eranki氏の話によると、最も共有されるフォルダ、最大回線使用量、最多要求”と一緒にユーザをモニタリングするのはユーザの行動に対して興味深い洞察を提供するし、時には異常行為や単純バグも見つけてくれる。

ロギングはモニタリングのもう一つの断面である。Dropboxの新機能は"超詳細テシクとログ出力"の状態で開始されるが、その大半は後からログポイントを整理する時、後悔することになる、とEranki氏は語る。”もっと多くの痕跡を残すのが正しい。” Eranki氏はそのログを後で参照する為に(例えば、再現が難しい競争状態をデバッグするなど)保管することをおすすめする。

 混沌に対処す るNetflixの教訓を強化し、Eranki氏は"マーフィーの法則を緩和する”Dropboxの作り方について説明した。彼らは意図的に本番環境で障 害を起こす。なぜなら、テストシステムでは障害の再現が難しいからだ。 ”あなたのご存知の通り、システムは必ず障害を起こすでしょう。どう せ、障害が起きるとするなら、朝5時よりはあなたが勤務中の午後2時に起こしたほうが都合がいいでしょう。” Eranki氏のもう一つの重要な教えは、 大きい変化にも楽に対応することです。 もしあなたが、スキーマの変更や、大きい変更に対応するためのマスターDBのクローン切り替えなどの作業をマス ターし、ルーチン化までも可能であれば、システムを変更したり、障害から復旧する作業において高水準の柔軟性を提供することができるでしょう。

Eranki氏は人的資源のスケーリングについて語ることでプレゼンテーションを終えた。彼は、以前の彼らより早く始めることを望む心から、全体シ ステム全体を理解している人がいかにも貴重な存在であるかを指摘した。問題は、新人が軌道に乗るまで数ヶ月がかかるという事実だ。しかし、経験豊富な人 は、技術的な修正のコストを削減し、"小刀細工的"な対応によって生じた技術的負債の蓄積を防げる。

この記事に星をつける

おすすめ度
スタイル

BT