프로젝트 배경
1) 예상 리스크 및 대응 계획 - BLE/NFC IoT 단말에서 발생하는 중복 출결 이벤트(동일 학생이 단시간 내 복수 인식)를 Redis 분산 락으로 멱등하게 처리하여 중복 알림 발송을 방지하는 이벤트 중복 제거 설계 문제 - 등교 시간대 수백 개 단말이 동시에 이벤트를 전송할 때 NestJS WebSocket Gateway의 연결 수 제한 없이 IoT 스트림과 관리자 대시보드 스트림을 동일 서버에서
프로젝트 성과
NestJS BullMQ 다채널 큐 분리 및 동적 concurrency 구조 설계
FCM/SMS/카카오 큐를 분리하고 Worker concurrency를 REST API로 런타임 변경 가능하게 설계하여 트래픽 패턴에 맞게 처리 용량을 동적으로 조정하는 구조를 구현하였습니다.
EventEmitter2 Observer 패턴 AlertRule 엔진 구현
DB 기반 AlertRule 엔티티와 EventEmitter2 Observer 패턴을 조합하여 새 임계값 규칙 추가 시 코드 수정 없이 감지 로직이 자동 반영되는 확장 가능한 구조를 설계하였습니다.
PostgreSQL GROUPING SETS 다차원 집계 쿼리 설계
학교·학년·채널 3차원 집계를 PostgreSQL GROUPING SETS와 CTE로 단일 쿼리로 처리하여 BI 리포트 API 구조를 단순화하고 중복 집계 쿼리를 제거하였습니다.
Redis Write-Behind 캐시 + PostgreSQL 알림 이력 구조 설계
알림 발송 이력을 Redis Sorted Set에 임시 집계 후 주기 플러시하는 Write-Behind 패턴을 적용하여 고빈도 이력 기록 시 PostgreSQL 직접 쓰기 부하를 분산하는 구조를 구현하였습니다.
TypeORM 네이티브 쿼리 기반 미수신 학생 집계 구현
토큰 미등록·앱 비활성 미수신 학생을 LEFT JOIN + CASE WHEN 조합으로 집계하여 학급별 알림 등록율 지표를 생성하는 TypeORM 네이티브 쿼리 구조를 설계하였습니다.
핵심 기능
진행 단계
IoT 출결 이벤트 수신 파이프라인 설계
2026.03.
BLE/NFC 단말 이벤트 수신 NestJS Gateway 설계, IoT 단말 등록·상태 관리 DB 스키마 확정, TypeORM 엔티티 및 마이그레이션 구성
프로젝트 상세
1) 포트폴리오 소개 BLE/NFC IoT 단말 기반 자동 출결 인식과 FCM·SMS·카카오알림톡 다채널 알림을 통합한 학교 출결 관리 플랫폼을 NestJS + Redis 큐 구조로 설계하였습니다. IoT 이벤트 실시간 처리, 다채널 알림 워크플로우, 장애 알림 자동화, 수신 분석 BI 리포트를 포함한 통합 운영 관리 시스템 전체를 구현하였습니다. 2) 작업 범위 - 통합 모니터링: IoT 단말 상태







