API Versioning (API 버전 관리)
API Versioning (API 버전 관리)
API의 호환성을 유지하면서 변경·개선을 가능하게 하는 버전 관리 전략으로, URL 경로, 쿼리 파라미터, 헤더 등을 통해 버전을 지정하며 클라이언트와 서버 간 계약 관리와 점진적 마이그레이션을 지원
목적: 하위 호환성 유지, 점진적 변경, 클라이언트 마이그레이션 지원, API 진화
특징: 버전 식별, 복수 버전 지원, 단계적 폐기(Deprecation), 호환성 관리
버전 관리 전략
- •URL Path Versioning: /api/v1/users, /api/v2/users, 가장 명시적, 캐싱 용이
- •Query Parameter: /api/users?version=1, URL 깔끔, 선택적 버전
- •Header Versioning: X-API-Version: 1, Accept: application/vnd.api.v1+json, URL 깔끔, 캐싱 어려움
- •Media Type (Content Negotiation): Accept: application/vnd.company.v1+json, RESTful, 복잡
Semantic Versioning (SemVer): MAJOR.MINOR.PATCH
- •MAJOR: 호환성 깨는 변경 (v1 → v2)
- •MINOR: 하위 호환 기능 추가
- •PATCH: 하위 호환 버그 수정
Breaking Change: 필드 제거/타입 변경, 필수 파라미터 추가, 응답 구조 변경 → 새 MAJOR 버전 필요
Non-Breaking Change: 선택적 필드 추가, 새 엔드포인트 추가 → MINOR 버전 증가
Deprecation 전략: 새 버전 출시 → Deprecated 표시 → Sunset Header로 폐기 일정 공지 → 마이그레이션 기간(3~12개월) → 구 버전 폐기
장점: 하위 호환성, 점진적 마이그레이션, 명확한 계약, API 진화 가능
단점: 복수 버전 유지 부담, 코드 중복, 버전 증가, 복잡도
적용사례: 공개 API(GitHub, Stripe), 마이크로서비스, 모바일 앱 백엔드
기술요소: URL Path, Header, SemVer, Deprecation, Sunset Header
비교: URL Path(명시적/캐싱) vs Header(URL 깔끔/캐싱 어려움) vs Query(선택적)
연관: REST API, OpenAPI, 하위 호환성, Deprecation, SemVer