소개

Ranvier는 Typed Decision Engine입니다.

Ranvier는 웹 프레임워크가 아닙니다. 실행 흐름을 숨기지 않고 구조를 검증 가능한 상태로 유지하는 실행 엔진 계층입니다. Rust 제어 흐름을 회로처럼 표현해, 읽고 점검할 수 있게 만듭니다.

Axon Schematic Outcome Ingress/Egress

실행은 숨기지 않습니다

Axon 체인은 의사결정 순서를 그대로 드러냅니다. 숨겨진 미들웨어 체인 없이 흐름이 코드에 그대로 남습니다.

구조는 점검 가능합니다

Schematic은 런타임을 실행하지 않고 구조를 추출합니다. diff, 검증, 시각화의 기준 데이터로 활용됩니다.

제어 흐름은 데이터입니다

Outcome은 분기, 점프, emit, fault를 데이터로 기록합니다. 어떤 경로를 탔는지 추적할 수 있도록 결과를 남깁니다.

핵심 계약

코어는 프로토콜 의미를 갖지 않습니다. HTTP는 어댑터 계층에서만 다룹니다.
Schematic은 실행 계층이 아닙니다. 읽기/검증/시각화만 담당합니다.
Flat API는 허용하되 복잡성을 숨기지 않도록 분리합니다.

리소스는 명시적으로

Ranvier는 전역 미들웨어 뒤에 상태를 숨기지 않습니다. 공유 리소스는 타입 기반 Bus나 리소스 번들로 연결하고, Transition이 필요한 시점에만 읽습니다.

Bus는 타입 기반이며 선택적으로 사용합니다. 자동 주입은 없습니다.
리소스는 Ingress 경계에서 명시적으로 연결됩니다.
Capability 규칙은 코어 계약을 바꾸지 않고도 계층적으로 추가할 수 있습니다.

Ingress / Egress 경계

Ingress는 요청을 입력 상태로 변환합니다.
Axon이 결정 흐름을 실행합니다.
Egress는 Outcome을 응답으로 변환합니다.

Schematic diff와 검증

Schematic은 정적 아티팩트입니다. 런타임 전에 CI에서 회로를 diff하고 검증할 수 있어 리팩터링 리스크를 줄일 수 있습니다.

신뢰 경계 & LLM

AI는 구조 제안을 할 수 있지만 런타임 로직을 임의로 바꾸지 않습니다. 모든 변경은 리뷰와 검증을 거쳐 반영됩니다.

모든 것을 자동으로 감춰주는 프레임워크를 찾는다면 Ranvier는 맞지 않습니다. 대신 실행을 읽고 검증 가능한 구조를 원한다면 Ranvier가 더 나은 선택입니다.
use ranvier::prelude::*;

let axon = Axon::simple::<anyhow::Error>("Hello")
    .then(Hello);

Ranvier::http()
    .bind("127.0.0.1:3000")
    .route("/", axon)
    .run(())
    .await?;
다음 경로: 첫 실행은 /ko/tutorial, 제품별 상세는 /ko/manual에서 확인하세요.