피드로 돌아가기
Stop editing 500 products: rule-based discounts in WooCommerce
Dev.toDev.to
Backend

데이터 쓰기 제거와 Rule-based 엔진 도입을 통한 가격 산정 최적화

Stop editing 500 products: rule-based discounts in WooCommerce

TivneT2026년 5월 6일7intermediate

Context

제품별로 세일 가격과 기간을 직접 기록하는 WooCommerce의 기본 모델로 인해 발생하는 운영 오버헤드 분석. 데이터베이스에 가격을 직접 덮어쓰는 방식으로 인해 세일 종료 후 복구 작업이 필수적이며 데이터 불일치 위험이 상존하는 구조적 한계 노출.

Technical Solution

  • Static Price에서 Dynamic Calculation으로의 패러다임 전환을 통한 아키텍처 변경
  • Display Time에 가격을 계산하는 On-the-fly 연산 로직 도입으로 DB Write 부하 제거
  • Filter(Category, Tag, Country), Discount, Window, Priority로 구성된 Rule Object 설계
  • Rule-based 엔진을 통한 자동 Reversion 구현으로 상태 관리 복잡도 제거
  • AND Logic 기반의 필터 조합을 통한 정밀한 타겟팅 및 우선순위 기반의 충돌 해결 메커니즘 적용
  • SKU 리스트가 아닌 속성 기반 필터링을 통해 신규 제품 추가 시 자동 적용되는 확장성 확보

- 상태 변경이 빈번한 데이터의 경우 DB Update 대신 런타임 계산(Computed Value) 방식 검토 - 대량의 엔티티에 동일 정책을 적용할 때 개별 레코드 수정이 아닌 Rule-based 정책 엔진 도입 고려 - 데이터의 원본(Source of Truth)을 보존하고 가공된 뷰만 제공하여 데이터 드리프트(Data Drift) 방지 - 우선순위(Priority) 필드를 설계하여 다중 규칙 적용 시의 결정론적 결과 보장

원문 읽기