Uberはデータセンターが落ちたときのために運転手たちのスマートフォンをバックアップに使っている

2015年9月24日

ソフトウェアによって従来のタクシー業界を一変させようとしているUber。同社はスマートフォンとクラウドで稼働するソフトウェアによって、位置情報を用いた利用者とUberドライバーのマッチングや、キャッシュレスな支払いなど、さまざまなサービスを実現しています。

このサービスの要であるデータセンターが災害などで落ちたときの備えについて、同社はほかのデータセンターにデータをレプリケートするのではなく、Uberと契約しているドライバーが持つスマートフォンをバックアップ先とするアーキテクチャを、先週9月14日にサンノゼで開催されたイベント「@Scale」のセッション「How Uber Uses your Phone as Backup Datacenter」(Uberはいかにしてスマートフォンをデータセンターのバックアップに用いているのか)で紹介しました。

その動画が公開されていますので、前半で説明されているシステムの概要について要点を記しました。動画の後半では詳しい実装について解説されています。

How Uber Uses your Phone as Backup Datacenter

Uberの仕組みについて。

Uberの利用者がスマートフォンから利用要求(Tripの要求)を送信すると、その位置情報とドライバーたちの位置情報がデータセンターでマッチングされ、ドライバーがそれを受諾すると、それが利用者に伝えられる。

ドライバーが利用者の場所へ到着し、利用者が乗車するとTrip(行程)が始まる。

利用者が目的地に着きTripが完了するまで、データセンターとスマートフォンのあいだではTripに関する何回もの通信とトランザクションが発生する。

しかし万が一データセンターが落ちてしまった場合、どうすべきか。

クラッシックな対策法としては、バックアップ用のデータセンターを用意し、つねにデータを複製し続け、障害時にフェイルオーバーするというものがある。

この方法は、高速な複製のためデータセンター間に広帯域のネットワークが必要となるなどの課題がある。

そこで、もしもTripに関するすべてのトランザクションをドライバーのスマートフォンに保存し、フェイルオーバー先のどんなデータセンターにでも展開できたらどうだろうか。 われわれは、このモバイルによる実装を選択した。

fig 右がドライバーのスマートフォン。ここに保存されていたトリップデータを、バックアップデータセンターに展開する。利用者もそのデータにアクセスするため問題なくTripを継続できる

もちろんこの方法にも課題はある。利用者の情報保護などのため、データを暗号化してドライバーのスマートフォンに保存しなければならない。

シンプルな実装のレプリケーションプロトコルで、ネットワークの帯域を最小限にしなければならない。シンプルなプロトコルのため、われわれはキーバリューストアとget、set、deleteを使うことにした。

TripごとにTrip番号を設定し、Trip番号ごとにバージョン管理をしてデータの更新に対応している。

あわせて読みたい

クラウド システム開発 データセンター




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本