철학 / 왜 자유로운 바깥층인가?

통합하되 고립시키지 않는다

코어는 명확한 철학을 가지지만, Ranvier는 경계에서 Rust 생태계를 받아들입니다. "자유로운 바깥층"은 통합 지점에서 모든 Rust 라이브러리, 프레임워크, 패턴을 사용할 수 있음을 의미합니다.

1. 생태계 통합: 거인의 어깨 위에 서기

Ranvier가 모든 곳에서 패러다임을 강제한다면, 모든 도구의 "Ranvier 전용" 버전이 필요할 것입니다. 이것은 지속 불가능하며 Ranvier를 더 넓은 Rust 커뮤니티로부터 고립시킵니다.

HTTP: Hyper 1.0, Tower, actix-web, Axum, warp
데이터베이스: sqlx, diesel, sea-orm, mongodb
캐싱: redis, memcached, in-memory
메트릭: Prometheus, OpenTelemetry, statsd
추적: tracing, log, slog

이점

  • 기존 지식 재사용: 팀이 Tower를 알고 있다면, Tower 레이어 사용
  • 검증된 코드 활용: Tower의 CORS/Trace/Timeout은 프로덕션에서 검증됨
  • 최신 상태 유지: tower-http 새 버전이 나오면 즉시 업그레이드

2. 점진적 마이그레이션: X에서 Ranvier로 단계별로

"전부 아니면 전무" 프레임워크는 위험합니다. 프로덕션 앱을 처음부터 다시 작성하는 것은 비용이 많이 들고 위험합니다. Ranvier는 점진적 도입을 허용합니다.

1주차: 기존 Tower 레이어 유지, 한 핸들러를 Ranvier Transition으로 교체
2주차: 더 많은 핸들러 교체, Tower 인프라는 유지
3주차: Tower 미들웨어를 Transition으로 변환 시작 (원하는 경우)
결과: 프로덕션에서 검증된 점진적 마이그레이션, 필요시 롤백 가능

3. 사용자 자율성: 제약을 가장 잘 아는 것은 당신

프레임워크 작성자는 모든 사용 사례를 예측할 수 없습니다. 경직된 프레임워크는 필요가 "행복한 경로"에서 벗어날 때 우회 방법을 강요합니다.

Ranvier의 철학: 우리는 무엇(비즈니스 로직에 Transition 사용)에 대해서는 명확한 철학을 가지지만, 어떻게(HTTP 서버, DB, 배포 선택)에 대해서는 그렇지 않습니다.

HTTP 서버: ranvier-http(Hyper 기반) 사용 또는 Axum 앱에 통합
데이터베이스: DB 라이브러리(sqlx, diesel 등)를 사용하는 Transition 작성
배포: 바이너리, 컨테이너, Lambda로 배포 — Ranvier는 그저 Rust 코드
최적 지점: 중요한 곳(패러다임)에서는 명확한 철학, 그렇지 않은 곳(인프라)에서는 유연함
상세한 패턴과 마이그레이션 경로는 PHILOSOPHY.md — 왜 자유로운 바깥층인가?를 참조하세요.