AI時代の通販基幹エンジン Vegas を支える設計・実装を、図とコードで解説する技術ブログ。時刻バージョニング、リアルタイム在庫引当、販促ルールエンジン、そしてAI連携まで。
価格改定もキャンペーンも「未来の日付」で予約し、当日はシステムを止めずに自動で切り替える。通販基盤 Vegas を支える中核設計。
賞味期限・ロット・安全在庫を考慮した引当を、ロックを使わずに正確に。単一スレッド実行のLuaでどう整合を守るか。
全リクエストを単一の入口に集約し、時刻で解決して実体を呼ぶ。冪等リトライまで含めた"通る道"の設計。
更新は文書指向で堅く、検索は正規化データで速く。2つのモデルを射影でつなぐ設計。
販促を「条件」と「特典」の部品の組み合わせとして表現し、開発を待たずに施策を追加する。
「同じ注文が2件できる」はなぜ起きるのか。可視性タイムアウトとリトライ時間の関係から、防ぎ方までを設計として整理する。
「いつ・誰が・どの項目を・どう変えたか」を差分で残す。監査・復旧、そしてAI操作の追跡までを支える土台。
まだ届いていない在庫に注文を引き当て、入荷が確定したら引当を自動で組み替える。欠品と機会損失を減らす仕組み。
全操作がWebAPIだから、AIは受注から出荷まで実行できる。暴走させないための"試す・承認・記録・戻す"の設計。
機能を小さく分け、完全に疎結合にすると、影響範囲が閉じるだけでなく、AIによる改善提案・試作までしやすくなる。
同期呼び出しにもペイロード上限がある。大きな入力を安全に渡すために、データはインメモリに退避し、鍵だけを手渡す。
受注も定期も、関連する項目を一つのドキュメントにまとめて整合を取る。そして、読むときは扱いやすい形に開く。
検証と派生計算を、コードの海に埋めず「差し替え可能な関数」として登録する。定義駆動の書き込みエンジンの心臓部。
状態は遷移表に沿って変わり、変更は関連エンティティへ自動で波及する。その設計と、循環という落とし穴。
在庫・債権・通知…。ひとつの状態変更に多くの後続が反応する。それをイベントで疎結合につなぐ。
キャッシュ、分散ロック、大容量受け渡し、ルーティング解決、在庫台帳。同じ技術を役割ごとに最適化して使う。
同一エンティティへの同時書き込みを、ロックと待ちキューで安全に順序化する。競合と不整合を根本から防ぐ。
検索クエリを外部ファイル化し、条件で動的に組み立て、結果を一時表に置いてページングする。柔軟で速い検索基盤。
静的な見た目や1回の計測は、しばしば嘘をつく。計測の作法と、実際に効く2つのボトルネック、その定石を共有する。
一括生成した親子リンクの取り違えは、後段の連鎖処理を暴発させる。実際に「注文が突然消える」まで起きうる。防ぎ方を整理する。
「全件を舐めて対象を探す」夜間バッチをやめ、各項目が自分の発火を"予約"する。軽量ティッカーが到来分だけを起こす、スキャンしない設計。