完璧なシステムを目指すのではなく、技術的に工夫し、仕組みを改善することが大事
eコマース革命後、最大の試練となったのが「いい買物の日」だ。中国の大手ECサイトが実施している「独身の日」を参考に、開催日の11月11日を1年で一番買い物が行われる日にしようという販促イベントである。そしてそれは、サーバーの負荷がこれまで経験したことがないレベルにまで達することを意味していた。売上目標をベースにシステムが耐えられる負荷を見積もったが、いつ負荷がピークを迎えるか、どこがボトルネックとなり得るかまったく予想できなかった。
サーバーを増やし、24時間態勢でシフトを組んで迎えた2015年11月11日。売り上げは朝から順調に伸び、予想を大きく上回る形で推移していった。残り数時間になると、ユーザーによる駆け込み注文が大量に発生し、ピークが到来。その負荷に耐えられず決済システムであるYahoo!ウォレットがダウン。その後は売り上げの伸びが足踏みしたが、最終的には目標を大きく上回ってYahoo!ショッピング史上最大の売り上げを達成した。しかし、エンジニアとしてはトラブルが発生したことで非常に悔いの残る結果となったのである。
二度と同じ過ちを繰り返さないため「独身の日」を何度も経験している中国のアリババに、負荷が一時的に集中しないよう平準化する方法について助言を求めた。しかし、返ってきた答えは「平準化する必要はない」だった。「システムの都合よりもユーザーの買い物体験を充実することを最優先すべき」との言葉に目の覚める思いで、2回目に向けて「トラブルが起きてもユーザーへの影響を最小限に抑える」というコンセプトを決定した。事前にどんな対策を行ってもトラブルは起こり得る。ならば、トラブルの発生時にそれが波及して多数のユーザーに悪影響を及ぼさないようにするということだ。
コンセプトに従い、まずはカード後決済というを仕組みを作成。決済システムにトラブルが発生したときは通常の注文フローを変更し、注文完了画面を先に表示して決済を後から実行するように改善した。さらにサーキットブレーカーを導入。フロントページから商品プラットフォームへのリクエストが増大したときに、優先順位の低いフロントページからのリクエストを遮断して負荷を軽減し、商品プラットフォームを守る仕組みである。
そして2016年11月11日、2回目の「いい買物の日」がやってきた。売り上げは前年を少し上回りながら推移し、前年トラブルを起こした時間帯をやり過ごした後、残り数時間のタイミングでピークが到来した。売り上げはさらに伸び、決済システムが限界に近づいた時にカード後決済を発動。最大のピークを乗り切って、注文を取りこぼすことなく、目指していた形で売り上げを達成できたのである。Yahoo!ショッピングが2回の「いい買物の日」から学んだのは、絶対に落ちない完璧なシステムを作ることは難しいということ。そして、仕組みを工夫すればユーザーの買い物体験を良くすることができるということ。課題はたくさんある。その解決に頭を使うのがエンジニアの腕の見せどころだ。
「eコマース革命は、Yahoo!ショッピングのシステムにとっても革命だった」と、吉野氏は振り返る。やみくもにシステムに投資するのではなく、技術的に工夫し、仕組みを改善して技術的に課題を解決することで、エンジニアが活躍する場が得られる。吉野氏は「Yahoo!ショッピングもまだ発展途上だ。検索精度の向上、在庫なしによるキャンセル問題、マルチビッグデータの活用、PaaS化への挑戦など、これからもさまざまな課題に挑戦していく」と述べ、セッションを終了した。
お問い合わせ
ヤフー株式会社