T
TechInsights
목록으로
Architecture•2024. 07. 23.

오픈마켓 여행 플랫폼의 실전 API 연동 노하우

지마켓
지마켓 Engineering Team
오픈마켓 여행 플랫폼의 실전 API 연동 노하우

핵심요약

원문 보기

지마켓 여행 플랫폼은 다양한 외부 API와의 복잡한 연동으로 인해 내결함성과 데이터 일관성, 멱등성 확보가 중요합니다. 이를 위해 동적 타임아웃, 폴백, 상태 머신, 대사 배치, 멱등성 재시도, 보상 트랜잭션 등의 전략을 적용하여 시스템의 안정성과 신뢰성을 강화합니다.

지마켓 여행 플랫폼: 복잡한 외부 API 연동 시스템 구축 전략

여행 상품 상세 페이지의 내결함성 확보

  • 지마켓, 커머스, OTA 등 다수의 API 조합으로 구성되어, 외부 시스템 의존성이 높아 **내결함성(fault tolerance)**이 필수적입니다.
  • API 중요도 및 평균 응답시간에 따라 동적인 타임아웃을 설정하여 응답 지연이 전체 시스템으로 전파되는 것을 방지합니다 (예: 가격/재고 조회 API는 충분히 대기).
  • 오류 발생 시 **fallbackMethod**를 통해 기능을 일시적으로 제한하거나 대체 데이터(예: 할인 오류 시 원가 노출)를 제공하여 서비스 연속성을 확보합니다. resilience4j 라이브러리를 활용할 수 있습니다.

실시간 예약 시스템의 최종 일관성 및 멱등성 보장

  • 고객 결제 및 예약 확정은 금전 거래 및 서비스 보장과 직결되므로, **최종 일관성(eventual consistency)**과 **멱등성(idempotency)**이 요구됩니다.
  • **상태 머신(State Machine)**을 설계하여 시스템별 예약 상태를 정의하고, 상태 전이 규칙을 구현하여 복잡한 연동 로직을 단순화하며 재사용성을 높입니다.
  • **대사 배치(Reconciliation Batch)**를 통해 시스템 간 상태 불일치를 주기적으로 확인하고, 상태 머신으로 재연동하여 최종 일관성을 확보합니다.
  • API 재시도 시 멱등성을 고려해야 합니다. 명시적 에러 코드를 성공으로 간주하거나, 상태 조회 API를 활용하여 중복 호출 여부를 판단합니다. **spring-retry**를 사용하여 지연 후 재시도 로직을 구현할 수 있습니다.
  • 재시도로 해결 불가능한 경우, **보상 트랜잭션(Compensating Transaction)**을 통해 데이터를 원상태로 롤백합니다. 롤백이 쉬운 시스템부터 연동하고, OTA 실예약과 같이 돌이킬 수 없는 요청은 가장 나중에 처리하여 위험을 최소화합니다.
#Architecture#BackEnd
지마켓
지마켓

지마켓 Engineering Team

기술 인사이트를 전달하는 공식 채널

You might also like

View all
토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

토스 피플 : 새로운 길을 만들 땐 내 선택을 믿는다

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기

"이 버튼 왜 안 눌려요?" 물류 현장의 목소리로 PDA 시스템 완성하기