목록 보기
외부 API, 수신과 처리 분리하기
백엔드

외부 API, 수신과 처리 분리하기

넥스트리
넥스트리
2026년 9월 17일

두줄요약

외부 API 수신과 실제 데이터 처리를 분리한 구조를 소개했습니다. 요청은 Payload로 저장하고 내부 Timer Event가 비동기로 처리하도록 설계했습니다.

문제 상황

  • 내부에서 시작되는 대량 배치 처리와 외부 API 수신 처리의 성격 차이
  • 한 번에 약 60건이지만 요청 시점을 통제할 수 없어 동기 처리 시 요청 집중 가능성
  • 요청 성공과 최종 데이터 저장 완료의 의미가 달라지는 구조

구조와 흐름

  • Receive 단계와 Process 단계를 분리한 비동기 처리 구조
  • 외부 요청은 전체 데이터를 JSON String으로 직렬화해 Payload 테이블 한 Row에 저장
  • 내부 Timer Event가 미처리 Payload를 조회해 Deserialize, 변환, Batch Insert / Upsert 수행

트레이드오프

  • 요청 시점에는 단순 저장으로 응답 속도와 부하 분산 확보
  • 처리 지연을 허용하는 대신 실시간 반영성은 낮아짐
  • requestId로 작업 추적, Unique Key로 중복 방지 역할 분리

적용해볼 점

  • 외부 연동 API는 수신과 실제 처리를 분리하는 구조 검토
  • 작업 단위 추적과 데이터 유일성 보장을 위한 식별자 분리
  • 최종 저장은 Upsert 기반으로 중복 유입 대응

다음 읽기

#비동기 주제를 이어서 읽기

데이터 Backfill을 위한 자원 격리 전략

실시간 트래픽과 백필 트래픽을 분리해 자원 고갈과 DB 스파이크를 막는 구조를 정리했습니다. 전용 큐와 비동기 스레드 풀, 크기 기반 청크 처리로 안정적인 대용량 재전송을 구현했습니다.

넥스트리
넥스트리
백엔드

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...