후후 상호검색: 114 데이터 동기화 및 정합성 검증 파이프라인 구축
🏢 Project under 주식회사 후후앤컴퍼니: 후후 상호검색서비스 개발/운영
114 원천 데이터의 오류를 사전에 차단하고, 무중단 인덱싱을 보장하는 Spring Batch 기반의 대용량 동기화 파이프라인 구축
By 유민호
💡 [후후 상호검색: 114 데이터 동기화 및 정합성 검증 파이프라인 구축]
[한 줄 요약] 114 원천 데이터의 오류를 사전에 걸러내고, 무중단 인덱싱을 보장하는 Spring Batch 기반의 대용량 동기화 파이프라인을 구축한 프로젝트입니다.
📌 배경 및 문제 상황 (Problem)
- 외부 데이터 종속성 및 오염 리스크: 모회사(114)로부터 매일 유입되는 수천만 건의 상호(POI) 데이터가 별도의 검증 로직 없이 검색 엔진으로 직결되어, 원천 데이터의 스키마 변경이나 결측치(좌표 누락, 오타 등) 발생 시 검색 품질 하락 및 시스템 에러가 곧바로 전파되는 강결합(Tightly Coupled) 문제가 존재.
- 대용량 배치 처리의 메모리 병목 및 가용성 한계: 기존의 파편화된 동기화 스크립트는 대량의 데이터를 한 번에 메모리에 적재하여 처리함으로써 OOM(Out of Memory)을 유발했으며, 단 한 건의 데이터 오류로 전체 인덱싱 배치가 실패(SPOF)하는 구조적 취약점이 있었음.
- 대용량 배치 처리의 메모리 병목 및 가용성 한계: 기존의 파편화된 동기화 스크립트는 대량의 데이터를 한 번에 메모리에 적재하여 처리함으로써 OOM(Out of Memory)을 유발했으며, 단 한 건의 데이터 오류로 전체 인덱싱 배치가 실패(SPOF)하는 구조적 취약점이 있었음.
🛠️ 해결 과정 및 역할 (Action)
1. [Spring Batch 기반 대용량 파이프라인 추상화 및 정합성 검증 내재화]
- Chunk-Oriented Processing 아키텍처 도입: 수천만 건의 데이터를 안정적으로 처리하기 위해 Spring Batch를 도입하여 읽기(Reader), 처리(Processor), 쓰기(Writer) 단계를 분리. 일정한 Chunk 사이즈 단위로 트랜잭션을 분할하여 메모리 병목을 해소.
- 데이터 정합성 검증(Validation) 횡단 관심사 분리: 데이터 파이프라인 내에 정합성 검증 레이어를 표준 인터페이스로 구축. 좌표계 변환 오류, 필수 메타데이터 누락, 불법 키워드 필터링 등의 비즈니스 룰을 하드코딩하지 않고, 설정(Configuration) 기반의 검증 어드바이저(Advisor)를 통해 처리하도록 결합도를 완화.
2. [오류 격리(Isolation) 및 무중단 인덱싱 거버넌스 수립]
- DLQ(Dead Letter Queue) 기반의 글로벌 예외 처리: 배치 수행 중 정합성 검증에 실패하거나 파싱 오류가 발생한 비정상 데이터는 전체 배치를 롤백시키는 대신, DLQ 테이블로 격리(Isolation) 후 모니터링 알림을 발송하는 Fail-safe 파이프라인을 구축.
- Alias 기반 무중단 인덱스 스위칭(Zero-Downtime): 대규모 114 데이터 적재 시 운영 중인 검색 서비스에 락(Lock) 경합이 발생하지 않도록, 신규 인덱스에 데이터를 전량 적재한 뒤 논리적 포인터(Alias)만 스위칭하는 Blue-Green 배포 전략을 인프라 레벨에 적용.
📈 업무 성과 (Result)
- 데이터 정합성 및 검색 품질 확보: 114 원천 데이터의 오류가 검색 엔진으로 인입되기 전에 걸러내어, 사용자에게 오염된 POI가 노출되는 리스크를 줄임.
- 배치 가용성 확보 및 운영 부담 절감: Chunk 기반 메모리 최적화와 DLQ 기반 예외 격리를 통해, 기존에 빈번하던 대용량 배치 프로세스 중단을 줄이고 운영자의 수동 개입을 최소화.
- 유연한 파이프라인 아키텍처 확보: 데이터 추출-검증-적재 과정의 결합도를 분리함으로써, 이후 114 데이터 외의 서드파티 제휴 데이터도 통합할 수 있는 플랫폼 기반을 마련.