Hyperlane 프레임워크 개요 및 사용 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Rust 언어를 사용하는 웹 개발자 및 고성능 HTTP 서비스 구축을 고려하는 프로그래머
핵심 요약
Context
객체를 통해 요청/응답 정보를 간결하게 처리 (get_request_method
,set_response_status_code
등)- HTTP 메서드 매크로 지원 (
#[get]
,#[methods(get, post)]
) 및 동적/정적 라우팅 기능 v4.89.0
이상에서는ctx.aborted()
로 요청 중단,v5.25.1
이상에서는ctx.closed()
로 TCP 연결 종료 가능- 성능 테스트 결과:
wrk
기준 QPS 324,323.71 (Tokio 다음으로 높음)
섹션별 세부 요약
1. Context 객체 설계
get_request_method
,set_response_status_code
등 단순화된 API 제공- 요청/응답 헤더, 본문, 상태 코드 등 모든 정보를
ctx
객체로 통합 - 예:
ctx.get_request_body().await
→request_body: Vec
2. 라우팅 기능
- 정적 라우팅: 동일 경로 중복 시 예외 발생 (
server.route("/test", ...)
) - 동적 라우팅:
{}
및 정규식 지원 (/test/{text}
,/test/{number:\\d+}
) - 경로 파라미터 추출:
ctx.get_route_param("text").await
3. 미들웨어 설계
- 온리언 모델 기반: 요청 → 요청 미들웨어 → 컨트롤러 → 응답 미들웨어 → 응답
- 버전별 처리 순서:
- v3.0.0~v3.99
: 동기 라우팅 → 비동기 미들웨어
- v4.0.0~v4.21
: 비동기 미들웨어 → 비동기 라우팅 → 비동기 응답 미들웨어
- v4.89.0+
: ctx.aborted()
로 요청 중단 가능
4. 성능 테스트
wrk
테스트: Hyperlane (324,323.71 QPS) → Tokio (340,130.92 QPS) 다음으로 높음ab
테스트: Hyperlane (307,568.90 QPS) → Tokio (308,596.26 QPS) 다음으로 높음
결론
- Rust 기반 고성능 웹 서버 개발에 적합한 프레임워크로,
ctx
객체의 유연한 API와 정확한 라우팅/미들웨어 설계가 핵심 - Tokio에 근접한 성능을 기반으로, 대규모 동시 처리를 요구하는 애플리케이션에 활용 권장
v5.25.1
이상에서ctx.closed()
로 TCP 연결 종료 가능해 리소스 효율성 향상