패스잇
시스템 설계 · 심화

분산 환경에서 API의 멱등성(Idempotency)을 보장하기 위한 설계 원칙과 구현 전략에 대해 설명하고, 특히 결제 시스템과 같이 중요도가 높은 트랜잭션에서 발생할 수 있는 잠재적 문제점과 해결 방안을 제시하시오.

힌트 · 멱등성 키(Idempotency Key) 사용, 트랜잭션 관리, 상태 전이(state transition) 로직을 고려해야 합니다.

멱등성 키재시도 메커니즘트랜잭션 관리분산 락보상 트랜잭션

모범답안

분산 환경에서 API 멱등성을 보장하는 것은 매우 중요합니다. 특히 결제 시스템처럼 중요한 트랜잭션에서는 더욱 그렇습니다.

멱등성을 확보하기 위해 저는 주로 멱등성 키를 활용합니다. 클라이언트가 요청 시 고유한 키를 함께 보내면, 서버는 이 키를 기반으로 요청의 중복 여부를 판단합니다. 이미 처리된 요청이라면 동일한 응답을 반환하고, 새로운 요청이라면 처리 후 멱등성 키와 결과를 저장합니다.

결제 시스템에서는 네트워크 불안정 등으로 인해 재시도가 발생할 수 있습니다. 이 때, 멱등성 키를 사용하면 중복 결제를 방지할 수 있습니다. 또한, 분산 락을 사용하여 동시성 문제를 해결하고, 트랜잭션 실패 시 보상 트랜잭션을 통해 데이터 일관성을 유지할 수 있습니다.

잠재적인 문제점으로는 멱등성 키 관리의 복잡성, 분산 락 성능 저하 등이 있을 수 있습니다. 이를 해결하기 위해 멱등성 키 저장소를 효율적으로 관리하고, 분산 락 대신 낙관적 락을 사용하는 등의 방법을 고려할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 API 설계 면접 질문

← API 설계 면접 질문 전체 보기