컬리, Kafka Streams 도입으로 검색 시스템 안정성 확보!

by DD
3년 전
조회수 4

Kafka Streams를 활용하여 검색 인덱싱 파이프라인을 개선하고, 레디스 기반의 기존 방식보다 효율적인 데이터 병합을 구현함

스프링 카프카를 통해 Kafka Streams의 생명주기를 관리하고, 어플리케이션 상태 모니터링 기능을 추가함

오류 발생 시 어플리케이션 상태 미반영 문제를 해결하기 위해 헬스 체크를 도입하여 시스템 안정성을 확보함

Kafka Streams를 활용한 데이터 병합

Kafka Streams스트림 처리를 위한 강력한 라이브러리로, 여러 토픽의 데이터를 손쉽게 병합할 수 있다. 구체적으로 Stream DSL을 사용하여 자바 코드로 파이프라인을 구축하고, 레디스를 사용하던 기존 방식보다 간결하게 구현했다. 따라서 데이터 처리 속도 향상코드 복잡도 감소를 달성했다.

스프링 카프카를 통한 생명 주기 관리

스프링 프레임워크를 통해 Kafka Streams의 생명 주기를 관리하면, 개발자는 비즈니스 로직에 집중할 수 있다. @EnableKafkaStreams 어노테이션을 사용하여 KafkaStreams 객체를 주입받고, 스프링의 헬스 체크 기능을 통해 상태를 모니터링한다. 결과적으로 시스템 안정성을 높이고, 장애 대응 시간을 단축했다.

헬스 체크를 통한 시스템 가시성 확보

Kafka Streams의 오류 발생 시 어플리케이션 상태 미반영 문제를 해결하기 위해 헬스 체크를 도입했다. 구체적으로 HealthIndicator를 구현하여 KafkaStreams의 상태를 주기적으로 확인하고, 문제가 발생하면 알림을 보낸다. 따라서 장애 감지 및 대응 속도를 높여 서비스 안정성을 확보했다.

컬리 검색이 카프카를 들여다본 이야기 2