LINEヤフー Advent Calendar 2023の5日目の記事です。
こんにちは。Yahoo!ショッピングでポイント周りのバックエンドおよびSREを担当している蛭田海斗です。
この記事では、Yahoo!ショッピングにおける複雑なポイント付与を実現しているシステムについて概観し、ビジネス要件と技術要件のトレードオフとうまく付き合いながら、開発を行っていくためのTipsを紹介します。
Yahoo!ショッピングにおけるポイント付与
Yahoo!ショッピングでは、さまざまな条件のキャ ンペーンが開催されており、購入後一定期間経過した後にポイントが付与されます。
たとえば、過去に開催されたものも含めて、次のようなキャンペーンがあります。さまざまな条件があることがこれだけでもわかりますね。(終了したキャンペーンの可能性があります。詳細なキャンペーン条件については各ページをご確認ください。)
キャンペーン | 条件 |
---|---|
5のつく日 | PayPayなどの決済限定、エントリー有り |
ボーナスストア | ボーナスストア限定 |
超PayPay祭 | 事前購入限定 |
ハッピー12アワー | 金額下限あり |
買いだおれ | 期間内に購入したストア数での倍率変動 |
プレ肉 | 期間内に購入した合計金額での倍率変動 |
マーケティング担当者としては、最も効果的なユーザーセグメントに対してキャンペーンを実施したいと考えます。その影響で、ポイント付与の条件は多岐にわたり、非常に複雑です。
各種キャンペーンは汎用性を持たせるために、抽象化されたドメインモデルを用いたシステムが組まれています。これにより前述のようなキャンペーンを実現しています。複雑な要件のため、現状Yahoo!ショ ッピングの中でトップクラスに大きなシステムになっています。つまり、現状のシステムのドメインモデルに沿わないようなキャンペーンの実現には、広範囲でのシステムの改修が必要となり、多大な工数がかかります。
ビジネス要件と技術要件のトレードオフ
Yahoo!ショッピングを魅力的なものにするため、マーケティング担当者からは、日々キャンペーンの要望が出てきます。一方で、現状のシステムのドメインモデルに合わない要望も多く来ており、それらをそのまま実現すると、前述の通り大きな工数がかかります。たとえば「キャンペーンに複数の付与上限値を設定したい」「付与見込額の表示をリアルタイムに更新したい」などです。
これらをまとめると、現実として以下のようなトレードオフが存在すると言えます。
選択肢 | 工数 | 達成される要件 |
---|---|---|
要件をそのまま実装する | 大 | すべて |
現状のシステムに沿った要件に変更する | 小 | 部分的 |
とくにYahoo!ショッピングは競合も多いECサイトのポイント付与の部分であり、ビジネス環境の変動が激しく、工数がかかる要件を実装する余裕のない場面が多いです。そのため、ポイントの担当エンジニアは、このトレードオフを正確に理解し、ビジネス要件と技術要件のバランスを取る提案をマーケティング担当にする役割が求められます。(実際にはマーケティング担当との間に企画担当が入って取り持ってくれていますが、ここでは簡単のため単にマーケティング担当としています)