ranvier
처음 사용하는 개발자가 타입 안전한 의사결정 흐름을 만들고 기준 예제를 실행하며 HTTP 어댑터를 연결할 수 있는 핵심 Rust 모듈입니다.
버전
현재
0.43.0라인
0.42.x채널
안정배포 상태
배포됨버전 출처
ranvier/Cargo.toml [workspace.package.version]배포 결과물
ranvier-core crates.io 0.43.0 배포됨ranvier-macros crates.io 0.43.0 배포됨ranvier-runtime crates.io 0.43.0 배포됨ranvier-http crates.io 0.43.0 배포됨ranvier-std crates.io 0.43.0 배포됨ranvier-guard crates.io 0.43.0 배포됨ranvier-audit crates.io 0.43.0 배포됨ranvier-compliance crates.io 0.43.0 배포됨ranvier-inspector crates.io 0.43.0 배포됨ranvier-openapi crates.io 0.43.0 배포됨ranvier-test crates.io 0.43.0 배포됨ranvier crates.io 0.43.0 배포됨현재 가능한 작업
- Axon/Transition/Outcome 계약, 명시적 Bus 주입, 무결 파이프라인용 `Never` 에러 타입으로 타입 안전한 의사결정 흐름을 구성할 수 있습니다. 12개 크레이트 전체를 다루는 69개 유지보수 예제 포함. `try_outcome!` 매크로로 `Result<T, E>`를 `Outcome`으로 변환하며 transition 내부 조기 반환을 지원하고, `Outcome::from_result()` / `Outcome::and_then()` / `Outcome::map_fault()` 콤비네이터로 함수형 합성이 가능합니다.
- 프로토콜-애그노스틱 코어 회로를 HTTP 인그레스 어댑터에 연결하고 동적 라우팅, 요청 추출, 라이프사이클 제어, 미들웨어 조합, 경로 단위 정책 override를 구성할 수 있습니다. `QueryParams`가 URI 쿼리 스트링에서 자동으로 Bus에 주입되며 `get_parsed::<T>()`로 타입 안전한 추출을 지원합니다. `RouteGroup`으로 공유 접두사 + Guard를 최대 2단계 중첩 스코핑하고, `post_json_out`으로 body 없는 POST→JSON 엔드포인트를 구성하며, `PageParams`/`Paginated<T>`로 자동 클램핑 내장 페이지네이션을 제공합니다.
- `ranvier-guard` 크레이트(15개 Guard: Cors, AccessLog, SecurityHeaders, IpFilter, RateLimit, Compression, RequestSizeLimit, RequestId, Auth, ContentType, Timeout, Idempotency + advanced feature: Decompression, ConditionalRequest, Redirect)로 파이프라인 우선 미들웨어를 적용할 수 있습니다 — `HttpIngress::guard()` 자동 와이어링, 경로별 `guards![]` 조합, `GuardIntegration` 트레이트로 Bus↔HTTP 브릿징, RateLimitGuard 버킷 TTL 기반 만료 버킷 지연 정리, TrustedProxies XFF 위조 방지(신뢰 프록시 체인 검증). `CorsGuard::permissive()`로 개발 환경에서 한 줄로 CORS를 구성할 수 있습니다.
- `ranvier-openapi`로 요청/응답 계약 기반 OpenAPI 문서와 Swagger UI를 생성할 수 있습니다. `post_typed::<T>()`는 schemars를 통해 요청 바디 JSON Schema를 자동 추출하고, 경로 파라미터(`:id`)를 OpenAPI 파라미터로 자동 문서화합니다.
- 확장된 MIME 지원(18종), ETag 기반 304 Not Modified, 디렉터리 인덱스, immutable cache 감지, 사전 압축 서빙(.br/.gz 우선), Range 요청 지원(206 Partial Content)으로 정적 디렉터리를 서빙하고 SPA fallback을 구성하며, feature-gated `TemplateResponse<T>`로 Askama HTML 템플릿을 렌더링할 수 있습니다.
- WebSocket/SSE 실시간 흐름을 처리하고 연결/세션 컨텍스트를 Bus에 주입할 수 있습니다.
- LLM-as-Transition 패턴으로 AI 분류/모더레이션 파이프라인을 구축하고 콘텐츠 정책을 적용할 수 있습니다.
- `TestApp/TestRequest/TestResponse`로 인-프로세스 HTTP 통합 테스트를 작성하고 `AxonTestKit`/`Timeline`으로 실행 경로를 단언할 수 있습니다.
- `ranvier-inspector`로 TraceStore 영속 저장(VecDeque 링 버퍼 + 설정 가능한 TTL), BearerAuth 인증(릴리스 빌드에서 미인증 Inspector 경고), AlertHook 알림, OTLP 연동을 구성할 수 있습니다.
- session/job/persistence 패턴을 실행하고 PersistenceStore와 compensation hook으로 장애 워크플로를 체크포인트에서 재개할 수 있습니다.
- cargo-semver-checks와 schematic diff/policy CLI 명령으로 API 호환성과 구조 드리프트를 검증할 수 있습니다.
- 내장 Inspector REST + WebSocket 서버로 노드별 메트릭(처리량, 레이턴시 백분위, 에러율) 수집, 페이로드 검사, DLQ 관리, 조건부 중단점, 정체 감지를 제공할 수 있습니다. DebugControl은 parking_lot::Mutex + AtomicBool/AtomicU8로 패닉 안전성을 보장합니다. 저장된 트레이스에서 실행 계보를 추출(`GET /api/v1/lineage/:trace_id`)하고 두 트레이스를 구조적으로 비교(`GET /api/v1/traces/diff?a=&b=`)하여 경로 분기, 결과 차이, 지연 시간 델타를 파악할 수 있습니다.
- `.with_input_schema::<T>()` 빌더 API 또는 `#[transition(schema)]` 매크로 속성으로 회로 노드에 JSON Schema를 등록할 수 있습니다. Inspector가 스키마 포함 라우트 메타데이터 제공(`GET /api/v1/routes`), 실행 중인 회로에 HTTP 요청 릴레이(`POST /api/v1/relay`), 스키마 기반 빈 템플릿/랜덤 샘플 생성(`POST /api/v1/routes/schema`, `POST /api/v1/routes/sample`)을 제공합니다.
- `RanvierConfig`(`ranvier.toml` + 환경변수 오버라이드 + 프로필 시스템)로 프로덕션 인프라를 구성하고 `init_logging()`(JSON/pretty/compact)으로 구조화 로깅을 초기화하며 `rustls` TLS를 선택적으로 활성화할 수 있습니다.
- RFC 7807 `ProblemDetail`/`IntoProblemDetail`로 표준 에러 응답을 반환하고, `Axon::then_with_retry()`(RetryPolicy 고정/지수 백오프)로 실패한 트랜지션을 재시도하며, `Axon::then_with_timeout()`으로 트랜지션 실행 시간을 제한하고, `Axon::catch_unwind()`로 트랜지션 패닉을 `Outcome::Fault`로 복구할 수 있습니다.
- criterion 마이크로벤치마크(Axon 레이턴시, Bus 연산, Transition 체인)와 Axum/Actix-web 비교 서버로 정량 성능 기준을 제공합니다.
- 세 개의 참조 애플리케이션으로 실제 패턴을 보여줍니다: Todo API(CRUD + JWT 인증), Chat Server(다중 방 WebSocket), E-commerce Order Pipeline(4단계 Saga 보상 + 감사 추적 + 다중 테넌시).
- `ranvier migrate --from 0.20 --to 0.25`로 버전 간 import 경로 교체, 크레이트 의존성 전환을 자동화할 수 있습니다. TOML 기반 마이그레이션 규칙(text_replace, rename_import, warn)과 --dry-run 모드를 제공합니다.
- Inspector `/metrics` Prometheus 포맷 메트릭 내보내기, TelemetryConfig으로 OTLP TracerProvider 자동 초기화, AccessLogGuard 경로 마스킹 HTTP 요청 로깅, PostgresAuditSink 해시 체인 감사 이벤트 영속 저장, FileAuditSink 로그 로테이션(BySize/ByDate/ByBoth 정책), OpenAPI SecurityScheme(bearerAuth) + ProblemDetail(RFC 7807) 에러 응답 자동 등록을 수행할 수 있습니다. `MerkleAuditSink`(feature-gated `merkle`)로 이벤트 배치 Merkle 트리를 구축하고, `MerkleProof` 포함 증명 생성/검증, `AnchorService` 트레이트로 외부 루트 앵커링을 지원합니다. `AuditLog<S>` Transition으로 Axon 체인에 감사 로깅을 합성하고(`AuditAction`/`AuditActor` 타입 이벤트, 논블로킹 sink 기록), cookbook/example/app-local helper를 통해 안전 동적 SQL `QueryBuilder` 패턴(`$N` 파라미터 바인딩, 컬럼명 검증, 선택적 필터, LIMIT/OFFSET 페이지네이션)을 적용할 수 있습니다.
- PHILOSOPHY.md('Opinionated Core, Flexible Edges' 원칙)를 통해 프레임워크 설계 철학을 이해하고 DESIGN_PRINCIPLES.md(Paradigm Test, Tower 분리, Opinionated Core 적용을 다루는 ADR 형식)로 아키텍처 결정 근거를 파악할 수 있습니다.
- Transition 기반(Bus 컨텍스트, Schematic 시각화) 또는 Tower 통합(AsyncAuthorizeRequest) 인증을 구현할 수 있으며, auth-comparison 가이드로 7개 항목 비교 표, 벤치마크, 결정 트리, 마이그레이션 경로를 참조할 수 있습니다.
- `Axon::then_fn()` 클로저 기반 Transition으로 인라인 파이프라인 단계를 정의하고, `post_typed::<T>()` / `put_typed::<T>()` / `patch_typed::<T>()`와 `Axon::typed::<In, E>()` 타입 입력 파이프라인으로 타입 안전한 HTTP 바디 주입을 수행할 수 있습니다 — JSON 자동 역직렬화 및 컴파일 타임 타입 보장. `post_json()` / `put_json()` / `patch_json()`으로 `JsonSchema` derive 없이 JSON 바디 역직렬화를 지원하며, `Axon::execute_simple()`로 `Res=()` 파이프라인의 `&()` 인자를 생략할 수 있습니다.
- `TransitionErrorContext`로 파이프라인 장애를 진단할 수 있습니다 — `Outcome::Fault` 시 파이프라인 이름, 트랜지션 라벨, 0-기반 단계 인덱스를 Bus에 자동 주입합니다.
- `ranvier-test` 크레이트로 간결한 파이프라인 테스트를 작성할 수 있습니다: `TestBus` 빌더, `TestAxon` 단일 호출 실행기, `assert_outcome_ok!` / `assert_outcome_err!` 어설션 매크로(선택적 값 검사 클로저 지원).
- `StreamingTransition` 트레이트로 단일 `Outcome` 대신 `Stream<Item>`을 생성하는 스트리밍 파이프라인을 구축할 수 있습니다. `StreamingAxon` 런타임 타입, `Axon::then_stream()` / `then_stream_with_timeout()` 터미널 빌더, `post_sse()` / `post_sse_typed()` SSE HTTP 엔드포인트, 스트림 타임아웃(init/idle/total), `TestAxon::run_stream()` + `assert_stream_items!` 테스트 지원, `#[streaming_transition]` 매크로로 보일러플레이트 없는 정의, `StreamingAxon::map_items()`로 per-item 스트림 변환(PII 필터링, 토큰 카운팅, 포맷 변환).
현재 제한 사항
현재 제한 사항이 없습니다.
제품 경계
- role/tenant header의 토큰/클레임 검증 매핑은 게이트웨이/배포 인프라 측 통합이 필요합니다.
deployment-gateway
검증 명령
워크스페이스 예제 빌드 확인 통과
cargo check --workspace타입 흐름 예제 실행 확인 통과
cargo run -p typed-state-treeGuard 크레이트 테스트 확인 (15개 Guard, advanced feature 포함) 통과
cargo run -p routing-params-demoOpenAPI 생성기 회귀 테스트 확인 통과
cargo test -p ranvier-httpOpenAPI 데모 컴파일 확인 통과
cargo test -p ranvier-http --test test_app_health정적 서빙/SPA fallback 회귀 테스트 확인 통과
cargo test -p ranvier-http --features validation정적 SPA 데모 컴파일 확인 통과
cargo run -p ranvier-http --example validation_struct_level --features validationWebSocket ingress 업그레이드/이벤트 브리지 테스트 확인 통과
cargo test -p ranvier-guard --features advancedWebSocket ingress 데모 컴파일 확인 통과
cargo test -p ranvier-openapiInspector TraceStore + BearerAuth 테스트 확인 통과
cargo check -p openapi-demo워크스페이스 전체 테스트 스윕 확인 통과
cargo test -p ranvier-http예제 회귀 스모크(M119) 확인 통과
cargo check -p static-spa-demoInspector quick-view 스모크 확인 통과
cargo test -p ranvier-httpSchematic diff/policy 스모크 확인 통과
cargo check -p websocket-ingress-demoFullstack embedded static 스모크 확인 통과
cargo test -p ranvier-inspectorM132 ecosystem reference 조합 스모크 확인 통과
cargo test --workspaceSession 패턴 예제 컴파일 확인 통과
./scripts/m119_examples_smoke.ps1Inspector 메트릭 수집 + stall 감지 테스트 확인 통과
./scripts/m131_inspector_quickview_smoke.ps1Inspector 조건부 중단점 + 페이로드 캡처 테스트 확인 통과
./scripts/m131_schematic_diff_policy_smoke.ps1Fullstack embedded static smoke 통과
./scripts/m131_fullstack_embedded_smoke.ps1Runtime timeline integration assertion 통과
cargo test -p ranvier-runtime timeline_assertion_works_in_integration_testM132 SeaORM ecosystem reference run 통과
cargo run -p ecosystem-seaorm-demoM132 Diesel ecosystem reference run 통과
cargo run -p ecosystem-diesel-demoM132 Redis ecosystem reference run 통과
cargo run -p ecosystem-redis-demoM132 NATS ecosystem reference run 통과
cargo run -p ecosystem-nats-demoM132 Meilisearch ecosystem reference run 통과
cargo run -p ecosystem-meilisearch-demoSession pattern example compile 통과
cargo check -p session-patternInspector metrics + stall detection tests 통과
cargo test -p ranvier-inspector metrics stallInspector conditional breakpoint + payload capture tests 통과
cargo test -p ranvier-inspector breakpoint payloadGuard demo compile (legacy CorsGuard, RateLimit, SecurityHeaders, IpFilter) 통과
cargo check -p guard-demoGuard integration demo compile (12 Guards: 7 global + 3 per-route) 통과
cargo check -p guard-integration-demoAuth JWT role-based demo compile (IamVerifier, IamPolicy, with_iam) 통과
cargo check -p auth-jwt-role-demo참고 문서
ranvier/README.md