함수형 프로그래밍 기반 미들웨어 아키텍처 패턴
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

미들웨어 아키텍처 패턴: 함수형 프로그래밍 기반 웹 처리 체인

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 웹 개발자 (Rust 기반 미들웨어 설계에 관심 있는 개발자)
  • 중간 이상 수준의 프로그래밍 경험을 가진 개발자
  • 반복적 코드 처리를 개선하고자 하는 개발 팀

핵심 요약

  • 함수형 프로그래밍 설계 원칙을 기반으로 한 비동기 미들웨어 체인 구조
  • hyperlane::* 프레임워크의 Context 객체를 통해 중간 상태 공유요청/응답 처리 흐름 제어
  • 미들웨어 실행 순서 명확화: 요청 미들웨어 → 라우트 핸들러 → 응답 미들웨어

섹션별 세부 요약

1. 미들웨어 아키텍처 개요

  • hyperlane 프레임워크미들웨어 체인Unix 파이프라인 개념과 유사
  • auth_middleware, logging_middleware독립된 비동기 함수로 구성
  • Context 객체를 통해 요청 헤더, 사용자 정보, 처리 시간 등 공유 상태 관리

2. 주요 미들웨어 구현 예시

  • 인증 미들웨어 (auth_middleware)

- authorization 헤더 검증

- UserInfo 구조체를 Context에 저장 (예: ctx.set_metadata("user_info", user_info).await)

  • 로그 미들웨어 (logging_middleware)

- 요청 시간, 메서드, 클라이언트 IP, User-Agent 기록

- chrono 라이브러리 사용하여 시간 포맷팅 (chrono::Utc::now().format("%Y-%m-%d %H:%M:%S"))

  • 레이트 제한 미들웨어 (rate_limit_middleware)

- tokio::sync::RwLock> 사용

- 1분당 100 요청 제한 (60초 간격으로 카운트 리셋)

3. 요청/응답 처리 흐름

  • 요청 미들웨어 순서 (등록 순서 기반):
  1. request_preprocessing → 2. auth_middleware → 3. rate_limit_middleware
  2. cors_middleware → 5. business_logic_middleware
  • 응답 미들웨어 순서:
  1. response_postprocessing → 2. error_handling_middleware → 3. logging_middleware
  • Context 객체를 통해 메타데이터 (예: request_start 시간) 전달

4. 라우트 핸들러 예시

  • 사용자 프로필 라우트 (user_profile)

- user_info 메타데이터로 사용자 정보 추출

- UserProfile 구조체를 JSON으로 직렬화 (serde_json::to_string)

  • 관리자 대시보드 라우트 (admin_dashboard)

- user_info.roles로 역할 검증 ("admin" 포함 여부 체크)

- DashboardData 구조체를 응답으로 반환

5. 에러 처리 미들웨어

  • 400 이상 상태 코드에 대한 에러 로깅헤더 추가

- X-Error-Code 헤더에 상태 코드 기록

- X-Processing-Time 헤더에 처리 시간 기록 (duration.as_millis())

결론

  • hyperlane 프레임워크의 미들웨어 체인코드 중복 최소화처리 흐름 명확화를 통해 웹 개발 생산성 향상
  • Context 객체를 활용한 상태 공유모듈화된 미들웨어 설계가 핵심
  • 레이트 제한, 인증, 로깅 등 공통 기능을 모듈화하여 유지보수성 향상