Pushman Admin

데이터베이스 쿼리 기반
자동화된 푸시 알림 스케줄러

스케줄에 따라 데이터베이스를 쿼리하고, 결과를 Pushman Service로 전달하여 FCM 푸시를 발송하는 관리 시스템

ℹ️ Pushman Service와 함께 사용하는 스케줄 관리 도구입니다

핵심 역할

데이터베이스 쿼리를 실행하고 스케줄에 따라 자동으로 푸시를 발송합니다

스케줄 자동화

Cron 기반으로 원하는 시간에 자동으로 실행되는 스마트한 스케줄러

🔗

데이터베이스 연동

MySQL, PostgreSQL, MSSQL 쿼리 실행으로 실시간 데이터 기반 타겟팅

🚀

Pushman Service 연동

처리된 데이터를 Pushman Service로 전송하여 FCM 푸시 알림 발송

💻

직관적인 웹 UI

코드 없이 웹 브라우저에서 쉽게 스케줄을 생성하고 관리

시스템 아키텍처

Pushman Admin과 Pushman Service의 역할 구분

🗄️

Database

MySQL, PostgreSQL, MSSQL

📅

Pushman Admin

쿼리 실행 & 스케줄 관리

🚀

Pushman Service

FCM 푸시 발송

📱

사용자 기기

iOS, Android

📅

Pushman Admin

스케줄 관리 & 데이터 준비

(이 프로젝트)

  • Cron 기반 스케줄 실행
  • 데이터베이스 쿼리 실행 (MySQL, PostgreSQL, MSSQL)
  • 템플릿 변수 치환
  • 중복 방지 (Redis)
  • Pushman Service API 호출

포트: 기본 9082
의존성: Pushman Service 필요

🚀

Pushman Service

FCM 푸시 전송

(별도 프로젝트)

  • Firebase FCM 서버 연동
  • 푸시 알림 실제 발송
  • 발송 결과 관리
  • 디바이스 토큰 관리
  • REST API 제공

포트: 기본 9080
의존성: 독립 실행 가능

💡 실행 예시: 포인트 소멸 알림

1️⃣ 매일 9시 Pushman Admin이 스케줄 실행
2️⃣ 쿼리 SELECT user_id, token, name, point FROM users WHERE point_expire < 7
3️⃣ 변수 치환 "${name}님, ${point}P 소멸 예정!" → "홍길동님, 1,500P 소멸 예정!"
4️⃣ API 호출 Pushman Service의 /api/push/target 엔드포인트로 전송
5️⃣ FCM 발송 Pushman Service가 Firebase FCM을 통해 실제 푸시 알림 발송

💡 요약: Pushman Admin은 "언제, 누구에게, 무엇을" 결정하고, Pushman Service는 "실제로 발송"합니다.

핵심 기능

강력하면서도 사용하기 쉬운 기능들

💻

직관적인 웹 UI

노코드 스케줄 관리

클릭 몇 번으로 복잡한 푸시 캠페인을 생성하고 관리할 수 있습니다

  • 직관적인 폼 기반 입력
  • 카드 형태의 스케줄 목록
  • 원클릭 활성화/비활성화

실시간 쿼리 테스트

SQL 실행 전 미리보기로 오류를 방지하고 결과를 확인할 수 있습니다

  • 실행 전 쿼리 검증
  • 결과 데이터 미리보기
  • 에러 메시지 즉시 확인

상세 실행 로그

모든 발송 내역을 시각적으로 추적하고 분석할 수 있습니다

  • 타임라인 형태의 로그
  • 다중 필터 (스케줄/상태/날짜)
  • API 호출 로그 조회

반응형 디자인

데스크톱과 모바일에서 모두 완벽하게 동작합니다

  • 모바일 최적화 UI
  • Tailwind CSS 기반 디자인
  • 다크모드 지원
🤖

강력한 자동화

Cron 스케줄링

유연한 시간 설정으로 원하는 시간에 자동 발송

0 9 * * * - 매일 오전 9시
0 12 * * 1 - 매주 월요일 정오
*/30 * * * * - 30분마다
0 0 1 * * - 매월 1일 자정

개인화 템플릿

동적 변수로 사용자별 맞춤 메시지 생성

템플릿:
${name}님, ${point}P 적립!
결과:
홍길동님, 1,500P 적립!

배치 처리

대량 발송도 안정적으로 처리 (청크 단위 분할)

  • 기본 10,000건씩 자동 분할
  • 메모리 효율적 처리
  • 실패 시 부분 재시도

조용한 실행 (테스트 모드)

실제 전송 없이 안전하게 검증

  • 쿼리 결과만 확인
  • 템플릿 변수 치환 검증
  • 실행 로그에 구분 표시
🗄️

유연한 데이터 연동

🐬

MySQL

가장 많이 사용되는 오픈소스 데이터베이스

JSON_OBJECT('key', value)
🐘

PostgreSQL

고급 기능을 지원하는 엔터프라이즈급 DB

json_build_object('key', value)
🪟

MSSQL

Windows 환경에 최적화된 DB

FOR JSON PATH

주요 특징

실시간 쿼리
매 실행마다 최신 데이터로 타겟 선정
📦
JSON 변수
복잡한 데이터도 템플릿 변수로 활용
🔒
안전한 읽기 전용
프로덕션 DB에 영향 없음 (SELECT만 사용)
🔌
다중 DB 동시 사용
스케줄마다 다른 DB 연결 가능
🚫

스마트 중복 방지

Redis 기반 필터링

같은 사용자에게 중복으로 알림이 전송되는 것을 방지합니다

  • ⏱️
    유연한 시간 윈도우
    1시간, 24시간, 1주일 등 자유 설정
  • 🔗
    다중 스케줄 통합
    여러 캠페인 간 중복도 방지
  • 📊
    투명한 로깅
    스킵된 건수를 실행 로그에 자동 기록
동작 방식
1
쿼리 실행 → 100명의 사용자 조회
2
Redis에서 각 사용자의 최근 발송 이력 확인
3
윈도우 시간 내 발송 이력이 있으면 스킵
4
처음 받는 사용자에게만 발송 후 Redis에 기록
결과: 중복 발송 방지 + 로그에 "스킵 건수" 기록
📤

4가지 전송 전략

🎯

Target

개인화 메시지
  • ✓ 각자 다른 내용
  • ✓ 변수 치환 지원
  • ✓ 1:1 맞춤 메시지
용도: 개인화 마케팅, 맞춤 알림
📦

Batch

대량 전송
  • ✓ 모두 같은 내용
  • ✓ 최고 효율
  • ✓ 500개씩 분할
용도: 공지사항, 시스템 알림
👤

Single

단건 전송
  • ✓ 첫 번째만 전송
  • ✓ 변수 치환 지원
  • ✓ VIP 전용
용도: VIP 고객, 테스트
📢

Topic

토픽 전송
  • ✓ 구독자 전체
  • ✓ 쿼리 불필요
  • ✓ FCM 토픽
용도: 뉴스, 카테고리별 알림

실전 활용 사례

다양한 비즈니스 시나리오에 바로 적용 가능합니다

💰

포인트 소멸 안내

7일 내 포인트 만료되는 사용자에게 개인화된 알림 발송

"${name}님, 포인트 ${point}P 소멸 예정!"
스케줄: 매일 오전 10시
타입: Target (개인화)
🎂

생일 축하 메시지

오늘 생일인 회원에게 축하 메시지와 쿠폰 제공

"${name}님, ${age}번째 생일을 축하합니다!"
스케줄: 매일 오전 9시
타입: Target + 중복 방지
📦

미결제 주문 리마인더

결제 대기 중인 주문 완료 유도

"주문번호 ${order_id} 결제를 완료해주세요"
스케줄: 매시간
타입: Target + 1시간 중복 방지
🏆

VIP 등급별 프로모션

등급별 차별화된 할인 쿠폰 발송

"${grade} 등급 ${discount_rate} 할인!"
스케줄: 매주 금요일 오후 3시
타입: Target (등급별 개인화)
📰

뉴스레터 발송

주간 뉴스와 업데이트를 구독자 전체에게 발송

"이번 주 인기 뉴스 TOP 10"
스케줄: 매주 월요일 정오
타입: Batch (대량 전송)
🚨

긴급 시스템 공지

시스템 점검 등 중요 공지를 전체 사용자에게 발송

"오늘 자정 시스템 점검 예정"
스케줄: 즉시 실행
타입: Batch (전체 발송)

기술 스택

검증된 기술로 안정성과 성능을 보장합니다

Go

Golang

고성능 백엔드 서버

Goroutine 기반 동시성 처리

🗄️

SQLite

스케줄 저장소

별도 DB 서버 불필요

Redis

중복 방지 캐시

초고속 인메모리 저장소

🎨

Tailwind CSS

모던 UI 디자인

반응형 웹 인터페이스

🔥

Pushman Service

푸시 전송 엔진

Firebase FCM 서버 연동

🕐

Cron Scheduler

자체 스케줄 실행

robfig/cron 라이브러리

지금 바로 시작하세요

복잡한 설정 없이 5분 안에 첫 푸시 알림을 발송할 수 있습니다

오픈소스
빠른 성능
🔒 안전한 보안