inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백엔드 모의면접] 중복 결제는 어떻게 막을까?

약풍
1

안녕하세요.

인프랩에서 모의면접 서비스를 개발/운영하고 있는 약풍이라고 해요.
최근에 SNS에오늘의 면접질문컨텐츠를 연재하고 있었는데,인프런에도 해당 컨텐츠를 업로드 해달라는 요청들이 있었어요.

오늘부터 주기적으로 이곳에도 5분내로 읽을 수 있는 면접질문을 하나씩 업로드하려고 해요.
재미있게 읽어주시면 감사하겠습니다🙇

 

 

오늘의 백엔드 질문

결제 API에 동일한 요청이 두 번 들어왔을 때, 중복 결제를 어떻게 막으시겠어요?

이력서/포트폴리오에 결제나 주문,쿠폰 발급이 있으면 나올 수 있는 질문이에요.
실제로 이런 일이 발생할 수 있을까? 싶기도 하지만, 실무에서 종종 발생하는 이슈에요.

이 질문은 결제 요청이 한 번만 온다는 전제로 코드를 짰는지,
혹은 결제 요청이 여러번 전송되어도 한 번만 처리되도록 로직을 작성했는지 검증하는 질문이에요.

 

 

답변 키포인트

 

"버튼 비활성화"처리 만으로는 아쉬운 이유

중복 결제를 이야기할 때 "프론트에서 버튼을 비활성화한다"에서 끝나면 아쉬운 답변이에요.
버튼은 언제든 클라이언트에 의해 조작될 수 있어서,실제 방어 로직은 서버와 DB에 있어야 하거든요.

같은 키로 들어온 두 번째 요청을 새 결제가 아니라 이미 처리한 요청의 조회로 취급하는 구조인지,두 요청이 동시에 들어와도 유니크 제약이 하나를 확실히 막아주는지를 같이 설명할 수 있게 준비하는 게 좋아요.

 

 

면접에서는

면접에서 이 질문을 받았다면 "재시도 자체를 없앨 수는 없으니, 요청이 여러 번 들어와도 결과는 한 번만 처리한다"라는 식으로 답변을 시작하면 좋아요.

그다음에는 아래 순서로 이어서 설명하면 돼요.

  1. 주문마다 멱등키를 만들고, 그 키에 유니크 제약을 건다.

  2. 두 번째 요청은 새로 처리하지 않고 저장된 결과를 반환한다.

  3. PG 응답 유실처럼 서버가 통제할 수 없는 경우에는, 주기적인 대사 과정으로 데이터를 보정한다.

이러한 중복 요청 처리 방안은 결제 외에도 다양한 적용할 수 있어요.
쿠폰 발급,포인트 적립,Kafka의 at-least-once 소비 이슈 모두 연관된 질문으로 나올 수 있어요.

 

 

꼬리질문

다음의 꼬리질문도 생각해보세요.

 

 

AI 모의면접으로
나의 면접 스킬을 체크해보세요

프론트엔드,백엔드,FDE 기술면접부터 문화면접까지,
개발자 면접 준비를 실전처럼 연습해 보세요.

직무/문화면접 보러가기

취업 · 이직 백엔드 면접준비 모의면접 AI면접

답변 0