
백엔드
NRTI (Near Real-Time Indexing)
두줄요약
Elasticsearch 색인 구조를 Kafka와 Debezium 기반 이벤트 처리로 전환한 사례를 소개했습니다. ECK를 함께 적용해 색인 속도와 운영 안정성을 함께 높였습니다.
문제 상황
- Elasticsearch 기반 검색서비스에서 DB 데이터를 색인하고 안전하게 서빙하는 과정의 개선 필요
- 기존 전체색인과 증분색인 방식의 지연, 누락, 단일 인스턴스 불안정, DB 부하, 운영 이슈 누적
원인 분석
- 전체색인과 증분색인의 분리 처리로 인한 데이터 누락과 늦은 반영
- 단일 애플리케이션·단일 인스턴스 구조로 인한 확장성과 안전성 한계
- 조인 많은 주기적 쿼리, DynamoDB 비용, SQS 잔존 메시지, Elasticsearch 운영 복잡도
해결 방법
- Kafka와 Debezium CDC로 상품 변경 이벤트를 Topic으로 발행하고 Consumer로 색인 처리
- Partition과 Consumer Group을 1:1로 맞춰 정합성과 처리 효율 확보
- ECK로 Elasticsearch 운영, 모니터링, Snapshot 백업·복구 강화
성능/운영 포인트
- 전체색인 처리시간과 증분색인 지연을 크게 단축
- 활성/비활성/삭제 포함 전체 상품 색인으로 데이터 범위 확대
- 장애 시 Snapshot 기반 빠른 복구와 안정적 운영 구조 확보
적용해볼 점
- 이벤트 기반 색인 구조로 전환해 검색 반영 지연을 줄이는 접근
- Kafka Consumer Group 설계를 통해 파티션과 처리량 균형 점검
- 검색엔진 운영에는 백업·모니터링·버전 관리까지 함께 고려