Yelp は 2004 年に設立されました。その主な目標は、人々が地元の優良企業とつながりを持てるようサポートすることです。Yelp は、さまざまな分野の地元企業に関する詳細なレビューと洞察を共有できるコミュニティとしてよく知られ、6 年間でその事業規模を 1 都市(サンフランシスコ)から、世界 8 か国、約 50 都市にまで広げてきました。2010 年 11 月時点で、Yelp サイトへの訪問者は 3,900 万人を超え、合計で 1,400 万件を超えるレビューがユーザーによって投稿されています。

Yelp は、やらせや疑わしいコンテンツからユーザーを守ることに真摯に向き合うため、ロイヤルカスタマーをフォローするシステムを設立しました。Yelp は、自動レビューフィルタを使用して疑わしいコンテンツを特定し、それが消費者に公開される可能性を最小限に抑えます。また、サイトには、新しいビジネス(リスト、優待販売、イベントなど)を発掘したり、お互いにコミュニケーションを取り合ったりするための機能も幅広く用意されています。さらに、企業のオーナーやマネージャーは、優遇販売の投稿、写真のアップロード、顧客へのメッセージ送信を行うための無料アカウントを設定できます。

同社はモバイルアプリの開発にも力を入れており、つい最近 iTunes アプリの殿堂に選ばれました。Yelp のアプリは、Android、Blackberry、Windows 7、Palm Pre、および WAP でも利用できます。

地元の検索広告は、Yelp の収入源の大半を占めています。検索広告は明るいオレンジ色で、「Sponsored Results」というラベルで分かりやすく表示されます。広告主にお金を払って、レビューを変更したり順位を変更したりすることはできません。

Yelp は元々は巨大な RAID を使用して、ログや、Hadoop のシングルローカルインスタンスを格納していました。Amazon Elastic MapReduce への移行時に、RAID を Amazon Simple Storage Service(Amazon S3)に置き換えて、すべての Hadoop ジョブを直ちに Amazon Elastic MapReduce に移しました。

「Hadoop クラスターのハードディスクドライブのスペースと容量は不足していました。」Yelp の検索およびデータマイニングエンジニア Dave Marin 氏は言います。

Yelp は Amazon S3 を使用してログと写真を毎日格納しており、1 日におよそ 100 GB のログが生成されます。また、Amazon EMR を使って、約 20 個のバッチスクリプトを個別に実行します。このスクリプトのほとんどが、生成されたログを処理します。Amazon Elastic MapReduce の機能を次に示します。

  • これを見た人が見た他のもの
  • レビューのハイライト
  • 検索テキストの自動入力
  • 検索テキストの修正候補
  • 検索語のトップ
  • 広告

これらのジョブは Python のみに書き込まれます。一方、Yelp は、独自のオープンソースライブラリ mrjob を使用して、Hadoop ストリーミングジョブを Amazon EMR で実行します。Python では、boto を使用して Amazon S3 と通信します。また、Yelp は、モニタリングのために s3cmd と Ruby Elastic MapReduce ユーティリティも使用します。

Yelp 開発者は、AWS で作業する場合は、Amazon Elastic MapReduce ジョブフローを最大限に利用できるように、boto API と mrjob の両方を使用するよう勧めています。Yelp は 1 日に約 200 件の Amazon Elastic MapReduce ジョブを実行し、3 TB のデータを処理します。また、Hadoop アプリケーション開発に力を貸してくれた AWS サポートに感謝しています。

Amazon Elastic MapReduce を使用することで、Yelp ではハードウェアに対する先行投資を 55,000 USD 節約できただけでなく、数か月ではなく、わずか数日のうちに立ち上げて、稼働させることができました。ただし、Yelp にとって最も重要なのは機会費用です。「AWS によって、当社の開発者は、今までできなかったことをできるようになりました。」Marin 氏は言います。「これで我が社のシステムチームは他の課題に集中できます。」

AWS がデータのニーズにどのように役立つかについては、ビッグデータ詳細ページ http://aws.amazon.com/big-data/ をご覧ください。