---
status: FIVE_SERVICE_PROMOTED_ACTIVE_HTTP_SOCKET_SESSION_GATE_STAGED_DEFAULT_OFF
production_mode_activated: false
production_processes_restarted: false
current_continuity: false
---

# 승격 서비스 데이터 플레인 게이트

## 결과

AISFOR, AISTALK, AISFOR Group, AISMALL, PLAI Sharing에 `PROMOTED_ACTIVE` 전용 fail-closed 게이트를 추가했다. 기본 모드는 계속 `PRIMARY`이며 현재 production 프로세스에는 적용하거나 재시작하지 않았다.

승격 모드의 인스턴스는 다음 조건을 모두 확인하기 전까지 promotion health와 모든 서비스 요청에 503을 반환한다.

- Mongoose 연결 준비
- MongoDB `hello.setName`으로 replica set 확인
- 세션 서비스의 공유 세션 저장소 준비
- Socket.IO 서비스의 Mongo change-stream adapter 준비

2026-08-09 재점검에서 AISFOR·AISTALK가 HTTP 포트를 먼저 여는 동안 Socket.IO namespace 연결은 준비 전에도 들어올 수 있는 틈을 확인했다. 공통 promotion gate에 Socket.IO middleware를 추가하고 AISFOR, AISTALK, AISMALL 기본/RTC namespace, PLAI Sharing 진입점에 설치했다. 준비 전 연결은 `PROMOTED_ACTIVE_DATA_PLANE_NOT_READY`로 거부되고 replica set·세션·shared adapter 검증 뒤에만 열린다.

AISTALK와 AISFOR Group의 `connect-mongo`는 Mongoose와 별도 client를 만들기 때문에 단순한 boolean 대신 실제 `collectionP` 연결 완료를 기다린 뒤 승격 gate를 연다. 일반 `PRIMARY`와 `PASSIVE_STANDBY` 기본 동작은 바꾸지 않았다.

standalone Mongo, process-local 세션, process-local Socket.IO adapter 중 하나라도 남아 있으면 승격되지 않는다.

## AISMALL 세션

Redis가 없는 현재 환경에서도 승격 후보가 process-local `MemoryStore`로 잘못 열리지 않도록 했다. 일반 PRIMARY의 기존 fallback은 유지하지만, `PROMOTED_ACTIVE`에서는 Mongo replica set의 `mallSessions` collection을 공유 세션 저장소로 사용한다.

## 격리 장애 전환 검증

Windows Temp의 합성 3노드 MongoDB replica set에서 다음을 실제 실행했다.

1. 5개 서비스 승격 게이트가 replica set을 확인하고 열림
2. AISMALL 합성 세션 기록
3. elected primary 프로세스 종료
4. 다른 primary 선출 및 majority write 성공
5. 기존 세션 읽기와 touch 성공
6. 5개 서비스 승격 게이트 재검증 성공
7. 모든 mongod, loopback port, 임시 데이터 삭제

production DB를 읽거나 쓰지 않았고 DNS, 공개 트래픽, validator, transaction, operator signing을 변경하지 않았다.

2026-08-09 회귀시험은 다섯 서비스 모두 HTTP 준비 전 차단, Socket 준비 전 차단/검증 후 통과, standalone Mongo·누락 세션·누락 adapter 거부를 확인했다. 관련 entry/module 10개는 `node --check`를 통과했고 production process는 재시작하지 않았다.

## 남은 production 조건

이 단계는 승격 안전장치와 합성 장애 전환 증명이다. 실제 메인 서버 독립 서비스가 되려면 독립 PC의 authenticated Mongo members, production backup 격리 복구, 업로드 ciphertext 복제, stable HTTPS origins, 실제 클라이언트 검증 및 승인된 outage rehearsal이 남아 있다.

증거: `evidence/promoted-active-data-plane-gate-redacted.json`
