SOFTWARE
AlertCast
SSE 기반 실시간 알림 push 플랫폼. self-hosted로 서버를 운영하고, 단말 에이전트는 후속 단계에 통합 제공할 계획입니다.
Architecture
용도
업무시스템에서 사용자로 향하는 단방향 실시간 알림 채널. 시스템 공지·장애· 업무 이벤트의 즉시 통지가 1차 축이며, 비동기 작업 결과 회신처럼 응답 시점이 분리된 메시지도 같은 통로로 운영합니다.
확장성
실시간 push의 1차 제약은 단말당 장기 TCP 연결 점유입니다. 사용자 수가 늘수록 단일 서버의 동시 연결 한계에 직결되므로, AlertCast는 SSE 계층을 stateless로 설계하고 NATS JetStream subject fan-out으로 모든 인스턴스가 동일 채널을 공유하는 구조 — 클러스터 분할(다중 SSE 인스턴스)은 후속 단계에 도입할 계획입니다.
서버 — 구성요소 (5)
- SSE 계층 신규 SSE 연결 처리, 메시지 팬아웃 (장시간 연결 풀). stateless · 가로 확장 가능 구조
- REST 계층 비즈니스 로직 + 인증·발행 + 재연결 복구(Last-Event-ID). async ORM · 스키마 검증
- 메시지 브로커 NATS JetStream — REST↔SSE 간 직접 호출 금지, NATS subject만 사용
- 세션 저장 PostgreSQL. JWT 토큰 블랙리스트는 JetStream KV
- L7 라우팅 L7 프록시. SSL 종료 + /events 신규/재연결 분기
신규 SSE 연결은 SSE 계층, 재연결 복구(Last-Event-ID)는
REST 계층 — L7 프록시가 분기합니다.
서버 — 메시지 채널 (4종 토픽)
- alert.user.* 개인 사용자 알림
- alert.dept.* 부서 단위 알림
- alert.broadcast 전체 브로드캐스트
- alert.admin.commands 관리자 명령 (강제 로그아웃 등)
서버 — 부하 검증
- 목표 동시 연결
- 1,000,000
- 목표 사용자
- 2,000,000
- 안정성 검증
- 대규모 동시 연결 및 알림 메시지 팬아웃 부하 테스트를 통해 안정성 및 무결성 검증
목표는 1M 연결·2M 사용자. 검증을 이어가고 있으며, 결과 수치는 측정 환경과 함께 박제되는 시점에 같이 노출합니다.
SUB-COMPONENT (계획)
단말 — AlertAgent
서버와 짝을 이루어 단말에서 SSE 수신·로컬 캐시·자동 재연결로 알림 누락을 흡수하는 OS별 단말 에이전트는 후속 단계 도입 예정입니다. 본 시점에는 서버가 발행하는 SSE 이벤트 정의(아래 4종)까지 박제되어 있고, 단말 측 구현·재연결 정책·플랫폼별 동작은 계획 확정 후 갱신합니다.
서버 발행 이벤트 (4종)
- alert 사용자에게 표시할 일반 알림 (제목·본문·우선순위)
- file_ready 서버에서 파일 준비 완료 — 단말이 다운로드 진행
- config_update 서버 측 설정 변경을 단말에 동적 반영
- force_logout 관리자 명령에 의한 강제 로그아웃
누락 복구 흐름
네트워크가 끊기면 단말이 자동으로 재연결하고, 서버의 Last-Event-ID 기반 Replay와 로컬 캐시를 함께 활용해 누락된 메시지를 복구합니다.
플랫폼별 동작
Windows, macOS 등 주요 운영체제에 맞춰 네이티브 알림을 표시하고 자격 증명을 안전하게 관리하도록 설계합니다.
사양
서버 (AlertCast)
- 버전
- v1.3.0
- 라이선스
- 비공개 (내부 프로젝트)
- SSE 계층
- 장기 연결 처리 · 메시지 팬아웃 · NATS 구독 · stateless
- REST 계층
- 인증 · 발행 · 재연결 복구 · async ORM · 스키마 검증
- 브로커
- NATS JetStream
- 세션 저장
- PostgreSQL
- 프록시
- L7 프록시 (SSL 종료 + L7 분기)
측정 환경 / 미달 지표
- 확장성 검증
- 목표 동시 접속자를 수용하기 위해 분산 처리와 메시지 팬아웃을 지속적으로 최적화
보안 · 컴플라이언스
- 라이선스
- 비공개 (내부 프로젝트)
- 운영 환경
- self-hosted — 폐쇄망·인터넷 망 양쪽 운영. 외부 SaaS·클라우드 의존 없음
- 인증
- JWT(HS256) Bearer + JetStream KV 토큰 블랙리스트 (폐기 즉시 반영) · core-auth 공용
- 전송
- L7 프록시 TLS 1.2/1.3 종료
- 계층 격리
- SSE ↔ REST 직접 호출 금지 — NATS subject 또는 NATS req/reply 전용
- 단말 자격증명
- OS 네이티브 보안 저장소와 연동해 자격증명을 안전하게 관리
- SBOM · 서명
- syft SBOM, cosign 서명, grype 스캔 (Taskfile
release:*) - 기술 지원
- 도입 시 전담 기술 부서를 배정하고 패치 지원 채널을 운영
도입 · 시작하기
- 요건 검토 — 동시 연결 규모 · 알림 종류 · 단말 OS · 보안 정책
- 설치 · 통합 — 폐쇄망 반입 패키지 (
alert-server+alert-sse이미지) + 단말 에이전트 배포 - 운영 · 모니터링 — Prometheus / Grafana / Loki / Tempo, NATS subject 추적
도입을 검토하고 계신가요?
고객 요건과 운영 환경에 맞춰 구성·도입 절차를 안내해 드립니다. 데모·제안 요청은 문의로 받습니다.