
백엔드
외부 API, 수신과 처리 분리하기
두줄요약
외부 API 수신과 실제 데이터 처리를 분리한 구조를 소개했습니다. 요청은 Payload로 저장하고 내부 Timer Event가 비동기로 처리하도록 설계했습니다.
문제 상황
- 내부에서 시작되는 대량 배치 처리와 외부 API 수신 처리의 성격 차이
- 한 번에 약 60건이지만 요청 시점을 통제할 수 없어 동기 처리 시 요청 집중 가능성
- 요청 성공과 최종 데이터 저장 완료의 의미가 달라지는 구조
구조와 흐름
- Receive 단계와 Process 단계를 분리한 비동기 처리 구조
- 외부 요청은 전체 데이터를 JSON String으로 직렬화해 Payload 테이블 한 Row에 저장
- 내부 Timer Event가 미처리 Payload를 조회해 Deserialize, 변환, Batch Insert / Upsert 수행
트레이드오프
- 요청 시점에는 단순 저장으로 응답 속도와 부하 분산 확보
- 처리 지연을 허용하는 대신 실시간 반영성은 낮아짐
- requestId로 작업 추적, Unique Key로 중복 방지 역할 분리
적용해볼 점
- 외부 연동 API는 수신과 실제 처리를 분리하는 구조 검토
- 작업 단위 추적과 데이터 유일성 보장을 위한 식별자 분리
- 최종 저장은 Upsert 기반으로 중복 유입 대응

