#배포 가이드 (Deep Dive)

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


Ranvier 프로덕션 배포를 위한 Docker 멀티 스테이지 빌드, Kubernetes 매니페스트, 배포 패턴을 다룹니다.

#Docker 멀티 스테이지 빌드

스테이지 설명
Builder rust:1.93-bookworm 기반, cargo-chef로 의존성 캐싱
Runtime debian:bookworm-slim 기반, 비루트 사용자 및 HEALTHCHECK 적용

의존성 캐싱: Cargo.toml/Cargo.lock 변경 시에만 재빌드합니다.


#Kubernetes 매니페스트

리소스 설명
Deployment 준비 상태/생존/시작 프로브, Prometheus 어노테이션 포함
Service ClusterIP, http (80→3000) 및 inspector (3001) 포트 노출
ConfigMap ranvier.toml (서버, 로깅, inspector, 텔레메트리 섹션)
HPA CPU/메모리 기반 자동 스케일링, 스케일 업/다운 정책 포함

#프로덕션 설정

  • 프로필 활성화: RANVIER_PROFILE=prod 설정 시 [profile.prod] 오버라이드가 적용됩니다.
  • 시크릿: 환경 변수로 주입합니다 (RANVIER_TELEMETRY__OTLP_ENDPOINT).
  • 볼륨 마운트: ConfigMap을 /app/ranvier.toml로 마운트하여 파일 기반 설정을 제공합니다.

#헬스 프로브

엔드포인트 동작
/health 등록된 검사 결과를 포함하는 전체 헬스 상태
/ready 준비 상태 프로브 -- 모든 검사 통과 시 200 반환
/live 생존 프로브 -- 항상 200 반환 (프로세스 생존 확인)
시작 프로브 애플리케이션 워밍업 대기를 위한 초기 지연

#워크플로우

  1. Dockerfile.example.dockerignore.example을 프로젝트 루트에 복사합니다.
  2. Docker 이미지를 빌드합니다: docker build -t my-ranvier-app .
  3. Kubernetes 네임스페이스를 생성하고 ranvier.toml이 포함된 ConfigMap을 적용합니다.
  4. 클러스터에 Deployment, Service, HPA 매니페스트를 적용합니다.
  5. Pod 어노테이션을 통해 Prometheus 스크래핑을 설정합니다.
  6. 분산 트레이싱을 위한 OTLP 엔드포인트를 설정합니다 (Jaeger, Tempo, Datadog).
  7. /health, /ready, /live 엔드포인트와 Inspector /metrics로 모니터링합니다.

#주요 아티팩트

아티팩트 설명
Dockerfile.example 멀티 스테이지 Docker 빌드 (의존성 캐싱, 비루트 런타임)
deployment.yaml Kubernetes Deployment (헬스 프로브, Prometheus 어노테이션)
service.yaml ClusterIP Service, HTTP 및 Inspector 포트 노출
configmap.yaml ConfigMap, 프로덕션용 ranvier.toml 포함
hpa.yaml HorizontalPodAutoscaler, CPU/메모리 기반 스케일링