ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog

テクノロジー

オークションシステムの簡単紹介

こんにちは、オークション事業部開発部のLiuです。

今回は「ヤフオク」のサービスを支えているオークションシステムについて、 以下3つのテーマに分けて簡単に紹介します。

  • システム構成
  • データの同期処理
  • データ構造

1. システム構成

以前の記事Yahoo!オークションからのご挨拶にも書かれてあるように、ヤフオクは Yahoo! JAPANの中でも最大級のサービスです。これだけ大きな規模のシステム を支えているのが、およそ数千台のFreeBSDサーバーになります。この数千台のサーバーは、 基本的に機能毎に分かれていて、独立性をたもちながら互いに連携し合い、結果的に 一つの大きなオークションシステムを構成しています。

ヤフオクは、お客様向けに有料サービスを提供するので、障害発生からの復旧や アクセスの増加に備えて、可用性と拡張性を十分に考慮しています。

このサーバーの単位を以後機能サーバーと呼びます。 いくつか機能サーバーの例をあげますと

  • マスタ
  • 商品リスト
  • 検索
  • 画像
  • マイ・オークション

などがあります(もちろん全てではありません)。 中でも一番重要なのは「マスタ」です。このサーバーは出品、入札など主要な 処理を行います。

オークションは競りの性質上、現在価格や入札数などがリアルタイムに変動しています。 ですので、いかにタイムラグを最小限に抑えるかを、システム構成面で非常に苦労しています。 ちなみに、この機能要件を満たすために、オークションシステムでは画像など一部の静的な コンテンツを表示する以外、キャッシュサーバーの仕組みは使っていません。

では、どうやってデータの同期処理を行っているのか、疑問を持っている方もいるかと 思いますので、次に簡単に紹介したいと思います。

2. データの同期処理

ヤフー独自の技術には、非常に効率のよいサーバー間のデータ通信プロトコルがあります。 この技術を使い、1:N, N:1, N:N のサーバー間データ通信を容易に行うことができます。 更新トランザクションが発生した時に、イベント毎にデータを生成しネットワークに流す のですが、そのデータの伝播経路上、データに対し特定なフィルタリング条件をかけ、 必要なデータだけを下流のサーバーにフィードすることも可能です。これにより、 ネットワーク上無駄なトラフィックを発生せず、また受け側サーバーで無駄なデータ処理 をしなくて済むため、高速なデータ同期処理が可能になります。

オークションシステムはこの技術をよく使用しています。トランザクション発生元の マスタから、データ中継サーバーを経由し、末端の機能サーバー(検索など)までに データの同期処理を実現しています。ちょうど、ウォーターフォールに近いイメージ になるでしょうか。

しかし、データ伝播の経路が長すぎたり、フィルタリング条件を設定せずに必要としない データまで流してしまったりすると、データ反映の遅延問題が発生しやすくなります。 そうならないように、システム設計の段階でよくシステム構成を検討しなければなら なりませんし、リリース後の日々のシステム監視やチューニングも当然欠かせずに行って います。

3. データ構造

オークションシステムの中で実にいろんなデータ構造があります。よく使うものには

  • ハッシュファイル
  • オンメモリデータ
  • RDBM(MySQL, Oracleなど)

などの種類があります。 ハッシュファイルは構造がシンプルで、データが拡張・メンテナンスしやすいなどのメリット があり、オークションのマスタでも使っています。しかし出品数が膨大なので、ハッシュファイル の数も膨大になります。当然分散処理をしなければなりません。

また、ハッシュファイルは書き込みには問題がなくても、リストや検索結果表示など、頻度 の高い読み込み処理では、ディスクI/Oがネックになりやすいので、この場合にはオンメモリ のデータ構造を使っています。オンメモリデータは非常に高速にアクセスすることができ ますが、マッピングできるサイズに限界があるために大きなデータを分割して分散処理を しています。

RDBMについては、特にB2CのサブシステムやDM(データマイニング)など、大量データ の履歴管理や集計分析が必要なシステムでよく使っています。

まとめ

今回はオークションシステムについて、3つのテーマに絞って簡単に紹介させていただきました。 説明が足りなくてよく分からないところもあるかと思いますが、今後は機会があればもうちょっと 詳細に紹介できればと思います。

今後とも、Yahoo!オークションをよろしくお願いします。

こちらの記事のご感想を聞かせください。

  • 学びがある
  • わかりやすい
  • 新しい視点

ご感想ありがとうございました

このページの先頭へ