한선씨 게이트웨이 OOB 수정 + 게이트웨이 규칙 영속화
개요
design.crowny.org 리디렉트 루프 대응 중 발생한 게이트웨이 장애의 근본원인(한선씨 게이트웨이 OOB wedge)을 그림자 포트에서 진단·수정하고, "게이트웨이 규칙이 크라우니코드에 저장 안 됨" 문제를 규칙 추출·영속화로 고도화.
라이브(JS 게이트웨이)는 무접촉, 한선씨 게이트웨이 정본화는 정해진 컷오버+승인 절차로 별도.
근본원인 (한선씨 게이트웨이 OOB wedge)
통합서버시작이 요청별 메모리복원(_힙마커)으로 배열힙 회수. 라우트맵은 마커 이전 로드(보호)되나 정적맵캐시는 첫 정적요청 시 lazy 로드 → 마커 이후 할당 → 매 요청 freed.
- 다음 요청에서
_정적조회(스텝3 트리플 루프)가 손상된 캐시 길이로 런어웨이 → OOB(인덱스 450+/길이 17, PC 14127) 100회 누적 → VM abort → 전역 503 wedge.
수정 (그림자 검증)
한선게이트웨이/게이트웨이통합.한선: 통합서버시작에서 _정적맵확보()를 메모리마커() 이전 eager 호출 → 캐시를 회수 구역 밖에 둠(근본수정).
pkg/libs/게이트웨이SPA정적코어.한선: _정적조회 루프 i + 2 < n 그리고 i < 30000 (트리플 over-read 방지 + 런어웨이 하드캡, 방어).
- 검증: 그림자 8081 재컴파일 기동 → 부팅 eager 로드 확인, 정적/프록시 200, 50요청 혼합 무크래시, OOB 0.
게이트웨이 규칙 영속화 (고도화)
한선게이트웨이/게이트웨이규칙추출.한선: gateway.yaml(단일원본) → 게이트웨이규칙.psv (도메인|업스트림|타입) 207 규칙 추출·저장. 크라우니코드가 게이트웨이 라우팅을 규칙으로 보유 → 규칙기반 재현/검증 토대.
라이브 상태 (무접촉)
- 라이브 8080 = 정본 JS(
node bin/cli.js, supervisor org.crowny.gateway→start.sh). design 루프는 gateway.yaml httpOnly: true로 이미 해결. 전 도메인 200.
- 한선씨 게이트웨이 정본화는
한선게이트웨이/게이트웨이기동.sh go(컷오버 단계3, 레거시 종료 후)로 사용자 승인 시 진행.
관련 파일
- 수정:
한선게이트웨이/게이트웨이통합.한선, pkg/libs/게이트웨이SPA정적코어.한선
- 신규:
한선게이트웨이/게이트웨이규칙추출.한선, 게이트웨이규칙.psv
- 메모리: feedback_gateway_js_no_sighup
잔여
- 한선씨 게이트웨이 정본화 컷오버(승인+게이트웨이기동.sh), 한선씨 게이트웨이의 design 라우팅 그림자 404 원인(라이브와 라우트 일치 점검), 셀코어 룰객체(룰생성) 변환은 후속.
2차 — 연계현황·표준화·규칙선언·자동화 + 컷오버 준비 (병렬)
- #2 design 라우팅 404: eager-load 수정으로 해소(그림자 200). 별도 버그 아님.
- #3 셀코어 룰:
게이트웨이셀코어룰.한선로 207 라우트→셀코어 룰객체(룰생성/조건/변경) 변환·검증(design→8729 매칭). 게이트웨이셀코어룰.dat+게이트웨이룰목록.psv.
- 연계현황: 라이브 JS 안정, stunnel/admin, 라우트200↔규칙213↔셀코어209(별칭), 백엔드 표본 정상, 공개 IPv4전용(컷오버 TLS 안전).
- 표준화+규칙선언:
게이트웨이운영표준.md — 정본 토폴로지·선언규칙6·런북·자동화·백로그.
- 자동화:
게이트웨이고도화.sh {규칙동기화|연계현황|그림자검증|all} — gateway.yaml→규칙.psv 자동동기(213), 연계 스냅샷, 한선씨 그림자 OOB검증(40요청 무크래시).
- #1 컷오버: 준비완료(한선씨 OOB수정+그림자검증,
start.sh.한선씨후보, 공개 IPv4전용 안전). 라이브 84도메인 스왑은 명시 승인 필요(자동승인 차단). 승인 시: cp 후보→start.sh + kickstart + 검증 + 실패시 롤백(start.sh.bak-JS-).
3차 — 한선씨 게이트웨이 라이브 컷오버 완료 (2026-06-15, 승인)
- JS→한선씨 컷오버 완료. 8080=한선씨(OOB수정본),
org.crowny.gateway KeepAlive 직접 소유·감독(PID 일치). 레거시 JS 퇴역.
- start.sh: 컴파일먼저→조건부컴파일(소스변경시만, 크래시복구~2s)→고아정리→exec 한선씨 foreground. 롤백=start.sh.bak-JS-.
- 검증: 광역 16/17(church 503=백엔드다운), 공개 TLS(stunnel 8443) design/tiomta/academy 200, OOB 0, 안정.
- 교훈: kickstart는 한선씨 컴파일(~20s)로 전환이 느려 검증창 부족→오판 롤백 가능. 조건부컴파일+긴 검증창으로 해결. 고아 프로세스가 포트 점유 시 supervisor가 못 살림→고아 정리 후 kickstart로 직접소유 확보.