시작하기
첫 번째 파이프라인을 만드세요.
Ranvier는 워크플로우를 타입 안전한 파이프라인으로 모델링합니다. 각 단계는 Transition이고, 이들을 체이닝하면 Axon이 됩니다. 이 가이드를 따라 30분 이내에 동작하는 파이프라인을 만들어 보세요.
1. 첫 번째 Axon
프로젝트를 생성하고, Transition을 작성한 다음, Axon으로 체이닝하여 실행합니다. 약 5분 소요.
let axon = Axon::simple::<String>("greeting")
.then(BuildGreeting);
let mut bus = Bus::new();
let result = axon.execute("World".into(), &(), &mut bus).await;2. 트랜지션 체이닝
.then()으로 단계를 조합합니다. 컴파일러가 빌드 타임에
단계 간 타입 안전성을 강제합니다.
let axon = Axon::simple::<String>("pipeline")
.then(ValidateInput)
.then(ProcessData)
.then(FormatOutput);3. 트랜지션 테스트
트랜지션은 일반 비동기 함수입니다. 직접 테스트하거나 execute()로 전체 파이프라인을 테스트하세요.
#[tokio::test]
async fn test_pipeline() {
let result = axon.execute(input, &(), &mut bus).await;
assert!(result.is_next());
}4. 커스텀 에러
thiserror + serde로 구조화된 도메인 에러를
정의합니다. 특정 에러 변형에 대해 정밀한 처리가 가능합니다.
#[derive(Error, Serialize, Deserialize)]
enum AppError {
#[error("찾을 수 없음: {0}")]
NotFound(String),
#[error("검증 실패: {0}")]
Validation(String),
}5. Bus 사용
요청별 컨텍스트(인증 토큰, 테넌트 ID, 상관관계 ID)를 타입 인덱스 기반 Bus로 파이프라인에 전달합니다.
bus.insert(TenantId::new("tenant-a"));
// 트랜지션 내부에서:
let tenant = bus.read::<TenantId>();6. 장애 복원력
지수 백오프 재시도, 데드 레터 큐(DLQ), 체크포인트/재개 워크플로우를 위한 영속성이 기본 제공됩니다.
axon.with_dlq_policy(DlqPolicy::RetryThenDlq {
max_attempts: 3,
backoff_ms: 100,
});학습 경로
빠른 시작
30분 안에 첫 번째 Axon 워크플로우를 구축하세요.
hello-worldtyped-state-treetesting-patternscustom-error-typesrouting-demo
HTTP 서비스
라우팅, 인증, 실시간 기능을 갖춘 프로덕션 HTTP API를 구축하세요.
routing-paramsflat-apisession-patternmultipart-uploadwebsocketsse-streamingopenapireference-todo-api
고급 패턴
장애 복원력, 영속성, 엔터프라이즈 패턴을 마스터하세요.
order-processingretry-dlqstate-persistencemultitenancyllm-content-moderationreference-ecommerce-order
인증 & 보안
Guard 노드, JWT 인증, 역할 기반 접근 제어로 API를 보호하세요.
guard-demoauth-jwt-rolesession-pattern
전체 가이드와 실행 가능한 코드: 시작하기 가이드