컬리의 입고 시스템이 외부 인입 데이터를 안전하게 동기화하는 방법
How Kurly's Inbound System Safely Synchronizes External Inbound Data
TL;DR AI
2분핵심 요약
컬리 외부 채널의 입고 예정 정보를 동기화하기 위해 아웃박스 패턴과 재시도 토픽을 도입했다, sCM 프로덕트 팀이 외부 채널 데이터 동기화 방식을 설명함.
외부 채널 입고 예정 정보를 컬리의 생성 API 호출 또는 컬리가 주기적으로 조회하는 조회 API로 제공한다 파트너가 호출하는 생성 API 또는 파트너가 제공하는 조회 API 방식이 있음.
레거시 통합 흐름 인터페이스 DB 적재와 카프카 메시지 발행을 하나의 트랜잭션으로 묶었다 인터페이스 DB 쓰기와 카프카 발행을 하나의 트랜잭션으로 처리했다고 명시됨.
실패 모드 커밋 실패나 필요한 다른 데이터의 미존재로 인해 인터페이스 테이블과 카프카 메시지의 원자성이 깨지거나 입고 생성이 실패할 수 있다 커밋 실패 및 의존 데이터 미존재가 원인으로 언급됨.
아웃박스 패턴 발행할 메시지를 아웃박스 테이블에 저장하고 폴러가 이를 읽어 카프카로 발행한 뒤 성공 시 마킹한다 발행할 메시지를 아웃박스 테이블에 저장한 뒤 폴러가 읽어 발행한다고 설명됨.