시스템 설계 · 기초
운영 중인 API의 변경이 불가피할 때, API 버전 관리가 왜 필요하며, 일반적으로 사용되는 버전 관리 방식에는 어떤 것들이 있는지 간략히 설명해주세요.
힌트 · 버전 관리는 기존 클라이언트의 호환성을 유지하기 위해 필요하며, URL, 헤더, 쿼리 파라미터 등을 통해 버전을 지정할 수 있습니다.
호환성하위 호환성API GatewayURI 버전 관리헤더 버전 관리
모범답안
API 변경이 불가피할 때 버전 관리는 기존 API를 사용하던 클라이언트와의 호환성을 유지하기 위해 필수적입니다. 변경된 API로 인해 기존 클라이언트가 갑자기 작동하지 않게 되는 문제를 방지할 수 있죠.
일반적으로 많이 사용되는 버전 관리 방식으로는 URI를 이용하는 방법, 헤더를 이용하는 방법, 그리고 쿼리 파라미터를 이용하는 방법 등이 있습니다.
URI 방식은 API 엔드포인트에 버전을 명시하는 방식입니다. 예를 들어 /v1/users에서 /v2/users로 변경하는 것이죠. 헤더 방식은 HTTP 요청 헤더에 버전을 담아 전달하는 방식이고, 쿼리 파라미터 방식은 URL 쿼리 스트링에 버전을 추가하는 방식입니다. 각 방식은 장단점이 있으며, 상황에 맞춰 적절한 방법을 선택해야 합니다. API Gateway를 활용하여 버전별 라우팅을 설정하는 것도 좋은 방법입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 API 설계 면접 질문
- API 응답에서 HTTP 상태 코드가 가지는 의미와 중요성은 무엇이며, 자주 사용되는 2xx, 4xx, 5xx 계열의 상태 코드들을 각각 하나씩 예시를 들어 설명해주세요.
- API 설계에서 '멱등성(Idempotence)'이란 무엇이며, 멱등성이 보장되어야 하는 HTTP 메서드와 그 이유에 대해 설명해주세요.
- RESTful API의 핵심 원칙 중 하나인 '무상태성(Statelessness)'이 무엇인지 설명하고, API 설계 시 무상태성을 유지하는 것이 왜 중요한지 그 장점을 언급해주세요.
- RESTful API 설계 시 자원(Resource)을 어떻게 정의하고 URI를 구성하는 것이 좋은지 구체적인 예시를 들어 설명하고, Statelessness 원칙을 실제 API 설계에 어떻게 적용할 수 있는지 설명해주세요.
- API 버저닝(Versioning)을 적용하는 주요 목적은 무엇이며, URI 버저닝, 헤더 버저닝, 쿼리 파라미터 버저닝 방식의 장단점을 비교하고, 실제 프로젝트에서 어떤 상황에 적합한지 설명해주세요.
- 일관성 있는 API 에러 응답 설계의 중요성은 무엇이며, HTTP 상태 코드와 에러 응답 본문(Error Response Body)을 어떻게 구성하여 클라이언트에게 유용하고 명확한 정보를 제공할 수 있는지 설명해주세요.