백엔드
비동기 요청-응답 패턴으로 풀어낸 발주 서비스 개발기
두줄요약
동기식 발주 처리의 지연과 안정성 문제를 해결하기 위해 Kafka 기반 비동기 요청-응답 아키텍처를 도입했습니다. API와 Kafka를 결합해 결과 전달과 중복 처리 방지를 함께 해결했습니다.
문제 상황
- 동기식 발주 처리로 인한 대량 요청 지연, 서버 메모리 장시간 점유, 간헐적 장애 발생
- 올리브원과 브랜드원 등 여러 백오피스에서 공통으로 쓸 수 있는 발주 서비스 필요
- 비동기 처리 후에도 요청자에게 발주 결과를 전달할 수 있는 구조 필요
원인 분석
- 상품별 다수의 유효성 검증으로 전체 처리 시간이 길어지는 구조
- Kafka 비동기화 시 결과 응답 연결 방식이 별도로 필요
- 메시지 중복 처리, 응답 유실, 타임아웃, 리밸런싱 등 운영 리스크 존재
해결 방법
- 요청 DTO를 헤더와 상품 리스트로 그룹화해 중복 검증 최소화
- Kafka 기반 비동기 처리로 요청과 발주 실행 분리
- API와 Kafka를 결합한 하이브리드 요청-응답 아키텍처로 요청 식별자 영속화
- DLT에서 실패 응답 메시지를 만들어 응답 토픽으로 재전달
