#경계 맵 — 어디서 엄격하고, 어디서 유연해야 하는지 알기

버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier (모든 크레이트) 카테고리: 철학 & 아키텍처


"코어"(독단적)와 "에지"(유연한) 사이의 경계를 이해하는 것은 효과적인 Ranvier 사용에 매우 중요합니다.

#코어 영역 (독단적 — Ranvier 패러다임 필수)

다음은 반드시 Transition/Outcome/Bus/Schematic을 사용해야 합니다:

  • 비즈니스 로직: 시각화, 조합, 테스트 용이성을 위해 #[transition] 사용
  • 데이터 흐름: 타입 안전 오류 전파를 위해 Outcome<T, E> 반환
  • 상태 공유: 명시적 의존성을 위해 Bus에 저장
  • 파이프라인 조합: Schematic 그래프 생성을 위해 Axon::pipe(), .parallel() 사용
  • 도메인 오류: 명확한 실패 모드를 위해 사용자 정의 오류 열거형 정의

#에지 영역 (유연 — 어떤 Rust 도구든 사용 가능)

다음은 어떤 Rust 라이브러리나 패턴이든 사용할 수 있습니다:

  • HTTP 서버: Hyper, Tower, Axum, actix-web, warp
  • 데이터베이스: sqlx, diesel, sea-orm, mongodb, postgres
  • 캐싱: redis, memcached, moka, dashmap
  • 직렬화: serde_json, bincode, msgpack, protobuf
  • 메트릭: prometheus, opentelemetry, statsd
  • 트레이싱: tracing, log, slog, env_logger
  • 비동기 런타임: tokio, async-std, smol (Ranvier는 런타임에 구애받지 않습니다)

#회색 지대 (상황에 따라 다름)

일부 영역은 어느 쪽이든 가능합니다. 필요에 따라 선택하세요:

#미들웨어 / 가드

접근 방식 적합한 경우
Transition 기반 새 프로젝트 — Schematic 시각화, 테스트 가능, 조합 가능
Tower 미들웨어 기존 Tower 앱 — 에코시스템 재사용, 팀 지식 활용

#오류 처리

  • Transition 내부: 항상 Outcome (#[transition]에서 필수)
  • Transition 외부: Result 사용 가능, 경계에서 변환

#상태 관리

  • 요청 범위 데이터 (인증, 테넌트): Bus (Schematic에서 시각화)
  • 전역 공유 리소스 (DB 풀, 설정): 프레임워크 상태 또는 Arc

#경험 법칙

  • 코어 (비즈니스 로직, 데이터 흐름, 조합) → Ranvier 패러다임
  • 에지 (인프라, I/O, 배포) → 어떤 Rust 도구든
  • 회색 지대 → 다음을 기준으로 선택: 시각화 필요성, 팀 지식, 마이그레이션 경로

#관련 문서