FastAPI + Playwright 기반 다나와 최저가 크롤링 서비스
source ./venv/bin/activate
#$ 가상환경 활성화pip install -r ./requirements.txt
# package 설치cp .env.example .env
# .env example을 확인하세요pnpm start 서버: http://0.0.0.0:8000
pnpm testsrc/
├── app.py # FastAPI 앱 팩토리
├── api/ # API 라우터
├── core/ # 핵심 설정 (config, database, exceptions)
├── services/ # 비즈니스 로직 (cache, price_search)
├── repositories/ # 데이터 액세스 레이어
├── crawlers/ # 다나와 크롤러 (2단계: 검색 → 상품 페이지)
├── schemas/ # Pydantic 모델
└── utils/ # 유틸리티 함수
main.py # 진입점 (12줄)
- Cache-First 전략: Redis 6시간 TTL
- 2단계 크롤링: 다나와 검색 → 상품 상세 페이지
- 검색 로그: PostgreSQL 저장 + 통계 API
{
"product_name": "아이폰 15",
"current_price": 150000
}Redis + PostgreSQL 상태 체크
- FastAPI 0.109.0
- Playwright 1.41.0 (Headless Chromium)
- Redis (Upstash) + PostgreSQL (Neon)
- pytest + mypy
- 커버리지: 65% (API 90%+, Utils 90%+)
- 타입 안전: 전체 코드 타입 힌트
- 테스트: 35개 (Unit + Integration)
- 아키텍처: App Factory Pattern, SRP 준수