시스템 설계 · 기초
API 설계에서 '멱등성(Idempotence)'이란 무엇이며, 멱등성이 보장되어야 하는 HTTP 메서드와 그 이유에 대해 설명해주세요.
힌트 · 멱등성은 동일한 요청을 여러 번 수행해도 같은 결과를 반환하는 특성으로, GET, PUT, DELETE 메서드가 멱등성을 가집니다.
멱등성HTTP 메서드GET, PUT, DELETE상태 변화안전성
모범답안
면접관님, 멱등성이란 동일한 요청을 한 번 보내든 여러 번 보내든 결과가 항상 같은 것을 의미합니다. 즉, 서버의 상태가 동일하게 유지되는 것이죠.
HTTP 메서드 중에서 멱등성이 보장되어야 하는 메서드는 주로 GET, PUT, DELETE입니다.
GET은 서버의 상태를 변경하지 않고 데이터를 조회하기 때문에 여러 번 호출해도 결과가 같습니다.
PUT은 특정 URI의 자원을 요청에 담긴 내용으로 완전히 대체합니다. 따라서 여러 번 요청해도 최종 상태는 같습니다.
DELETE는 특정 URI의 자원을 삭제합니다. 이미 삭제된 자원에 대해 DELETE 요청을 보내도 결과적으로는 자원이 없는 상태로 동일합니다.
멱등성이 중요한 이유는 네트워크 오류 등으로 인해 동일한 요청이 여러 번 전송될 수 있기 때문입니다. 멱등성이 보장되면 이러한 상황에서도 시스템의 안정성을 유지할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 API 설계 면접 질문
- RESTful API에서 주로 사용되는 HTTP 메서드인 GET, POST, PUT, DELETE의 각각의 역할과 용도를 구체적인 예시와 함께 설명해주세요.
- RESTful API 설계 시 URI(Uniform Resource Identifier)를 어떻게 구성해야 좋은지, 리소스 중심의 URI 설계 원칙에 대해 설명해주세요.
- API 응답에서 HTTP 상태 코드가 가지는 의미와 중요성은 무엇이며, 자주 사용되는 2xx, 4xx, 5xx 계열의 상태 코드들을 각각 하나씩 예시를 들어 설명해주세요.
- RESTful API의 핵심 원칙 중 하나인 '무상태성(Statelessness)'이 무엇인지 설명하고, API 설계 시 무상태성을 유지하는 것이 왜 중요한지 그 장점을 언급해주세요.
- 운영 중인 API의 변경이 불가피할 때, API 버전 관리가 왜 필요하며, 일반적으로 사용되는 버전 관리 방식에는 어떤 것들이 있는지 간략히 설명해주세요.
- RESTful API 설계 시 자원(Resource)을 어떻게 정의하고 URI를 구성하는 것이 좋은지 구체적인 예시를 들어 설명하고, Statelessness 원칙을 실제 API 설계에 어떻게 적용할 수 있는지 설명해주세요.