o2o-negosium-original/lps/docs/decision-openmarket-crawler.md
민헌 e2cd2570e3 docs(lps): 오픈마켓 크롤러 유지 여부 논의 문서
팀 논의용 의사결정 메모 — 크롤러가 비용·복잡성 ~80%인데 ROI 미증명.
현황 데이터(비용 87% DECODO·최저가 이긴 적 0·플래키), 핵심 질문(by_mall 소비처),
옵션 4종(A.TTL캐시 / B.게이트 / C.gmarket드롭 / D.현행), curl_cffi 불가 근거.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 21:51:21 +09:00

64 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 논의: 오픈마켓 크롤러를 계속 안고 갈까?
> 상태: **논의 필요** · 작성 2026-07-09 · 대상: 개발팀
> 한 줄: G마켓·옥션·11번가 **크롤러가 비용·복잡성의 ~80%인데, 실제 값어치(ROI)가 미증명**이라 유지 여부를 정해야 함.
---
## 1. 배경
LPS는 상품별 최저가를 찾는다. 소스는 2계층:
- **핵심**: 네이버 쇼핑 API(무료·빠름·안정) + 쿠팡(브라우저 크롤)
- **폴백**: 네이버가 못 덮은 몰만 **G마켓·옥션·11번가 크롤** → 몰별 가격
폴백 크롤러는 안티봇(쿠팡 Akamai, **G마켓/옥션 Cloudflare Turnstile**)을 뚫어야 해서 실제 브라우저 + residential 프록시(DECODO)가 필요하다.
## 2. 현재 데이터 (실측 2026-07)
| 항목 | 값 |
|------|-----|
| 검색 1건 비용 | **~$0.013** (1,000건 ~$13) |
| 그 중 DECODO(프록시 대역폭) | **~87%** ← 대부분 오픈마켓 크롤 |
| 크롤 몰이 **최종 최저가를 이긴 횟수** | **0** (네이버/쿠팡이 이김) |
| 상품당 지연 | ~35초 (크롤 때문) |
| gmarket 커버리지 | **IP 평판 의존, 플래키** (Turnstile) |
> 즉 **가장 비싸고·느리고·불안정한 부분이 최종 답을 바꾼 적이 없다.**
## 3. 크롤러가 주는 가치 (2가지)
1. **더 싼 가격 발견** — 데이터상 거의 없음(네이버/쿠팡이 최저가)
2. **몰별 검증·분석** — 네이버 보고가 vs 실제 크롤가 일치 확인, 몰별 투명성
→ **진짜 가치는 여기.** 단, **이 데이터를 실제로 소비하는 화면/의사결정이 있어야 의미**가 있음.
## 4. 핵심 질문 (팀 논의)
- ❓ **by_mall(몰별 가격) 데이터를 지금 또는 로드맵에서 실제로 쓰는 화면/기능이 있는가?**
- 있다 → 유지 가치 있음 (아래 A)
- 없다 / 막연히 쌓는 중 → 투기적. 소비자 생길 때 켜도 됨 (아래 B)
- ❓ 몰별 검증이 필요하다면 **얼마나 신선해야 하나?** (실시간? 1시간? 하루?)
- ❓ 비용 $13/1,000건 × 예상 검색량 = 월 얼마인가? 감당 범위인가?
## 5. 옵션
| 옵션 | 내용 | 비용/복잡성 | 언제 |
|------|------|------------|------|
| **A. 유지 + TTL 캐시** | 같은 상품 몰별 가격을 창(예 1h)당 1회만 크롤·재사용 | 비용 **대폭↓**(재크롤 회피율만큼), 구현 소(小) | by_mall 소비자가 있고, 분석 가치를 저렴히 유지하고 싶을 때 ← **추천** |
| **B. 게이트/OFF** | 크롤 기본 끔. 네이버 몰별분해(추가요청 0)만 사용. 필요 시 플래그로 켬 | 비용 **~87%↓**, 복잡성↓ | 아직 소비자가 없을 때 |
| **C. gmarket만 드롭** | 가장 플래키·비싼 gmarket 제거, 옥션·11번가 유지 | 부분 절감 | gmarket 부담만 클 때 |
| **D. 현행 유지** | 매 검색 전 몰 크롤 | 비용·불안정 그대로 | 분석 가치가 풀 비용을 정당화할 때 |
> **왜 curl_cffi(브라우저 없이 쿠키 재사용)로 싸게 못 하나?** 스파이크 결과 쿠팡(Akamai)은 되지만 **G마켓/옥션(Cloudflare)은 cf_clearance가 브라우저 지문에 고정돼 실패**. 즉 비싼 소스는 "크롤을 싸게"가 불가 → 남은 레버는 **"크롤을 덜 하기"(TTL 캐시)**.
## 6. 참고: 안 바뀌는 것 (크롤러와 무관하게 견고)
큐(PG 원자적 claim·lease·dead-letter), 어댑터 패턴, AI 같은상품 매칭, 비용 계측(CDP 실측), 다중 병렬, **네이버+쿠팡 핵심 경로**(싸고 빠르고 안정) — 여기는 유지. 이번 결정은 **오픈마켓 크롤러 서브시스템에 한정**된다.
---
## 결론 초안 (논의 후 확정)
- [ ] by_mall 데이터 소비처: __________
- [ ] 결정: A / B / C / D → __________
- [ ] (A 선택 시) TTL 값: ______ / (B 선택 시) 재개 트리거: ______