11. 게이트웨이 생명주기 (Gateway Lifecycle)
본 장은 로컬 클라이언트의 HTTP/WSS 서버(게이트웨이)의 시작, 중지, 재시작에 대한 프로토콜 계약을 정의한다.
11.1. 게이트웨이 상태 머신
STOPPED → STARTING → RUNNING → STOPPING → STOPPED
↑
RESTARTING ─┘
| 상태 | 설명 |
|---|---|
STOPPED |
HTTP/WSS 서버 미기동. 모든 포트 미바인딩. |
STARTING |
서버 초기화 중. 포트 바인딩 시도. |
RUNNING |
서버 가동 중. 요청 수신 가능. |
STOPPING |
서버 종료 중. 신규 연결 거부, 기존 세션 정리. |
RESTARTING |
STOPPING → STARTING 연쇄 전이. 설정 변경 적용 등. |
11.2. 상태별 동작 규칙
STARTING: 신규 세션 초기화(§5.1) 및 로컬 세션 생성(§10.1.1) 요청을 수락하지 않는다 (MUST NOT). 헬스체크(§4.2)에는 응답할 수 있다 (MAY).
STOPPING: 신규 연결을 거부하고, 모든 활성 세션을 정리한다. 활성 세션에 대해 RAWP-DPS 1.0.1 §7.5.3의 종료 절차를 수행한 후, WSS 연결을 종료해야 한다 (MUST).
RESTARTING: STOPPING 완료 후 STARTING으로 전이한다. 재시작 전후로 세션은 보존되지 않는다.
11.3. 헬스체크 확장
§4.2의 GET /v1/health 응답에 게이트웨이 상태 필드를 추가한다:
{
"status": "String (필수, 'online', 'busy', 'error')",
"uptime": "Number (필수, 클라이언트 가동 초)",
"active_sessions": "Number (선택, 현재 유지 중인 세션 수)",
"gateway_state": "String (필수, 'STOPPED' | 'STARTING' | 'RUNNING' | 'STOPPING' | 'RESTARTING')"
}
gateway_state가 RUNNING이 아닌 상태에서 세션 초기화(§5.1)가 시도되면 503 Service Unavailable을 반환해야 한다 (MUST).