inflearn logo
강의

Course

Instructor

Gemini's Development Practice - Commerce Backend Basics

To all aspiring developers who chose this course.

외부 API 통합 시 데이터 제어 범위 설계 질문

Resolved

96

ahah1234

24 asked

1

상황 정리

저희가 매장 관리자용 통합 예약 관리 시스템을 개발하고 있습니다.

현재 시스템 구조

[외부 예약 플랫폼 (네이버 같은)]
         ↓ 자동 연동
[매장 POS 시스템 (티오더 같은)]
         ↓ API 폴링
[우리 통합 관리 시스템]

문제 상황

POS 업체에 확인해보니:

  1. API에서 외부 플랫폼 예약 구분이 안 됨 → 구분값 추가 예정

  2. 외부 예약은 원칙적으로 수정 불가

    • 현재는 수정이 되지만 플랫폼 API 키가 연결 안 되어 사실상 불가능

    • DB만 바꿔서는 의미 없고, 외부 플랫폼 API 재호출이 필요

  3. POS와 외부 플랫폼 간 연동이 아직 불완전한 상태

논의된 두 가지 방향

A안 (readonly 방식)

- 우리 어드민 생성 예약 → POS 직접 등록 (수정 가능)
- 외부 플랫폼 예약 → POS에서 폴링해서 조회만 (수정 불가)
- UI에서 "외부 예약" 표시하고 수정 버튼 비활성화
- 수정 필요시 원본 플랫폼 바로가기 링크 제공

B안 (통합 수정 방식)

- 모든 예약을 우리 시스템에서 직접 수정 가능하게
- 외부 예약 수정 시 POS API → 외부 플랫폼 API 호출까지 처리

장단점 분석

A안 장점

A안 단점

B안 장점

B안 단점

질문

이런 다중 오리진 데이터를 통합하는 시스템에서:

  1. readonly로 가는 게 맞을까요, 아니면 수정까지 구현해야 할까요?

  2. 단계적으로 접근한다면 어떤 순서가 좋을까요?

    • 1단계: 통합 조회만

    • 2단계: POS가 API 제공하면 그때 수정 추가

비슷한 사례에서 일반적으로 어떻게 접근하나요?

현재 상황에서는 A안(readonly)이 합리적이라고 판단됩니다.

하지만 시간이 지나서 다음 조건들이 충족된다면:

그때는 어떤 아키텍처로 가야 할까요?

옵션 1: 직접 호출 방식

[우리 시스템] → [외부 플랫폼 API] (직접 호출)
             → [POS API] (동기화용)

옵션 2: POS Proxy 방식

[우리 시스템] → [POS API] → [외부 플랫폼 API]

옵션 3: readonly 유지

[우리 시스템] → [POS API] (조회만)

어떤 방식이 일반적이고, 각 옵션의 trade-off는 무엇인가요?

특히 옵션 1 vs 옵션 2에서:

kotlin spring-boot 도메인 dbms/rdbms backend

Answer 1

0

geminikims

안녕하세요 질문 감사드립니다!

이미 질문 내용 자체에서 충분히 현재 상황 기준 장점/단점을 생각하고계시고 어느정도 합리적인 판단도 결정하실 수 있는 것 같기 때문에 제가 의견을 추가적으로 드리는게 의미가 없다고 생각합니다!

핵심만 축약하면 결국 외부 업체에서 무언가 해주는 것은 기약이 없기도하고, 일이 의존적으로 되기 때문에 회사 내부 일정의 문제랑도 연관이 있다고 보여져서 합리적인 선택을 해야할 것 같습니다

또 외부API가 의도 기준 불안전한 상태라면 특정 영역을 기준으로 외부를 격리하는 것을 기본으로하는게 좋은 방향성이라고 생각합니다!

 

옵션에 대해서도 고민하고 계신 부분이 회사 내부의 개념(도메인)의 구조를 잡는 관점의 결정이 더욱 중요하다고 생각합니다, 저의 의견 보다는 그 관점으로 고민해보시면 좋을 것 같습니다!


모쪼록 답이 되었길 바랍니다! 감사합니다!

다양한 관점의 코드 경험을 위해 개선하지 않은 코드

1

47

1

histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/

1

44

2

SettlementTargetRepository Jquery 질문

1

48

2

부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?

1

60

2

엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??

1

67

2

제미니님 안녕하세요!

1

73

2

개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조

1

80

2

프로덕트와 프로덕트카테고리 사이의 삭제 정책

1

75

2

새로 개발한다면 구현 순서

1

133

1

의존 방향에 대한 고민

1

122

2

어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?

1

95

2

OrderKeyGenerator 인스턴스화 generate() 질문

1

83

1

PG 결제 승인 로직

1

128

2

QnA에서 Join 필드 표현법

1

88

1

결제서비스 콜백 동시성문제 가능성

1

106

2

굿

1

107

1

도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법

1

135

2

도메인 객체와 엔티티 객체 사용

1

137

2

CouponService 의존성 의문

1

96

2

상품 목록 조회 고도화 질문

1

111

2

표현 계층에서의 접근 지점이 다양해지는것과 이를 해결하기 위한 파사드의 도입에 대해 제미니님의 생각이 궁금합니다.

1

123

2

제품상세 코드 느끼기

1

144

2

격벽의 순환 참조(?)

1

113

2

결제 관련 서킷 브레이커 전략, 데이터 정합성 및 타임아웃 설정 질문

2

174

2