#Ranvier는 타입 기반 의사결정 엔진입니다
버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier (facade), ranvier-core, ranvier-runtime 카테고리: Philosophy & Architecture
웹 프레임워크가 아닙니다. 실행을 명시적이고, 검사 가능하며, 안전하게 리팩터링할 수 있도록 유지하는 구조적 레이어입니다. 여러분의 Rust 코드가 회로가 됩니다. Ranvier가 그 회로에 불을 켭니다.
#핵심 원칙
| 원칙 | 설명 |
|---|---|
| 실행은 명시적 | Axon 체인이 의사결정의 정확한 순서를 기술합니다. 숨겨진 미들웨어도, 암묵적 제어 흐름도 없습니다. |
| 구조는 검사 가능 | Schematic은 런타임을 실행하지 않고 노드와 엣지를 캡처합니다. diff, 검증, 시각화를 위한 산출물입니다. |
| 제어 흐름은 데이터 | Outcome은 분기, 점프, 방출, 장애를 명시적 결과로 모델링합니다. 추측 없이 의사결정을 감사하고 재생할 수 있습니다. |
#계약
- Core는 프로토콜에 무관합니다. HTTP는 어댑터 레이어에 존재합니다.
- Schematic은 런타임 로직을 실행하지 않습니다. 읽기/검증/시각화 전용입니다.
- 플랫 API는 허용되지만, 복잡성을 숨겨서는 안 됩니다. 격리합니다.
#Resources는 명시적으로 유지
Ranvier는 전역 미들웨어 뒤에 상태를 숨기지 않습니다. 공유 리소스는 타입이 지정된 Bus 또는 명시적 리소스 번들에 존재하며, 모든 Transition이 언제 읽을지를 선택합니다.
- Bus는 타입으로 인덱싱되며 선택적(opt-in)입니다. 암묵적 주입이 없습니다.
- Resources는 인그레스에서 연결되며, 런타임에 마법처럼 발견되지 않습니다.
- **기능 규칙(Capability rules)**은 핵심 계약을 변경하지 않고 레이어링할 수 있습니다.
#Ingress / Egress 경계
- Ingress는 프로토콜 요청을 초기 상태로 변환합니다.
- Axon은 타입이 지정된 Transition으로 의사결정 흐름을 실행합니다.
- Egress는 Outcome을 프로토콜 응답으로 매핑합니다.
#Schematic Diff 및 검증
Schematic은 정적 산출물입니다. 시스템을 실행하지 않고도 CI에서 회로를 diff하고 검증할 수 있습니다.
#신뢰 및 LLM 경계
AI는 구조를 제안할 수 있지만, 런타임 로직을 변경하지는 않습니다. 모든 변경은 명시적이고, 검토 가능하며, Schematic에 대해 검증됩니다.
#간단한 예제
use ranvier::prelude::*;
let axon = Axon::simple::<anyhow::Error>("Hello")
.then(Hello);
Ranvier::http()
.bind("127.0.0.1:3000")
.route("/", axon)
.run(())
.await?;배터리가 포함된 프레임워크를 찾고 있다면, Ranvier는 해당되지 않습니다. 런타임 로직이 가시적이고 검증 가능하게 유지되기를 원한다면, 올바른 곳에 오셨습니다.
#다음 단계
- 튜토리얼 — 첫 실행
- 철학 — Opinionated Core, Flexible Edges
- 설계 원칙 — 아키텍처 결정 기록