1/8
Version 2.0 — Enterprise Grade

Pushman System

FCM 기반 지능형 푸시 알림 플랫폼
데이터베이스 연동 · 개인화 메시징 · 대규모 처리

🚀 초당 1,000+ 메시지 처리
🎯 개인화 타겟 메시징
📊 실시간 모니터링
🔒 안전한 테스트 모드
🗄️ 다중 DB 지원 (MySQL/PostgreSQL/MSSQL)
⚡ 비동기 큐 처리
🔄 4가지 전송 전략
⏰ Cron 기반 스케줄링
🛡️ Redis 중복 방지
📡 멀티캐스트 최적화
🎨 웹 대시보드 제공
🔐 Telegram OTP 인증
🌐 RESTful API
💾 자동 복구 시스템
⚙️ Rate Limiting
🔥 Firebase FCM 연동

시스템 아키텍처

역할 분리를 통한 확장 가능한 설계

📅

Pushman Admin

스케줄 관리 엔진

  • ✓ Cron 기반 스케줄링
  • ✓ 다중 DB 쿼리
  • ✓ 변수 값 준비 (vars)
  • ✓ 중복 방지 (Redis)

Pushman Service

FCM 전송 엔진

  • ✓ Firebase FCM 연동
  • ✓ 템플릿 변수 치환
  • ✓ 비동기 큐 처리
  • ✓ 멀티캐스트 최적화
📱

User Devices

최종 수신자

  • ✓ iOS / Android
  • ✓ 실시간 알림
  • ✓ 개인화 메시지
  • ✓ 높은 도달률
구분 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,000+
API 요청/초
단일 전송 등록 처리량
2-5ms
API 응답 시간
큐 등록까지의 평균 지연
250-500
메시지/초/Worker
멀티캐스트 활용 시

처리량 (Throughput)

API 요청 (단일) ~1,000 req/s
Redis 큐 Push ~10,000 msg/s
FCM 전송 (멀티캐스트) ~500 msg/s/worker
MySQL 조회 (인덱스) ~1,000 query/s

지연 시간 (Latency)

단일 전송 등록 2-5ms
배치 전송 등록 10-50ms
큐 대기 0-1s
총 End-to-End 1-2s
스케일링 예시 구성별 처리 능력
// 소규모 (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

안전한 운영

개발/프로덕션 분리 및 테스트 모드로 실수 방지

서버 전체 동작 모드 (config.yaml)

🔧 개발 모드

server.env: development

모든 FCM 메시지를 사일런트 전송하여 알림창 없이 데이터 전송만 테스트. 개발 단계에서 안전한 검증 가능.

✅ 일반 모드

server.env: production

FCM notification 필드를 포함하여 사용자 디바이스에 실제 알림창 표시. 프로덕션 환경 운영 모드.

모드 조합 (서버 모드 × 테스트 모드)

개발/일반 모드와 테스트 모드를 조합하여 다양한 시나리오에 대응

서버 모드 테스트 플래그 전송 대상 알림창 사용 시나리오
development test: false 모든 토큰 ❌ 표시 안됨 개발 단계 데이터 전송 테스트
development test: true 테스트 토큰만 ❌ 표시 안됨 특정 기기에서 사일런트 테스트
production test: true 테스트 토큰만 ✓ 표시됨 실제 알림 동작을 테스트 기기에서 검증
production test: false 모든 토큰 ✓ 표시됨 실제 프로덕션 운영
💡 권장 워크플로우
  1. 개발 단계: development → 모든 토큰에 사일런트 전송으로 기능 검증
  2. 스테이징 단계: production + test: true → 실제 알림을 테스트 토큰에만 전송하여 확인
  3. 프로덕션: production + test: false → 전체 사용자 대상 운영

개별 메시지 대상 제어 (테스트 모드)

🎯

토큰 화이트리스트 방식

API 요청 시 "test": true 플래그 추가로 활성화. 사전 등록된 테스트 토큰에만 메시지 전송 허용하여 실수로 프로덕션 사용자에게 테스트 메시지가 가는 것을 원천 차단.

🔐

Telegram OTP 인증

웹 대시보드에서 테스트 모드 → 일반 모드 전환 시 6자리 OTP 인증 필수. Telegram으로 인증 코드 수신 후 검증하여 운영 안정성 확보.

⚠️

자동 토픽 전송 비활성화

테스트 모드에서는 Topic 전송 자동 비활성화. 실수로 전체 구독자에게 테스트 메시지가 발송되는 위험 방지.

🔄

Production 전용 테스트 모드

테스트 모드는 Production 환경에서만 동작합니다. Development 모드에서는 test: true 플래그가 무시되어 실수로 인한 혼란을 방지합니다.

대시보드

직관적인 모니터링과 관리 인터페이스

📊 상태 대시보드

Redis 연결 상태, 큐 길이, 예약 메시지 수를 실시간으로 모니터링. 시간별/일별 발송 통계를 그래프로 시각화하여 한눈에 시스템 상태 파악.

📜 로그 뷰어

API 서버와 Worker의 전송 로그 통합 조회. 배치 발송은 실제 완료 후 성공/실패 카운트 집계하여 정확한 통계 제공.

⏰ 스케줄 관리

예약된 메시지 실시간 조회 및 카운트다운 표시. 예약 시간 수정, 취소 기능으로 유연한 캠페인 관리 가능.

🔍 쿼리 테스트

실제 전송 전 DB 쿼리 결과 미리보기. 변수 치환 결과 확인으로 오류를 사전에 방지하고 완벽한 메시지 검증.

대시보드 접속 정보 URL Endpoints
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 표현식 검증, 예약 시간 수정/취소

테스트 모드

실제 발송 없이 쿼리 결과 확인 및 검증

기술 스택

검증된 기술로 구축된 엔터프라이즈 솔루션

Backend

🔷

Golang 1.21+

고성능 동시성 처리, 낮은 메모리 사용량, 빠른 컴파일

Gin Framework

빠른 HTTP 라우팅, 미들웨어 지원, RESTful API 구축

robfig/cron

Cron 표현식 기반 스케줄링, 정확한 시간 트리거

Data & Infrastructure

🔴

Redis

메시지 큐, 중복 방지 캐시, Rate Limiting, 로그 저장

💾

MySQL / PostgreSQL

스케줄 영속 저장, WAL 모드, 고속 쿼리

🔥

Firebase FCM

iOS/Android 푸시 전송, 멀티캐스트 최적화

지원 데이터베이스

🐬

MySQL

JSON_OBJECT() 함수 지원
대규모 데이터 처리

🐘

PostgreSQL

json_build_object() 지원
고급 JSON 연산

📊

MS SQL Server

FOR JSON PATH 지원
엔터프라이즈 통합

빠른 시작 Installation & Setup
# 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으로 개인화된 푸시 알림 캠페인을
빠르고 안전하게 운영할 수 있습니다

프로젝트 다운로드 문서 보기
24/7
무중단 운영
99.9%
메시지 도달률
<2s
End-to-End 지연

주요 이점

빠른 도입

설정 파일 수정만으로 즉시 사용 가능한 턴키 솔루션

확장 가능

Worker 추가만으로 처리량 선형 증가, 무제한 확장

안전한 운영

테스트 모드와 개발 모드로 프로덕션 영향 제로

완벽한 가시성

실시간 대시보드로 모든 지표 한눈에 모니터링

© 2025 Pushman System. MIT License.

Built with ❤️ using Golang, Redis, Firebase