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番号ごとにバージョン管理をしてデータの更新に対応している。

このエントリーをはてなブックマークに追加
follow us in feedly

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



≫次の記事
マイクロソフト、Linuxベースのデータセンター向けスイッチ用OS「Azure Cloud Switch」開発をブログで紹介。ASICのプログラミング用API搭載
≪前の記事
20億行のコードを保存し、毎日4万5000回のコミットを発行しているGoogleが、単一のリポジトリで全社のソースコードを管理している理由

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


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



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus