API 캐싱 혁신: HTTP QUERY 메서드 등장!

by DD
1일 전
조회수 0

HTTP QUERY 메서드는 GET의 한계와 POST의 단점을 보완하는 새로운 표준으로 제안됨

요청 본문(Request Body)을 허용하면서도 안전성(Safety)과 멱등성(Idempotency)을 보장함

CDN 및 프록시 캐싱(CDN & Proxy Caching)을 HTTP 레벨에서 지원하여 API 성능 개선 기대

JSON-RPC 등 RPC 스타일 API의 캐싱 문제(Caching Issues)를 근본적으로 해결할 수 있음

QUERY 메서드의 안전성 및 멱등성 보장

커뮤니티에서는 QUERY 메서드가 GET처럼 안전(Safe)하고 멱등성(Idempotent)을 가지면서도 요청 본문을 포함할 수 있다는 점을 높이 평가합니다. 이는 기존 POST 메서드가 상태 변경을 유발할 수 있다는 점과 달리, QUERY는 서버의 상태를 변경하지 않는 읽기 작업에 적합하다는 것을 의미합니다. 따라서 복잡한 재시도 로직이나 애플리케이션 레벨의 커스텀 캐싱 구현 없이도 HTTP 표준 메커니즘 활용이 가능해질 것으로 기대됩니다.

HTTP 캐싱 메커니즘의 확장성

RFC 10008의 핵심은 QUERY 응답이 요청 본문(Request Body)을 포함한 캐시 키(Cache Key)를 기반으로 캐싱될 수 있다는 점입니다. 이는 CDN이나 리버스 프록시가 Content-Type 헤더와 본문 내용을 함께 분석하여 동일한 요청에 대해 캐시된 응답을 제공할 수 있게 합니다. 특히 JSON 키 순서 변경이나 불필요한 공백 제거 등 본문 정규화(Body Normalization)를 통한 캐시 히트율 향상 가능성도 언급됩니다.

Go 및 Rust에서의 QUERY 메서드 구현

언급된 바에 따르면, Go의 `net/http` 라이브러리는 임의의 HTTP 메서드 문자열 사용을 지원하므로 `QUERY` 메서드 구현에 추가적인 종속성 없이 표준 라이브러리만으로 SDK 개발이 가능합니다. Rust의 `reqwest` 라이브러리 역시 `reqwest::Method`를 통해 커스텀 메서드를 정의할 수 있어, 두 언어 모두에서 기존 코드베이스와의 호환성을 유지하며 QUERY 메서드를 쉽게 통합할 수 있습니다.

JSON-RPC API의 실질적 개선 효과

논의에서는 특히 JSON-RPC와 같이 데이터 전송 구조는 POST이지만 의미상 읽기 작업인 API에서 QUERY 메서드의 효용성이 클 것으로 보고 있습니다. 기존에는 이러한 API들이 HTTP 캐싱 메커니즘의 혜택을 받지 못해 별도의 캐싱 계층을 구축해야 했으나, QUERY 메서드를 통해 HTTP 네이티브 캐싱(HTTP-Native Caching)을 적용할 수 있게 됩니다. 이는 개발 복잡성을 줄이고 CDN 활용도를 높여 전반적인 API 성능을 개선할 수 있습니다.

RFC 10008: The HTTP QUERY Method