From e2cd2570e315365a3581cf5258c742c220639084 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=ED=97=8C?= Date: Thu, 9 Jul 2026 21:51:21 +0900 Subject: [PATCH] =?UTF-8?q?docs(lps):=20=EC=98=A4=ED=94=88=EB=A7=88?= =?UTF-8?q?=EC=BC=93=20=ED=81=AC=EB=A1=A4=EB=9F=AC=20=EC=9C=A0=EC=A7=80=20?= =?UTF-8?q?=EC=97=AC=EB=B6=80=20=EB=85=BC=EC=9D=98=20=EB=AC=B8=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 팀 논의용 의사결정 메모 — 크롤러가 비용·복잡성 ~80%인데 ROI 미증명. 현황 데이터(비용 87% DECODO·최저가 이긴 적 0·플래키), 핵심 질문(by_mall 소비처), 옵션 4종(A.TTL캐시 / B.게이트 / C.gmarket드롭 / D.현행), curl_cffi 불가 근거. Co-Authored-By: Claude Fable 5 --- lps/docs/decision-openmarket-crawler.md | 63 +++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lps/docs/decision-openmarket-crawler.md diff --git a/lps/docs/decision-openmarket-crawler.md b/lps/docs/decision-openmarket-crawler.md new file mode 100644 index 0000000..ac44328 --- /dev/null +++ b/lps/docs/decision-openmarket-crawler.md @@ -0,0 +1,63 @@ +# 논의: 오픈마켓 크롤러를 계속 안고 갈까? + +> 상태: **논의 필요** · 작성 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 선택 시) 재개 트리거: ______