시작하기

첫 번째 파이프라인을 만드세요.

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()으로 단계를 조합합니다. 컴파일러가 단계 사이의 Next 타입 전달을 빌드 타임에 검사합니다.

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 사용

요청별 컨텍스트를 실행 단위의 타입 인덱스 기반 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,
});
타입 경계: Next/Fault는 Rust 타입을 유지합니다. Branch/Jump/Emit payload는 스키마로 검증하는 JSON이며, Bus 리소스의 존재와 권한도 런타임 경계입니다.

학습 경로

빠른 시작

30분 안에 첫 번째 Axon 워크플로우를 구축하세요.

hello-worldtyped-state-treebasic-schematicoutcome-variantstesting-patterns

HTTP 서비스

라우팅, 인증, 실시간 기능을 갖춘 프로덕션 HTTP API를 구축하세요.

typed-json-apireference-todo-apiadmin-crudreference-chat-server

고급 패턴

장애 복원력, 영속성, 엔터프라이즈 패턴을 마스터하세요.

order-processingbus-capabilitypersistenceretry-dlqreference-ecommerce-order

거버넌스와 풀스택

명시적 요청 거버넌스를 적용하고 유지되는 풀스택 레퍼런스를 연결하세요.

request-governance-demoreference-fullstack-admin
전체 가이드와 실행 가능한 코드: 시작하기 가이드