HTTPX 개발자가 설계한 새로운 HTTP 클라이언트, Zapros의 등장!

by DD
1개월 전
조회수 18

HTTPX 개발 경험을 바탕으로 HTTP 클라이언트(HTTP Client)의 문제점을 인식하고, 새로운 클라이언트인 Zapros를 개발

HTTP 프로토콜 로직과 전송 계층을 분리하여 유지보수성(Maintainability)확장성(Extensibility)을 확보

HTTP/2 지원, DNS 캐싱(DNS Caching) 등 전송 계층의 독립적인 개선을 강조하며, WASM 호환(WASM Compatibility)을 통해 브라우저 환경 지원

커뮤니티에서는 HTTPX의 개발 지연(Development Delay)httpcore의 문제점에 대한 언급이 있었음

HTTP 클라이언트(HTTP Client) 설계의 핵심: 관심사 분리

개발자는 기존 HTTP 클라이언트의 문제점으로 HTTP 프로토콜 로직(HTTP Protocol Logic)전송 계층(Transport Layer)의 혼합을 지적한다. Zapros는 이 두 가지 관심사를 엄격하게 분리하여, HTTP 레이어는 쿠키, 리다이렉트, 헤더, 캐싱 등 프로토콜의 정확성에 집중하고, 전송 계층은 연결 풀링, TLS, DNS, HTTP/2 등을 담당하도록 설계했다. 이러한 분리를 통해 테스트 용이성(Testability)유연성(Flexibility)을 확보했다.

HTTPX 개발 경험과 Zapros의 탄생 배경

개발자는 HTTPX의 개발 지연과 httpcore의 문제점을 겪으면서 Zapros 개발을 시작했다. 특히 httpcore의 해결되지 않은 문제들이 사용자에게 직접적인 영향을 미쳤다고 언급하며, aiohttp를 활용한 어댑터를 개발하여 OpenAI 및 Anthropic Python SDK에 적용한 경험을 공유했다. 이러한 경험을 바탕으로 Zapros는 HTTP 클라이언트의 근본적인 문제점(Fundamental Problems)을 해결하고자 했다.

Zapros의 기술적 특징: 플러그 가능한 전송 계층

Zapros의 가장 큰 특징 중 하나는 플러그 가능한 전송 계층이다. 이를 통해 개발자는 필요에 따라 전송 계층을 쉽게 교체하거나 개선할 수 있다. 특히, WASM 호환 전송 계층을 통해 브라우저 환경에서도 사용할 수 있도록 설계되었다. 이러한 유연성은 다양한 환경(Various Environments)에서의 HTTP 클라이언트 사용을 가능하게 하며, 지속적인 성능 개선(Continuous Performance Improvement)을 위한 기반을 마련한다.

HTTP/2 지원 및 DNS 캐싱(DNS Caching)의 중요성

Zapros는 HTTP/2를 지원하며, DNS 캐싱 기능을 제공하여 성능을 향상시킨다. 이는 전송 계층의 독립적인 개선을 통해 가능해진 부분이다. HTTP/2 프로토콜(HTTP/2 Protocol)의 효율성을 활용하고, DNS 쿼리 시간을 줄임으로써 전반적인 응답 속도(Overall Response Speed)를 개선한다. 이러한 기능들은 현대적인 웹 애플리케이션(Web Application) 개발에 필수적인 요소로, Zapros의 경쟁력을 높이는 요인이다.

Why I built a new HTTP client after working on HTTPX

댓글 0

첫 번째 댓글을 남겨보세요!