시스템 설계 · 중급
API 설계에서 멱등성(Idempotency)이 중요한 이유는 무엇이며, POST, PUT, DELETE와 같은 HTTP 메서드를 사용할 때 멱등성을 어떻게 보장할 수 있는지 구체적인 사례를 들어 설명해주세요.
힌트 · 멱등성은 동일한 요청을 여러 번 실행해도 동일한 결과를 보장하여 API 신뢰성을 높이며, PUT과 DELETE는 기본적으로 멱등성을 가지지만 POST는 추가적인 설계가 필요합니다.
멱등성중복 요청상태 일관성POST (토큰)PUT/DELETE (ID)
모범답안
멱등성은 API 설계에서 매우 중요합니다. 왜냐하면 네트워크 불안정 등으로 인해 동일한 요청이 여러 번 전송될 수 있는데, 멱등성이 보장되면 중복 요청으로 인해 시스템 상태가 변경되는 것을 방지하고 데이터 일관성을 유지할 수 있기 때문입니다.
PUT과 DELETE는 특정 ID를 기반으로 동작하므로 기본적으로 멱등성을 가집니다. 예를 들어, PUT으로 특정 ID의 리소스를 업데이트하거나 DELETE로 특정 ID의 리소스를 삭제하는 요청은 여러 번 수행해도 결과는 같습니다.
POST는 리소스 생성을 담당하므로 멱등성을 보장하기 위해 추가적인 설계가 필요합니다. 예를 들어, 클라이언트가 요청 시 고유한 토큰을 함께 전송하고, 서버는 이 토큰을 기반으로 요청의 중복 여부를 확인하여 중복된 요청은 무시하는 방식으로 멱등성을 확보할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 API 설계 면접 질문
- API 버저닝(Versioning)을 적용하는 주요 목적은 무엇이며, URI 버저닝, 헤더 버저닝, 쿼리 파라미터 버저닝 방식의 장단점을 비교하고, 실제 프로젝트에서 어떤 상황에 적합한지 설명해주세요.
- 일관성 있는 API 에러 응답 설계의 중요성은 무엇이며, HTTP 상태 코드와 에러 응답 본문(Error Response Body)을 어떻게 구성하여 클라이언트에게 유용하고 명확한 정보를 제공할 수 있는지 설명해주세요.
- 대량의 데이터를 효율적으로 조회하는 API를 설계할 때, 페이지네이션(Pagination), 필터링(Filtering), 정렬(Sorting) 기능을 어떻게 구현하는 것이 일반적이며, 각 기능 설계 시 고려해야 할 사항은 무엇인지 설명해주세요.
- HATEOAS(Hypermedia as the Engine of Application State) 원칙이 RESTful API 설계에서 가지는 의미는 무엇이며, 이 원칙을 적용했을 때 얻을 수 있는 장점과 실제 적용 시 고려해야 할 점은 무엇인지 설명해주세요.
- 마이크로서비스 아키텍처에서 API Gateway의 역할은 무엇이며, API Gateway가 API 설계 원칙 준수 및 서비스 운영 효율성 측면에서 어떤 이점을 제공하는지 설명해주세요.
- 분산 환경에서 API의 멱등성(Idempotency)을 보장하기 위한 설계 원칙과 구현 전략에 대해 설명하고, 특히 결제 시스템과 같이 중요도가 높은 트랜잭션에서 발생할 수 있는 잠재적 문제점과 해결 방안을 제시하시오.