프로세스는 자기 자신을 재시작하지 않아
macOS의 launchd, Linux의 systemd, supervisord, Kubernetes 중 하나가 충돌 뒤 재시작을 소유하게 해. 서비스 코드가 스스로 재시작을 결정하면 상태와 책임이 꼬여. cwkPippa는 launchd 아래에서 돌고 운영자는 launchctl kickstart -k로 통제된 재시작을 요청해.
살아 있음과 준비됨을 나눠
liveness는 프로세스가 응답할 수 있으면 200을 내고, readiness는 Anthropic 연결과 DB 쓰기, MCP 서버 같은 의존성까지 준비됐을 때만 200을 내야 해. supervisor는 liveness를, 로드 밸런서는 readiness를 보게 해 잘못된 소비자가 장애 판단을 섞지 않도록 해.
자기 코드를 고치는 서비스는 차갑게 재시작해
cwkPippa는 에이전트가 백엔드 코드를 자주 편집하므로 Uvicorn --reload를 쓰지 않아. 자동 재적재는 파일이 반쯤 쓰인 순간을 잡아 충돌할 수 있어. 편집을 끝내고 저장한 뒤 launchd로 한 번 재시작하면 예측 가능하고 StatusBar에도 상태가 보여.
원칙: supervisor가 재시작하고 health가 liveness와 readiness를 구분해. 자기 편집 서비스에는 자동 재적재보다 통제된 차가운 재시작이 맞아.