
아키텍처
외부셀러 - 외부 스파크성 트래픽으로부터 내부 시스템을 보호하는 방법 1탄
두줄요약
외부셀러의 동기식 API 구조를 비동기 이벤트 기반으로 분리해 내부 시스템 보호 방안을 소개했습니다. AWS MSK와 partition key, retry 로직으로 스파이크 트래픽 대응과 순서 보장을 다뤘습니다.
문제 상황
- 외부셀러의 상품·주문·배송 API가 내부 올리브영 API를 동기 방식으로 호출하며 긴 대기와 실패 응답 발생
- 내부 작업 지연이 외부셀러 서버의 CPU·Memory 상승과 다른 서비스 영향으로 이어지는 구조
원인 분석
- 검수와 생성이 한 요청-응답 흐름에 묶인 동기 처리 구조
- 내부 API의 heavy 작업과 네트워크 지연이 외부 요청 대기시간을 과도하게 확대
- 파티션 키 없이 비동기 전달 시 처리 순서 보장 어려움
해결 방법
- 요청 담당 서비스와 생성 담당 서비스를 분리하고, AWS MSK 기반 비동기 이벤트 전달 구조로 전환
- 요청 단계에서는 필수 validation만 수행하고 이후 처리는 내부 생성 서비스로 이관
- 상품 ID를 partition key로 지정해 동일 상품의 처리 순서 보장
성능/운영 포인트
- 스파이크성 트래픽이 내부 상품 API로 직접 유입되는 것을 완화
- 인입 처리와 생성 처리 리소스를 분리해 모니터링 및 대응 용이
- 네트워크 문제 시 retry 로직으로 재처리 가능
