필수 readiness와 선택 capability를 분리하기
프로세스가 살아 있다는 사실, 핵심 검색 요청을 처리할 준비가 됐다는 사실, 선택 기능이 모두 정상이라는 사실은 서로 다릅니다. 하나의 ready 값에 전부 넣으면 선택 모델 장애가 전체 재시작으로 이어지고, 핵심 DB 장애를 liveness가 가립니다.
목차
필수 readiness와 선택 capability를 분리하기
프로세스가 살아 있다는 사실, 핵심 검색 요청을 처리할 준비가 됐다는 사실, 선택 기능이 모두 정상이라는 사실은 서로 다릅니다. 하나의 ready 값에 전부 넣으면 선택 모델 장애가 전체 재시작으로 이어지고, 핵심 DB 장애를 liveness가 가립니다.
세 가지 상태
liveness: 프로세스가 요청을 받을 수 있는가readiness: 제품의 필수 경로를 안전하게 처리할 수 있는가capability: 특정 DB·모델·push·scheduler 기능이 현재 동작하는가
Python 검색 backend의 /health/ready는 검색에 필수인 DB와 임베딩 두 게이트만 판정합니다. /health/capabilities는 도메인별 DB, 텍스트·Vision 모델, push, scheduler를 독립 항목으로 확인합니다. 선택 항목이 내려가도 필수 게이트가 살아 있으면 HTTP 200과 degraded: true를 반환합니다.
응답을 안전하게 만들기
상태 응답에는 ok, reachable, configured, model_loaded, running, job_count처럼 운영 판단에 필요한 최소 필드만 둡니다. DSN, 내부 endpoint, token, provider 오류 본문과 사용자 원문은 health 응답에 넣지 않습니다. 느린 DB·모델 probe는 thread pool과 timeout으로 감싸 이벤트 루프를 막지 않게 합니다.
운영자와 사용자에게 주는 의미
운영자는 not_ready이면 필수 검색 경로를 복구하고, ready + degraded이면 영향을 받는 선택 기능만 확인할 수 있습니다. 사용자 화면은 모든 capability가 정상인지 기다리기보다 실제 요청이 사용하는 기능의 오류·재시도·대체 행동을 보여줘야 합니다. 상태 숫자 하나를 제품 성공으로 해석하지 않고, 기능별 영향 범위와 복구 주체를 함께 기록합니다.
이 글에서 만나는 용어
infra 카테고리의 다른 글
카테고리 전체 보기 →관련 글
Compose readiness와 부분 롤백의 경계
컨테이너가 running이어도 DB 연결·필수 테이블·내부 의존성이 준비되지 않았을 수 있습니다. readiness는 사용자 요청을 받을 수 있는 상태를, liveness는 프로세스가 살아 있는지를 나타내야 합니다.
Release를 Smoke와 Rollback 증거로 닫기
이미지가 만들어졌다는 사실은 사용자가 정상 경로를 사용할 수 있다는 증거가 아닙니다. 검사한 commit과 실행 image를 묶고, health 뒤에 실제 DB를 읽는 smoke를 실행해야 합니다.
Tauri 정적 앱의 서버 capability 경계
Tauri의 output: export 빌드는 Next.js 서버 route와 redirect를 포함하지 않는다. 웹과 같은 코드를 공유한다는 사실이 같은 실행 능력을 보장하지 않는다.
Docker Compose 패턴
단일 호스트에서 여러 컨테이너 (웹 · DB · 캐시 · 큐) 를 함께 띄울 때 가장 가벼운 길이 Compose. YAML 한 파일로 의존 · 네트워크 · 볼륨 · 헬스체크를 묶음. 본격 오케스트레이터가 아니라는 점이 강점이자 한계. 이 글은 Compose 의 v1 vs v2 차이 · compose.yaml 핵심 키 ·…