부동산앱 — 더미 실주소 + 데이터 증강 전략 분석
베이스 카탈로그는 도로명주소 전수 DB (월 1회 ETL → PostgreSQL), 증강은 건축물대장·실거래가·공시지가 온디맨드 호출 + Redis 7일 TTL 캐시. 좌표/
b_code 변환은 Kakao Local 폴백.
더미 주소 시드는 PostgreSQL에서 시도·자치구·카테고리 stratified sample.
순수 합성(LLM) 은 데모 외 비추천 — 건축물 메타와 좌표 일관성을 보장 못함.
문제 정의
부동산앱 시드/스테이징/QA 환경에서 (1) 진짜 존재하는 한국 주소 N건 과
(2) 주소별 풍부한 메타데이터(건축물 정보·실거래·공시·좌표·생활편의)가 필요.
이미 메일 리포트(2026-05-18, 대전 4,302건 → 선별 2,000건) 와
backend/src/app/adapters/external/building_registry_adapter.py 기반이 존재 — 본 분석은
이걸 일반화한 전국·다카테고리 파이프라인의 최적 형태를 결정한다.
활용 가능한 데이터 소스
| 이름 | 형태 | 커버리지 | 한도 / 비용 | 라이선스 | 현재 |
|---|---|---|---|---|---|
| 도로명주소 DB 전수 (행안부) | 월간 ZIP (TSV) | 전국 도로명·지번·우편번호 | 무료, 무한 | 공공누리 1유형 | 미사용 |
JUSO API addrLinkApi |
REST JSON | 도로명·지번·admCd |
개발키 일 1만 / 운영 무한 (신청) | 공공누리 1유형 | dev키 E0014 |
| Kakao Local API | REST JSON | 좌표·b_code·주변 카테고리 |
일 30만 무료 | 상업 가능 (출처 표기) | 사용 중 |
| VWorld 지오코딩 | REST JSON | 지번·도로명·PNU | 일 4만 무료 | 공공누리 1유형 | 미사용 |
| 건축물대장 (data.go.kr 15044713) 10종 | REST JSON/XML | 전국 건축물 표제·총괄·층별·전유·공시가·용도지역 | 개발 일 1000 / 운영 무한 (신청) | 공공누리 1유형 | 5종 사용 |
| 국토부 실거래가 RTMS | REST XML | 아파트·연립·단독·오피스텔 매매/전월세 | 운영 무한 (신청 후) | 공공누리 1유형 | 미사용 |
| 공시지가 / 개별주택가격 | REST JSON | 전국 필지 | 운영 무한 (신청 후) | 공공누리 1유형 | 미사용 (대안: getBrHsprcInfo) |
| 네이버 부동산 / 직방 SaaS | 비공식 / 제휴 | 매물·시세 | 제휴 계약 (유료) | 약관 위반 위험 | 법적 risk |
| LLM 합성 (Claude / GPT) | 프롬프트 | 임의 — 실재 불보장 | 토큰비 | — | 데모 외 X |
전략 옵션 매트릭스
점수: 우수 (5) ─ 양호 (4) ─ 보통 (3) ─ 미흡 (2) ─ 부적합 (1)
| 옵션 | 정확도 | 갱신성 | 비용 | 구현 | 라이선스 | 총점 |
|---|---|---|---|---|---|---|
| A. 전수 ETL — 도로명+건축물 DB 전체 다운로드 → 자체 DB | 20 | |||||
| B. 온디맨드 + 캐시 — 실시간 API + Redis TTL | 21 | |||||
| ★ B + A 하이브리드 — 카탈로그 ETL + 증강 온디맨드 | 23 | |||||
| C. LLM 합성 | 14 | |||||
| D. 외부 SaaS (네이버·직방) | 15 | |||||
| E. Workers + KV/D1 정적 dataset (메일 워커 패턴) | 21 |
권장 아키텍처 — B+A 하이브리드
┌─────────────────────────────────────────────────────────────────────┐
│ 배치 (월 1회 / GitHub Actions 또는 dramatiq cron) │
│ │
│ 행안부 도로명주소 ZIP ─► ETL (Python) ─► PostgreSQL.addresses │
│ (PNU·도로명·지번· │
│ admCd·좌표 placeholder)│
└──────────────┬──────────────────────────────────────────────────────┘
│ stratified sample (시도·자치구·매물타입)
▼
seed_dummy_addresses(N) ─► fixtures / e2e / staging DB
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ 온디맨드 증강 (FastAPI BackgroundTasks 또는 dramatiq) │
│ │
│ address ─► Kakao Local (좌표·b_code) │
│ │ │
│ ├──► 건축물대장 10종 (5 사용 + 5 확장 후보) │
│ ├──► RTMS 실거래가 (최근 24 개월) │
│ ├──► 공시지가 / 개별주택가격 │
│ └──► VWorld PNU·지오메트리 (필요 시) │
│ │ │
│ ▼ │
│ Redis 캐시 (TTL: 건축물 7d · 실거래 1d · 좌표 30d) │
│ │ │
│ ▼ │
│ PostgreSQL.address_enrichments (JSONB) │
└─────────────────────────────────────────────────────────────────────┘
실행 로드맵
- P0 (1d) — JUSO/data.go.kr 운영 키 활용신청 (개발키 한도 우회). 일 1만 제한 해제, E0014 근절.
- P1 (2d) —
scripts/etl_addresses.py: 도로명주소 월간 ZIP 다운로드 →addresses테이블 ETL. Alembic 마이그레이션 추가. PK = PNU (19자리). - P2 (2d) —
BuildingRegistryAdapter확장 5종 추가 (getBrBasisOulnInfo·getBrExposInfo·getBrAtchJibunInfo·getBrWclfInfo) + Redis TTL 캐시 데코레이터. - P3 (3d) — RTMS 실거래가 어댑터 (
RTMSPort) + 공시지가 어댑터. 비동기 dramatiq job 으로 일괄 backfill. - P4 (1d) —
scripts/seed_dummy.py: stratified sample (시도·자치구·아파트/빌라/오피스텔/단독).--count·--region옵션. - P5 (1d) — e2e fixture / staging 시드 자동 적용.
--enrich옵션으로 증강 동시 호출.
비용 / 한도 추정 (월 10,000 주소 증강 기준)
| 구성 | 호출 수 | 월 비용 | 비고 |
|---|---|---|---|
| 도로명주소 ZIP | 1 | ₩0 | 전수 약 8GB |
| JUSO API (운영키) | 10K | ₩0 | 활용신청 후 무한 |
| Kakao Local | 10K | ₩0 | 일 30만 한도 내 |
| 건축물대장 (5종 × 10K) | 50K | ₩0 | 운영키 무한 |
| RTMS 실거래 | 10K | ₩0 | 운영키 무한 |
| Redis 캐시 (현재 인스턴스 사용) | — | ₩0 | 증분 RAM ~200MB |
| 인프라 (ETL Job 컴퓨팅) | 월 1h | ~₩200 | GitHub Actions 무료 한도 포함 |
| 합계 | — | ≈ ₩0 | 활용신청만 통과하면 사실상 무료 |
위험 / 완화
| 위험 | 영향 | 완화 |
|---|---|---|
| JUSO 개발키 E0014 (이미 발생) | 주소 변환 실패 시 증강 전체 차단 | Kakao b_code 자동 폴백 (테스트로 검증 완료)
+ 운영키 신청 |
| data.go.kr 운영키 일 1000 한도 (활용신청 전) | 대량 ETL 시 일찍 한도 도달 | 활용신청 우선 + dramatiq 큐로 throttle (10 RPS) |
| 건축물대장 totalCount 시간 따라 변동 | 회귀 테스트 false-negative | 현재 테스트는 ≥ 1 + 메일 기준값 참고 — strict equality 미사용 |
| 주소 → PNU 매핑 누락 (신축·재개발) | 증강 결과 빈 응답 | 월 1회 ETL 갱신 + 누락 시 Kakao Local 실시간 폴백 |
| 개인정보·실거래가 노출 | 법적 risk | 공공누리 1유형이라 상업 사용 가능 — 출처 표기 의무 준수 |
참고 — 공식 / 사내 자산
- 도로명주소 개발자센터 / 전수 다운로드
- data.go.kr 15044713 — 건축물대장 (10종)
- data.go.kr 15057511 — 아파트 매매 실거래가 RTMS
- VWorld 지오코딩/PNU API
- Kakao Local
b_code - 사내 메일 리포트 (대전 4,302건): daejeon-bld-report.wks0968.workers.dev
- 사내 어댑터:
backend/src/app/adapters/external/building_registry_adapter.py - 사내 라이브 테스트:
backend/tests/integration/external/test_building_registry_live.py - 이전 리포트: 건축물대장 API 통합 테스트 결과