---
status: FOUR_SERVICE_SOCKET_MONGO_ADAPTER_STAGED_DEFAULT_OFF
adapter_version: 0.4.0
production_adapter_activated: false
production_mongo_changed: false
current_continuity: false
---

# Socket.IO Mongo cluster adapter staging

## 배경

현재 Redis server가 설치·실행되지 않고 AISFOR·AISTALK·AISMALL·PLAI Sharing의 Socket.IO는 process-local adapter를 사용한다. Redis를 즉시 production에 설치하는 대신 공식 `@socket.io/mongo-adapter` 0.4.0을 고정 dependency로 추가하고, MongoDB change stream 기반 shared bus를 default-OFF로 준비했다.

공식 adapter는 replica set 또는 sharded cluster의 change stream을 요구한다. 따라서 standalone Mongo에서 활성화하면 fail-closed하며 현재 production Mongo에는 적용되지 않는다.

## 활성 조건

- `PLAI_SOCKET_CLUSTER_ADAPTER=MONGO_CHANGE_STREAM`
- service mode가 `PASSIVE_STANDBY`가 아님
- Mongoose DB connection 준비
- Mongo `hello.setName` 존재
- 안전한 collection 이름
- TTL 30~3600초

조건이 없으면 기존 `MEMORY` adapter가 그대로 유지된다. 활성 조건이 잘못되면 in-memory로 조용히 downgrade하지 않고 오류로 종료하도록 연결했다.

## 적용 서비스

- AISFOR
- AISTALK
- AISMALL
- PLAI Sharing

AISFOR Group은 Socket.IO를 사용하지 않아 대상이 아니다.

## 격리 검증

Windows Temp의 합성 MongoDB 3노드 replica set과 두 Socket.IO server를 같은 TTL collection에 연결했다.

1. primary 장애 전 server-side broadcast 전달 성공
2. Mongo primary process 종료
3. 다른 primary 선출
4. change stream 재개 후 역방향 broadcast 전달 성공
5. 모든 adapter, Mongo client, mongod, port와 합성 데이터 제거

production adapter·Mongo index·traffic은 활성화하지 않았고 production process도 재시작하지 않았다.

## dependency 경고

설치 시 npm audit 요약은 AISFOR 8건, AISTALK 25건, AISMALL 16건, PLAI Sharing 0건을 보고했다. 이 숫자는 전체 project dependency graph 기준이며 이번 adapter가 원인이라고 단정하지 않는다. 네트워크 제한으로 상세 advisory 조회는 완료하지 못했고, breaking change 가능성이 있는 `npm audit fix` 또는 `--force`는 실행하지 않았다. production 전 별도 dependency security review가 필요하다.

## 남은 단계

- production backup/restore를 이용한 authenticated Mongo replica rehearsal
- service별 session store가 replica-set URI와 동일 secret을 사용하는지 검증
- AISMALL의 MemoryStore fallback 제거 또는 promoted-active 모드에서 fail-closed
- 실제 두 passive service instance의 client room/reconnect/ack test
- adapter event collection capacity와 TTL monitoring

증거: `evidence/socket-mongo-cluster-adapter-stage-redacted.json`
