FCM 기반 지능형 푸시 알림 플랫폼
데이터베이스 연동 · 개인화 메시징 · 대규모 처리
역할 분리를 통한 확장 가능한 설계
스케줄 관리 엔진
FCM 전송 엔진
최종 수신자
| 구분 | Pushman Admin | Pushman Service |
|---|---|---|
| 핵심 역할 | 데이터 준비 및 스케줄링 | 실제 FCM 발송 및 변수 치환 |
| 데이터 소스 | MySQL, PostgreSQL, MSSQL | Redis 큐 + MySQL DB |
| 주요 기능 | 쿼리 실행, 변수 값 준비, 중복 방지 | 변수 치환, 배치 전송, 예약 관리 |
| 기본 포트 | 9082 | 9080 |
4가지 전송 전략으로 모든 시나리오 대응
| 전송 방식 | 특징 | 개인화 | 효율성 | 용도 |
|---|---|---|---|---|
| Target | 각 사용자별 맞춤 메시지 | ✓ 지원 | 보통 | 개인화 캠페인 |
| Batch | 대량 동일 메시지 (500개 단위) | ✗ 미지원 | 최고 | 공지사항, 이벤트 |
| Single | 단일 디바이스 전송 | ✓ 지원 | 보통 | VIP 전용, 테스트 |
| Topic | 토픽 구독자 전체 | ✗ 미지원 | 높음 | 카테고리별 알림 |
Pushman Admin이 DB 쿼리로 변수 값(vars)을 준비하면, Pushman Service가 템플릿 변수 치환을 수행하여 각 사용자에게 맞춤형 메시지 전달. MySQL의 JSON_OBJECT(), PostgreSQL의 json_build_object() 등을 활용하여 복잡한 데이터도 손쉽게 처리.
Redis 큐와 Worker 프로세스를 활용한 비동기 처리로 API 응답 시간 2~5ms 달성. Worker 수평 확장으로 처리량 선형 증가 (5개 Worker 시 ~50 msg/s).
Redis 기반 중복 필터링으로 설정된 시간 윈도우 내 동일 사용자에게 재발송 방지. 다중 캠페인 간 통합 관리로 사용자 피로도 최소화.
웹 대시보드를 통한 시간별/일별 발송 통계, 큐 상태, 성공/실패율 실시간 추적. 상세 로그와 배치 집계로 완벽한 운영 가시성 확보.
엔터프라이즈급 처리 능력과 확장성
// 소규모 (1-10만 사용자) Worker: 2개 → 처리량: ~20-50 msg/s | Redis: 2GB | MySQL: ~100MB // 중규모 (10-100만 사용자) Worker: 5-10개 → 처리량: ~100-500 msg/s | Redis: 8GB | PostgreSQL // 대규모 (100만+ 사용자) Worker: 20+개 → 처리량: ~1,000+ msg/s | Redis Cluster | PostgreSQL HA
개발/프로덕션 분리 및 테스트 모드로 실수 방지
server.env: development
모든 FCM 메시지를 사일런트 전송하여 알림창 없이 데이터 전송만 테스트. 개발 단계에서 안전한 검증 가능.
server.env: production
FCM notification 필드를 포함하여 사용자 디바이스에 실제 알림창 표시. 프로덕션 환경 운영 모드.
개발/일반 모드와 테스트 모드를 조합하여 다양한 시나리오에 대응
| 서버 모드 | 테스트 플래그 | 전송 대상 | 알림창 | 사용 시나리오 |
|---|---|---|---|---|
development |
test: false |
모든 토큰 | ❌ 표시 안됨 | 개발 단계 데이터 전송 테스트 |
development |
test: true |
테스트 토큰만 | ❌ 표시 안됨 | 특정 기기에서 사일런트 테스트 |
production |
test: true |
테스트 토큰만 | ✓ 표시됨 | 실제 알림 동작을 테스트 기기에서 검증 |
production |
test: false |
모든 토큰 | ✓ 표시됨 | 실제 프로덕션 운영 |
development → 모든 토큰에 사일런트 전송으로 기능 검증production + test: true → 실제 알림을 테스트 토큰에만 전송하여 확인production + test: false → 전체 사용자 대상 운영API 요청 시 "test": true 플래그 추가로 활성화. 사전 등록된 테스트 토큰에만 메시지 전송 허용하여 실수로 프로덕션 사용자에게 테스트 메시지가 가는 것을 원천 차단.
웹 대시보드에서 테스트 모드 → 일반 모드 전환 시 6자리 OTP 인증 필수. Telegram으로 인증 코드 수신 후 검증하여 운영 안정성 확보.
테스트 모드에서는 Topic 전송 자동 비활성화. 실수로 전체 구독자에게 테스트 메시지가 발송되는 위험 방지.
테스트 모드는 Production 환경에서만 동작합니다. Development 모드에서는 test: true 플래그가 무시되어 실수로 인한 혼란을 방지합니다.
직관적인 모니터링과 관리 인터페이스
Redis 연결 상태, 큐 길이, 예약 메시지 수를 실시간으로 모니터링. 시간별/일별 발송 통계를 그래프로 시각화하여 한눈에 시스템 상태 파악.
API 서버와 Worker의 전송 로그 통합 조회. 배치 발송은 실제 완료 후 성공/실패 카운트 집계하여 정확한 통계 제공.
예약된 메시지 실시간 조회 및 카운트다운 표시. 예약 시간 수정, 취소 기능으로 유연한 캠페인 관리 가능.
실제 전송 전 DB 쿼리 결과 미리보기. 변수 치환 결과 확인으로 오류를 사전에 방지하고 완벽한 메시지 검증.
Pushman Admin Dashboard http://localhost:9082 ├─ / 스케줄 관리 (생성/수정/삭제) ├─ /logs 실행 로그 타임라인 ├─ /execute 수동 실행 인터페이스 ├─ /guide 작성 가이드 및 예제 └─ /landing 제품 소개 페이지 Pushman Service Dashboard http://localhost:9080 ├─ /web/status 시스템 상태 및 통계 ├─ /web/send_logs_single Single 발송 로그 조회 ├─ /web/send_logs_batch Batch 발송 로그 조회 └─ /web/schedule 예약 메시지 관리
초당 처리량, 성공률, 큐 대기 상태
요청/응답 추적, 에러 메시지, API 호출 이력
Cron 표현식 검증, 예약 시간 수정/취소
실제 발송 없이 쿼리 결과 확인 및 검증
검증된 기술로 구축된 엔터프라이즈 솔루션
고성능 동시성 처리, 낮은 메모리 사용량, 빠른 컴파일
빠른 HTTP 라우팅, 미들웨어 지원, RESTful API 구축
Cron 표현식 기반 스케줄링, 정확한 시간 트리거
메시지 큐, 중복 방지 캐시, Rate Limiting, 로그 저장
스케줄 영속 저장, WAL 모드, 고속 쿼리
iOS/Android 푸시 전송, 멀티캐스트 최적화
JSON_OBJECT() 함수 지원
대규모 데이터 처리
json_build_object() 지원
고급 JSON 연산
FOR JSON PATH 지원
엔터프라이즈 통합
# 1. 빌드 go mod tidy go build -o pushman-admin go build -o pushman-service # 2. 설정 cp .env.example .env vi config.yaml # 3. 실행 ./pushman-service -config ./config-service.yaml # Port 9080 ./pushman-admin -config ./config-admin.yaml # Port 9082 # 4. 웹 접속 http://localhost:9082 # Pushman Admin http://localhost:9080 # Pushman Service
Pushman System으로 개인화된 푸시 알림 캠페인을
빠르고 안전하게 운영할 수 있습니다
설정 파일 수정만으로 즉시 사용 가능한 턴키 솔루션
Worker 추가만으로 처리량 선형 증가, 무제한 확장
테스트 모드와 개발 모드로 프로덕션 영향 제로
실시간 대시보드로 모든 지표 한눈에 모니터링
© 2025 Pushman System. MIT License.
Built with ❤️ using Golang, Redis, Firebase