크라우니 게이트웨이는 한선씨(크라우니어) 네이티브 단일 프로세스로 동작하는 리버스 프록시다. 런타임 npm 의존성 0(TLS는 stunnel 위임), 워커 단위 무중단, P2P 페일오버(베타), 자가치유 워치독을 기본 탑재했다.
게이트웨이가 라우팅하는 하위 서비스로 여기서 바로 이동한다. 목록은 생태계.psv 하나로 관리되어 어느 서비스에서든 같은 네비를 공유한다.
런타임 npm 의존성 없이 라우팅부터 페일오버까지 — TLS 종단은 stunnel에 위임한다.
C 런타임이나 별도 언어 의존 없이 크라우니어(한선씨) 자체로 컴파일된 단일 바이너리로 동작.
gateway.yaml 하나로 전 서비스 도메인·경로·업스트림·헤더를 선언. 라이브 실측 293 라우트 운용.
stunnel 종단으로 인증서 설정을 최소화. 8443 고정 포트에서 바로 HTTPS.
gateway.yaml에 도메인별 CORS·속도제한·방화벽 규칙을 스키마로 선언. WAF/방어 판정 코어는 라이브 배선 완료, CORS·RateLimit 라우팅 계층 배선은 진행 중.
업그레이드 헤더를 그대로 프록시해 실시간 채널·소켓 서비스를 무변형 지원.
정적 자산과 SPA 폴백 라우팅을 별도 웹서버 없이 게이트웨이가 직접 서빙.
CROWNY_TCP_REUSEPORT로 N개 워커가 동일 포트를 공유 — 워커 kill 시나리오에서 요청 유실 없음(느린 백엔드가 고사하는 경우는 워치독이 감지해 자가치유).
피어 하트비트·페일오버 프로토콜 구현 완료. 라이브 다중노드 배선은 로드맵(현재는 단일 노드 실측만 검증됨).
요청→프로세스→노드 순으로 원인을 좁혀가는 판정 코어. sysguard가 충돌·wedge를 감지해 스스로 복구.
단일 노드 내부는 감독-워커 구조, 노드 간에는 피어 메시 구조(베타).
라이브 검증: 2워커 REUSEPORT 무중단 — 워커 강제종료 중 30/30, 트래픽 버스트 20/20 요청 유실 없음.
과장 없이 — 우리가 앞선 축과, 상대가 나은 축을 함께 적는다.
| 축 | 크라우니 게이트웨이 | 일반 리버스 프록시(nginx류) |
|---|---|---|
| 설정 방식 | YAML 단일 파일 | conf.d 다중 파일 + include 체인 |
| 런타임 언어 | 한선씨(크라우니어) 네이티브 | C + 모듈별 별도 언어(Lua 등) |
| 외부 의존성 | 런타임 npm 0(TLS=stunnel) | OS 패키지·모듈 의존 |
| 헬스 판정 | 3진 상태(정상/의심/장애) | 이진 up/down |
| 다중 노드 페일오버 | P2P 피어 메시 내장 | 별도 LB/오케스트레이터 필요 |
| 무중단 재기동 | REUSEPORT N워커 롤링 | reload 지원(모듈별 편차) |
| 단일 프로세스 처리량nginx 우위 | 실측 84 RPS(단일 스레드, N워커 수평확장 대응) | 수만 RPS급(이벤트루프 다년 최적화) |
아키텍처가 다르면 동봉 바이너리 대신 자동 재빌드된다.
tar -xzf 게이트웨이Q-패키지.tar.gz cd 게이트웨이Q-패키지
bash Q설치.sh # 기본: GWQ_WORKERS=2 GWQ_PORT=8080
cp gateway.example.yaml gateway.yaml # 도메인/업스트림 라우트 선언 후 재기동
과장된 가격표 대신 실제 배포 형태로 안내한다.