예제
예제로 배우기.
핵심 개념, HTTP 라우팅, 인증, 영속성, 관측성, 프로토콜 어댑터를 다루는 분류별 예제를 탐색하세요. 각 카드는 GitHub 리포지토리의 전체 소스로 연결됩니다.
학습 경로
초급에서 고급까지 단계별 가이드를 따라가세요.
빠른 시작
초급30분 안에 첫 번째 Axon 워크플로우를 구축하세요.
HTTP 서비스
중급라우팅, 인증, 실시간 기능을 갖춘 프로덕션 HTTP API를 구축하세요.
고급 패턴
고급장애 복원력, 영속성, 엔터프라이즈 패턴을 마스터하세요.
거버넌스와 풀스택
고급명시적 요청 거버넌스를 적용하고 유지되는 풀스택 레퍼런스를 연결하세요.
공식 예제 트랙
공식 학습 순서입니다. Hello World에서 시작해 CRUD와 워크플로를 거쳐 bridge/reference surface로 이동합니다.
Hello World
최소 Flat API 예제 — 트랜지션을 체이닝하여 인사말 생성 및 변환.
cargo run -p hello-world
- server startup log
- simple greeting response
#[transition]
async fn greet(input: String) -> Outcome<String, String> {
Outcome::Next(format!("Hello, {input}!"))
}레퍼런스 Todo API
JWT 인증, Bus 의존성 주입, HTTP 라우팅, 컬렉션 기반 테스트를 갖춘 완전한 CRUD 애플리케이션.
cargo run -p reference-todo-api
- POST /login
- GET/POST/PUT/DELETE /todos
// Single-transition Axon circuits per endpoint
POST /login -> [login] -> JWT token
GET /todos -> [list_todos] -> Vec<Todo>
POST /todos -> [create_todo] -> Todo
PUT /todos/:id -> [update_todo] -> Todo
DELETE /todos/:id -> [delete_todo] -> { deleted }주문 처리 워크플로우
도메인 주도 워크플로우: 검증, 결제, 재고 예약, 배송 처리.
cargo run -p order-processing-demo
- validation -> inventory -> payment -> shipping flow
- success and failure-path logs
Axon::new("order")
.then(validate_order)
.then(process_payment)
.then(reserve_inventory)
.then(arrange_shipping)브리지 & 레퍼런스
공식 트랙 다음 단계의 관리자형 backend와 public-only reference app을 여기서 이어서 봅니다.
관리자형 CRUD 데모
브리지 예제: JWT 로그인, SQLite 기반 관리자형 CRUD, 페이지네이션/검색, OpenAPI를 하나로 묶은 중간 규모 백엔드.
cargo run -p admin-crud-demo
- JWT login
- users CRUD
- OpenAPI JSON
- Swagger UI parity
Ranvier::http()
.post_typed_json_out("/login", login)
.get_json_out("/users", list_users)
.post_typed_json_out("/users", create_user)
.put_typed_json_out("/users/:id", update_user)
.delete_json_out("/users/:id", delete_user)레퍼런스 풀스택 관리자 앱
Ranvier 백엔드, SvelteKit 프론트엔드, JWT 로그인, 대시보드, 사용자 관리를 포함한 public-only 풀스택 레퍼런스 앱.
cargo run -p reference-fullstack-admin cd examples/reference-fullstack-admin/frontend && npm install && npm run dev
- backend login/dashboard/users surface
- frontend login/dashboard/users surface
Ranvier::http()
.guard(CorsGuard::<AppState>::permissive())
.post_typed_json_out("/login", login)
.get_json_out("/dashboard", dashboard)
.get_json_out("/users", list_users)레퍼런스 이커머스 주문
보상 처리, 감사 추적, 멀티테넌시, RFC 7807 에러를 갖춘 완전한 Saga 파이프라인.
cargo run -p reference-ecommerce-order
- saga compensation flow
- order reference app surface
// Saga: CreateOrder → ProcessPayment → ReserveInventory → ScheduleShipping
// ↓ (comp) ↓ (comp)
// RefundPayment ReleaseInventory레퍼런스 채팅 서버
canonical WebSocket 레퍼런스: JWT 인증, REST + WS 하이브리드 라우팅, health/readiness probe, graceful shutdown을 갖춘 멀티룸 채팅.
cargo run -p reference-chat-server
- health/ready/live probes
- unauthenticated websocket auth_failed frame
- authenticated join/history/message websocket flow
거버넌스 & 운영성
OpenAPI 표면과는 별도로, 구조화 에러, 감사 로그, 가드 기반 관측성을 한 서비스에 묶은 운영성 예제를 봅니다.
요청 거버넌스 데모
JWT 인증, 정책 검사, 감사 로그, SQLite 영속성, RFC 7807 스타일 에러를 결합한 횡단 관심사 백엔드 예제.
cargo run -p request-governance-demo
- 403 application/problem+json on insufficient-role approval
- 200 on approver approval
- audit event writes
Ranvier::http()
.post_typed_json_out("/login", login)
.post_typed_json_out("/requests", create_request)
.get_with_error("/requests/:id", get_request, governance_error_response)
.post_with_error("/requests/:id/approve", approve_request, governance_error_response)전체 예제
17개 예제가 현재 필터에 일치합니다.
Hello World
최소 Flat API 예제 — 트랜지션을 체이닝하여 인사말 생성 및 변환.
cargo run -p hello-world
- server startup log
- simple greeting response
#[transition]
async fn greet(input: String) -> Outcome<String, String> {
Outcome::Next(format!("Hello, {input}!"))
}타입 안전 상태 트리
Axon, Transition, Outcome을 사용한 타입 안전 의사결정 흐름.
let flow = Axon::new("flow")
.then(validate)
.then(process);기본 스케매틱
디버깅 및 문서화를 위한 스케매틱 추출을 통한 Axon 흐름 시각화.
주문 처리 워크플로우
도메인 주도 워크플로우: 검증, 결제, 재고 예약, 배송 처리.
cargo run -p order-processing-demo
- validation -> inventory -> payment -> shipping flow
- success and failure-path logs
Axon::new("order")
.then(validate_order)
.then(process_payment)
.then(reserve_inventory)
.then(arrange_shipping)Bus 접근 제어 시스템
@transition bus 속성을 통한 선언적 허용/거부 접근 제어.
#[transition(bus_allow = "db,cache")]
async fn fetch(input: Req) -> Outcome<Resp, String> { .. }Outcome 변형
5가지 Outcome 변형: Next(선형), Fault(에러), Branch(조건부), Jump(루프), Emit(사이드이펙트).
// Outcome<T, E> — control flow as data
Outcome::Next(value) // linear progression
Outcome::Fault(err) // error path
Outcome::Branch("name", v) // conditional routing
Outcome::Jump("node", v) // goto / loop
Outcome::Emit(event) // side-effect event타입 안전 JSON API
get_json_out, post_typed_json_out, BusHttpExt, CorsGuard::permissive()를 사용하는 타입 안전 JSON 엔드포인트.
Ranvier::http()
.get_json_out("/items", list_items_axon)
.post_typed_json_out::<CreateItem, _, _>("/items", create_item_axon)
.delete_json_out("/items/:id", delete_item_axon)관리자형 CRUD 데모
브리지 예제: JWT 로그인, SQLite 기반 관리자형 CRUD, 페이지네이션/검색, OpenAPI를 하나로 묶은 중간 규모 백엔드.
cargo run -p admin-crud-demo
- JWT login
- users CRUD
- OpenAPI JSON
- Swagger UI parity
Ranvier::http()
.post_typed_json_out("/login", login)
.get_json_out("/users", list_users)
.post_typed_json_out("/users", create_user)
.put_typed_json_out("/users/:id", update_user)
.delete_json_out("/users/:id", delete_user)장애 복구 & 영속성
워크플로우 장애 복구, 체크포인팅, 보상 훅.
Axon::new("resilient")
.then(step_a)
.then(step_b)
.with_persistence(store)
.with_compensation(rollback);Traced 래퍼
Traced 래퍼와 ConnectionBus를 사용한 트랜지션의 자동 스팬 생성.
테스팅 패턴
Transition 및 Axon 체인을 위한 단위 및 통합 테스트 전략.
재시도 & 데드레터 큐
지수 백오프를 갖춘 DLQ 재시도, 타임아웃 패턴, 서킷 브레이커.
let axon = Axon::new("payment")
.then(gateway)
.with_dlq_policy(DlqPolicy::RetryThenDlq {
max_attempts: 5,
backoff_ms: 100,
})
.with_dlq_sink(dlq);요청 거버넌스 데모
JWT 인증, 정책 검사, 감사 로그, SQLite 영속성, RFC 7807 스타일 에러를 결합한 횡단 관심사 백엔드 예제.
cargo run -p request-governance-demo
- 403 application/problem+json on insufficient-role approval
- 200 on approver approval
- audit event writes
Ranvier::http()
.post_typed_json_out("/login", login)
.post_typed_json_out("/requests", create_request)
.get_with_error("/requests/:id", get_request, governance_error_response)
.post_with_error("/requests/:id/approve", approve_request, governance_error_response)레퍼런스 이커머스 주문
보상 처리, 감사 추적, 멀티테넌시, RFC 7807 에러를 갖춘 완전한 Saga 파이프라인.
cargo run -p reference-ecommerce-order
- saga compensation flow
- order reference app surface
// Saga: CreateOrder → ProcessPayment → ReserveInventory → ScheduleShipping
// ↓ (comp) ↓ (comp)
// RefundPayment ReleaseInventory레퍼런스 채팅 서버
canonical WebSocket 레퍼런스: JWT 인증, REST + WS 하이브리드 라우팅, health/readiness probe, graceful shutdown을 갖춘 멀티룸 채팅.
cargo run -p reference-chat-server
- health/ready/live probes
- unauthenticated websocket auth_failed frame
- authenticated join/history/message websocket flow
레퍼런스 풀스택 관리자 앱
Ranvier 백엔드, SvelteKit 프론트엔드, JWT 로그인, 대시보드, 사용자 관리를 포함한 public-only 풀스택 레퍼런스 앱.
cargo run -p reference-fullstack-admin cd examples/reference-fullstack-admin/frontend && npm install && npm run dev
- backend login/dashboard/users surface
- frontend login/dashboard/users surface
Ranvier::http()
.guard(CorsGuard::<AppState>::permissive())
.post_typed_json_out("/login", login)
.get_json_out("/dashboard", dashboard)
.get_json_out("/users", list_users)레퍼런스 Todo API
JWT 인증, Bus 의존성 주입, HTTP 라우팅, 컬렉션 기반 테스트를 갖춘 완전한 CRUD 애플리케이션.
cargo run -p reference-todo-api
- POST /login
- GET/POST/PUT/DELETE /todos
// Single-transition Axon circuits per endpoint
POST /login -> [login] -> JWT token
GET /todos -> [list_todos] -> Vec<Todo>
POST /todos -> [create_todo] -> Todo
PUT /todos/:id -> [update_todo] -> Todo
DELETE /todos/:id -> [delete_todo] -> { deleted }cargo run -p <package>로 실행하세요.