【オーグリードバザー一極集中問題】

Last-modified: 2023-08-27 (日) 21:35:21

概要

Ver.2.4前期以前、【旅人バザー】が大陸別に分かれていた頃、出品がオーグリード大陸のみに集中していたことに関する問題。
 
主な問題点は以下のとおり。

  • オーグリードにない職人ギルドに所属する職人の出品の手間
  • 出品が集中することによる過剰な価格競争
  • バザー、特にグレンへの集中アクセス
  • 【住宅村】の集中と土地が追加される度にオーグリードへ引っ越し、その他の住宅街がゴーストタウン化
    • 土地の転売をRMTで行う不正行為

当然、一極集中されたバザーでは出品数が豊富なので、欲しい物が安く買えるといった利点もあった。
 
この問題に対する「全世界統一バザー」という提案についての運営側の回答は【技術的に難しい】とされていた。

Ver.2.4後期

ところが!
 
サービス開始から3年目にして、その技術的な問題が遂に解決され、全大陸のバザーを統合した「アストルティア旅人バザー」が実現したのである。
 
この統合実現の背景は先述の問題の解消もさることながら、データベースの負荷軽減という課題の解決が筆頭理由だった。
とくに出品数の計算は負荷軽減のため数を1つずつ増加(インクリメント)または減少(デクリメント)させる形をとっているが、この際、出品数を格納している変数を書き込みが終わるまでロックしないと整合性がとれなくなる。
このロックのことを「排他制御」というが、ロックがかかっている間は他の書き込みの要求はすべて待機させられるので、データベースにとって他の処理に比べても負担をかける部類であり、排他制御処理を伴う出品数の計算をどうにかして減らすことが求められていた。
それまでのバザー全体の出品数はオーグリードが85%を占めていて、当然ながら排他制御処理の大半がここで行われていたが、当時はこの残りの15%を統合するのでさえ、何らの対策も無しでは負荷の増大で非常に危険な状態に陥ってしまうような状態だった。
これまでこの問題の解決を「技術的に難しい」としてきた理由は、まさにこれであった。
 
そこで青山TD(当時)ら技術チームが取った手段が「値段の付け直し」機能の実装である。
バザーにおいては、そのものを出品した後、出品したものの値動きを見て、より売れやすくなるように値段をより安く付け直すという行為が頻繁に行われる。
従来は値段を付け直すとなると、一旦出品を取り下げて再出品しなければならなかった。
つまり、デクリメント・インクリメント処理が各1回発生、都合2回の排他制御処理を要していた。
値段の付け直す機能を実装することにより出品数の書き換えが必要なくなるので、排他制御処理を大幅に減らすことができ、安定して統合運用できる目途が立ったのである。
 
青山TDはこの説明が公式に掲載された後、Twitterで「ここまで説明しなくても良かったのかもしれないが、これをきっかけとして(ゲームにかぎらず)プログラミングに興味をもってもらえたら」と振り返っている。