제목
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
Rust 웹 프레임워크를 사용하는 개발자, 특히 Hyperlane 프레임워크에 관심 있는 초보자 및 중급자
핵심 요약
- Hyperlane은 Rust로 작성된 고성능 웹 프레임워크로,
wrk
테스트 기준 QPS 120,000+ 성능 제공 (actix-web
,axum
보다 우수) - 직접 접근자(
get_request_method()
)를 통해 중첩된 메서드 호출을 간소화하고, 비동기 핸들러(async fn
) 사용 시async
키워드 누락 시 컴파일 오류 발생 - 미들웨어는 "양파 모델"(
onion model
) 방식으로 구조화되며,send()
와send_once()
의 차이점은 TCP 연결 유지 여부에 따라 결정
섹션별 세부 요약
1. **Hyperlane 소개 및 성능 특징**
- Rust의 안전성과 동시성 활용, 실시간 통신 지원
- 사용자 친화적 API 설계, 비동기 처리 최적화
2. **성능 벤치마크**
wrk
테스트: Hyperlane > actix-web > axum (QPS 120,000+ > 90,000+ > 80,000+)ab
테스트: Hyperlane 110,000+ QPS 기록 (10,000 요청, 100 동시성)
3. **메서드 간소화 및 비동기 핸들러**
ctx.get_request_method().await
로 중첩 호출 제거async fn
사용 시async
키워드 누락 시 컴파일 오류 발생 (예:delete_user
함수)
4. **응답 처리 API**
send()
vssend_once()
send()
→ 연결 유지send_once()
→ 연결 즉시 종료- 응답 상태 코드 설정(
set_response_status_code(404)
) 및 바디 전송(set_response_body("Data").send().await
)
5. **미들웨어 아키텍처**
- "양파 모델"(
onion model
) 구조: 요청 → 외부 미들웨어 → 내부 미들웨어 → 컨트롤러 → 응답 흐름 - 로그 미들웨어 예시(
log_middleware
)
```rust
async fn log_middleware(ctx: Context, next: Next) {
let start_time = Instant::now();
println!("Request started at: {:?}", start_time);
next.await;
}
```
결론
- Hyperlane 사용 시
async
키워드 누락 주의 및 미들웨어 흐름 이해 필요 - 성능 테스트와 비동기 처리 최적화를 통해 고성능 웹 서비스 개발 가능