API 버전 관리란
API가 진화하면서 기존 클라이언트와의 호환성을 유지해야 합니다. 40년간 API를 설계해온 저로서는 버전 관리가 API 수명에 중요하다고 확신합니다. 변경은 피할 수 없지만, 기존 사용자를 깨뜨리지 않아야 합니다. 여러 버전 관리 방식이 있습니다.
URL 버전 관리
/v1/users, /v2/users처럼 URL에 버전을 포함합니다. 가장 명시적이고 이해하기 쉽습니다. 라우팅이 간단합니다. 하지만 URL이 변경되어 캐싱에 영향을 줄 수 있습니다. RESTful하지 않다는 의견도 있습니다. 많은 대형 API(GitHub, Stripe)가 이 방식을 사용합니다.
헤더 버전 관리
Accept 헤더나 커스텀 헤더로 버전을 지정합니다. Accept: application/vnd.api+json;version=1. URL이 깔끔하게 유지됩니다. 하지만 테스트와 디버깅이 어렵습니다. 브라우저에서 직접 접근하기 어렵습니다. 미디어 타입 버전 관리도 이 방식입니다.
쿼리 파라미터 버전 관리
/users?version=1 형식입니다. 구현이 간단합니다. 선택적으로 사용할 수 있습니다. 하지만 URL에 노출되어 헤더보다 덜 깔끔합니다. 캐싱에 영향을 줄 수 있습니다.
버전 관리 모범 사례
가능하면 하위 호환성을 유지합니다. 필드 추가는 보통 안전합니다. Breaking Change는 새 버전에서만 합니다. 구버전 지원 기간을 명시합니다. 마이그레이션 가이드를 제공합니다. 버전이 너무 많으면 유지보수가 어렵습니다. 적절한 시점에 구버전을 폐기합니다.
댓글
0