올리브영, Kafka 기반 비동기 아키텍처로 발주 서비스 혁신!

by DD
11개월 전
조회수 4

동기식 발주 처리응답 지연 문제를 해결하기 위해 Kafka 기반 비동기 아키텍처를 도입함

API + Kafka를 결합한 하이브리드 요청-응답 아키텍처를 설계하여 중복 발주 문제를 해결함

발주 처리 속도 98.7% 향상 및 향후 백오피스 서비스에 대한 확장성 확보를 달성함

비동기 아키텍처 설계 과정

기존 동기식 발주 처리의 문제점을 해결하기 위해 Kafka를 활용한 비동기 아키텍처를 설계했다. 구체적으로, 요청-응답 패턴을 적용하여 발주 요청과 처리 결과를 분리했다. 따라서, API Polling 방식의 한계를 극복하고, 최종적으로 API + Kafka를 결합한 하이브리드 아키텍처를 구축했다.

ReplyingKafkaTemplate의 함정

ReplyingKafkaTemplate을 활용한 2차 설계는 메시지 유실로 인한 중복 발주 가능성이 존재했다. 반면, RequestReplyFuture를 메모리에 저장하는 방식은 Graceful Shutdown 시에도 문제가 발생할 수 있었다. 따라서, 메시지 유실을 방지하기 위해 ReplyingKafkaTemplate 대신 하이브리드 방식을 선택했다.

하이브리드 아키텍처의 예외 처리

최종 아키텍처는 API로 요청을 받고, Kafka Consumer가 응답을 처리하는 구조이다. 구체적으로, DLT(Dead Letter Topic)를 활용하여 예외 발생 시 실패 응답 메시지를 발행한다. 결과적으로, 무한 대기를 방지하고, 서비스 안정성을 확보했다.

비동기 요청-응답 패턴으로 풀어낸 발주 서비스 개발기