#운영 가이드

버전: 0.33.0 최종 업데이트: 2026-03-15 적용 대상: ranvier (facade), ranvier-http, ranvier-inspector 카테고리: Deep Dives


Ranvier 애플리케이션을 위한 프로덕션 수준의 설정, 헬스 프로브, 구조화 로깅, 텔레메트리입니다.

#설정 시스템

  • RanvierConfig: 4계층 로딩 -- 기본값, ranvier.toml, 프로필 오버라이드, 환경 변수.
  • 프로필 오버라이드: RANVIER_PROFILE=prodranvier.toml[profile.prod] 섹션을 활성화합니다.
  • HttpIngress::config(): 서버 설정을 적용하고 설정에서 텔레메트리를 초기화합니다.

#헬스 & 준비 상태

엔드포인트 설명
/health 등록된 검사 결과를 포함한 전체 헬스 상태
/ready 준비 상태 프로브 -- 모든 검사가 통과하면 200 반환
/live 생존 프로브 -- 항상 200 반환 (프로세스가 살아있음)
  • health_endpoint(): 등록된 검사 결과를 포함한 JSON 헬스 상태.
  • readiness_liveness_default(): Kubernetes 스타일 /ready/live 프로브.
  • health_check(): 비동기 헬스 검사 등록 (DB 연결성, 외부 서비스 핑).

#요청 파이프라인

  • request_id_layer(): 모든 요청/응답에서 x-request-id 전파를 보장합니다.
  • AccessLogGuard: Transition 노드로서의 구조화된 HTTP 요청/응답 로깅.
  • 경로 수정: 민감한 엔드포인트(예: /auth/login)에 대한 AccessLogGuard.redact_paths().

#구조화 로깅

  • config.init_logging(): 설정에서 tracing 구독자를 초기화합니다.
  • 세 가지 형식: json (프로덕션, 기계 판독 가능), pretty (개발), compact.
  • ranvier.tomllogging.module_levels를 통한 모듈별 레벨 오버라이드.

#텔레메트리 & OTLP

  • TelemetryConfig: OTLP 엔드포인트, 프로토콜 (gRPC/HTTP), 서비스 이름, 샘플 비율.
  • init_telemetry(): otlp_endpointNone이면 no-op; 설정되면 TracerProvider를 자동 초기화.
  • Inspector /metrics: Grafana/AlertManager 통합을 위한 Prometheus 노출 형식.

#워크플로우

  1. 서버, 로깅, 텔레메트리, inspector 섹션이 포함된 ranvier.toml을 생성합니다.
  2. RanvierConfig::load()로 설정을 로드하고 config.init_logging()으로 로깅을 초기화합니다.
  3. HttpIngress::config()에 설정을 전달하여 서버 설정을 적용하고 텔레메트리를 시작합니다.
  4. Kubernetes 프로브를 위해 health_endpoint()readiness_liveness_default()를 추가합니다.
  5. 요청 추적 상관관계를 위해 request_id_layer()를 활성화합니다.
  6. 구조화된 요청 로깅을 위해 Axon 파이프라인에 AccessLogGuard를 추가합니다.
  7. 프로덕션 트레이싱을 위해 환경 변수를 통해 OTLP 엔드포인트를 설정합니다.

#주요 타입

타입 설명
RanvierConfig 4계층 로딩(기본값, 파일, 프로필, 환경 변수)을 갖춘 최상위 설정
TelemetryConfig OTLP 엔드포인트, 프로토콜, 서비스 이름, 샘플링 비율
AccessLogGuard 경로 수정 기능이 있는 구조화 HTTP 로깅용 Transition 노드
LogFormat 구조화 로깅 출력 형식: json, pretty, 또는 compact