Dropboxインフラストラクチャの信頼性を向上

著者について: Tammy Butovは、Dropboxの開発者向けインフラストラクチャのテクニカルディレクターです。 このコードフロー管理は、プログラミングからリリースまで、DropboxでGoを使用する完全なサイクルです。 GopherCon 2017カンファレンスで、Dropbox開発者が大規模なGoサービスを作成およびサポートする方法について話しました。



DropboxがGoを使用するようになった方法



Tammyは、Rob Pikeの2012年の記事「 Go at Google:Software Designの言語設計 」を引用しています。これは、GoがDropboxでうまく機能する理由を一般的に伝えるためです。



「Goは効率的で、スケーラブルで、生産的な言語です。 一部のプログラマは、それを使って作業を楽しんでいます。 他の人はそれを平凡でさえ退屈だと感じます。 この記事では、これらすべての位置が互いに矛盾しない理由を説明します。 Goは、Googleでのソフトウェア開発で発生する問題を解決するように設計されており、研究の観点からブレークスルーではない言語の作成につながりましたが、それでも大規模なソフトウェアプロジェクトを開発するための優れたツールです。 - 2012年、ロブパイク


Dropboxの規模は印象的です。





その結果、Dropboxはシステム、言語、開発者から多くのことを必要とします。 ガイド原則と要件は次のとおりです。





Dropboxのステータスを移動



現在、ほとんどのDropboxインフラストラクチャはGoで記述されています。 特に:





Goで書かれたいくつかの主要なシステム:





それらの多くは、以前の非囲systemsシステムの後継者です。



DropboxはGoの使用をどのように始めましたか?



Tammyは、Dropboxが自然にGoに切り替わった方法に関するいくつかのストーリーを共有しました。



ハッカーウィークのスピードリミッタープロトタイプを使用する

かつて発生したハッカーの週の前に、Dropbox開発者は、必要なサービスごとに速度制限と調整を個別に実装しました。 しかし、このハッカーの週の間、Dropboxのエンジニアの1人は、これらの機能の単一の実装を作成することにしました。 したがって、RAT(Rate Limiting And Throttling)が生まれました。



最初のRATプロトタイプは4日で作成され、5日目に示されました。 RATの作成後数週間以内に、RATに関する情報が会社全体に配布されました。 別のDropboxエンジニアがTammyのチームに書いて、PythonプロジェクトからRATを使用する方法を確認しました。 統合はスムーズに進み、サービスは自然な方法で採用されました。すぐにRATが有用になり始めました。 現在、いくつかのDropboxチームがRATを使用しています。



Dbmanager

Dropboxには6,000を超えるデータベースがあり、そのような大規模システムには自動化と監視が必要です。 任意の時点で、データベースの複製、障害、通常のレプリカからメインレプリカへの転送など。



このプロセスを管理するために、Dropboxのエンジニアは、6,000を超えるすべてのデータベースのステータスをすばやく表示するWeb UIであるDbmanagerを開発しました。 ステータス情報は他のシステムにも送信されます。



DropboxでGoバージョンをアップグレードする

何百人もの開発者と共に、DropboxはGoのメジャーバージョンの更新をきちんと調整します。 タミーは特定の問題について言及していませんでした。これはスムーズなプロセスを示しています。



興味深い事実:





Dropbox Engineers Master Goの仕組み



各Dropboxエンジニアは、次の手順で構成される同じ厳格なGo開発プロセスを実行します。





経験豊富なプログラマーの場合、プロセスには約1週間かかります。



Go at Dropboxの導入でスムーズに進んだことは何ですか? そして何が違う?



全体として、DropboxのGoの使用は非常に成功しました。





ここで、重要な事実の1つは、DropboxがGoサービスを他の言語で書き直そうとしないことです。 これは、人々が一般的に幸せであることを示しています。 (Tammyは興味をそそる詳細を明らかにしました。DropboxはRustを少し使用します。しかし、Goに代わるものではありません)。



Goで複雑なDropboxを見つけましたか?



タミーは、レースの状態で仕事と呼ばれる最大の難しさ。





Dropboxは、データの信頼性と耐久性に関心のあるエンジニアを採用しているため、彼らが理解するのは簡単でした(ただし、同時アクセスは常にどこでも困難です)。



All Articles