のスタッフが関心を持つ 抱えていた問題 巨大で複雑: あらゆる業務ロジックが混在し、相互に依存 変更の影響範囲: ピックパックの変更が、請求や配送に影響するリスク ステータスの爆発: 「未ピック」 「保留」 「品切れ」... 各領域で考慮が必要 巨大なOrder (注文)クラス ALL RIGHTS RESERVED BY 10X, INC. 9
ドキュメントあたりの書き込み頻度制限(1 回/ 秒程度)に抵触 トランザクションスクリプトの弊害 Order のあらゆるフィールドが公開され、スクリプトが自由に書き換え 単体テストが困難 Firestore エミュレータ必須 セットアップが重い Order とFirestore 、業務事情の相性問題 ALL RIGHTS RESERVED BY 10X, INC. 10
での操作(ピック)をトリガーに、Packing へ「パック予定」として計上 結果整合性を受け入れることで、Picking 操作時のレスポンスを高速に維持 注文単位で整合性を保つ必要があるPacking の操作でレスポンスをブロックしない 業務工程が分かれているため、即時の整合性は必須ではない Picking とPacking のモデル設計 ALL RIGHTS RESERVED BY 10X, INC. 23
別のDB トランザクションに分離(レスポンス速度向上) Phase 3: システム的非同期 Eventarc を利用し非同期処理、内部的にはPub/Sub が使われる システム的に分離され、可能な限りのリトライが可能に Order への書き込み競合で失敗しても、ひたすらリトライして最終的に整合させる Order への反映: 3 つのフェーズ ALL RIGHTS RESERVED BY 10X, INC. 25