시스템 설계 · 기초
RESTful API의 핵심 원칙 중 하나인 '무상태성(Statelessness)'이 무엇인지 설명하고, API 설계 시 무상태성을 유지하는 것이 왜 중요한지 그 장점을 언급해주세요.
힌트 · 무상태성은 서버가 클라이언트의 이전 요청 상태를 저장하지 않는 것으로, 서버의 확장성과 안정성을 높이는 데 기여합니다.
HTTP세션서버 확장성멱등성독립성
모범답안
RESTful API에서 무상태성이란 서버가 클라이언트의 이전 요청을 기억하지 않는다는 의미입니다. 각 요청은 필요한 모든 정보를 담고 있어야 하며, 서버는 이 정보를 바탕으로 독립적으로 처리합니다.
무상태성을 유지하는 것은 API 설계 시 매우 중요합니다. 첫째, 서버의 확장성이 높아집니다. 각 서버가 독립적으로 요청을 처리할 수 있으므로, 트래픽 증가에 따라 서버를 쉽게 늘릴 수 있습니다. 둘째, 서버의 안정성이 향상됩니다. 특정 서버에 문제가 발생해도 다른 서버가 요청을 처리할 수 있어 시스템 전체의 장애를 막을 수 있습니다. 셋째, 클라이언트는 어떤 서버에 요청을 보내도 동일한 결과를 얻을 수 있어 멱등성을 보장하고, 클라이언트-서버 간의 결합도를 낮춰 독립적인 진화가 가능하게 합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 API 설계 면접 질문
- RESTful API 설계 시 URI(Uniform Resource Identifier)를 어떻게 구성해야 좋은지, 리소스 중심의 URI 설계 원칙에 대해 설명해주세요.
- API 응답에서 HTTP 상태 코드가 가지는 의미와 중요성은 무엇이며, 자주 사용되는 2xx, 4xx, 5xx 계열의 상태 코드들을 각각 하나씩 예시를 들어 설명해주세요.
- API 설계에서 '멱등성(Idempotence)'이란 무엇이며, 멱등성이 보장되어야 하는 HTTP 메서드와 그 이유에 대해 설명해주세요.
- 운영 중인 API의 변경이 불가피할 때, API 버전 관리가 왜 필요하며, 일반적으로 사용되는 버전 관리 방식에는 어떤 것들이 있는지 간략히 설명해주세요.
- RESTful API 설계 시 자원(Resource)을 어떻게 정의하고 URI를 구성하는 것이 좋은지 구체적인 예시를 들어 설명하고, Statelessness 원칙을 실제 API 설계에 어떻게 적용할 수 있는지 설명해주세요.
- API 버저닝(Versioning)을 적용하는 주요 목적은 무엇이며, URI 버저닝, 헤더 버저닝, 쿼리 파라미터 버저닝 방식의 장단점을 비교하고, 실제 프로젝트에서 어떤 상황에 적합한지 설명해주세요.