마이크로서비스 기반의 확장 가능한 아키텍처로 설계되었습니다.
API Server와 Worker가 분리되어 있어 높은 가용성과 안정성을 제공합니다.
┌─────────────┐
│ Client │ HTTP
│ (Mobile) │─────────┐
└─────────────┘ │
▼
┌─────────────┐
│ API Server │
│ (cmd/api) │
└──────┬──────┘
│ LPUSH
▼
┌─────────────┐
│ Redis │
│ Queue │
└──────┬──────┘
│ BRPOP
▼
┌─────────────┐ ┌─────────────┐
│ MySQL │◀─│ Worker │
│ Scheduler │ │ (cmd/worker)│
└─────────────┘ └──────┬──────┘
│ HTTP/2
▼
┌─────────────┐
│ FCM API │
│ (Firebase) │
└──────┬──────┘
│
▼
┌─────────────┐
│User Devices │
│iOS/Android │
└─────────────┘
┌───────────────────────────────────────────────────────────────────────┐
│ Pushman Service │
│ │
│ ┌──────────────┐ ┌─────────────────────────────┐ │
│ │ Web Admin │─────────────▶│ API Server │ │
│ │ (Browser) │ Auth │ (Port 9080) │ │
│ └──────────────┘ │ ┌──────────┬────────────┐ │ │
│ │ │ /web │ /send/* │ │ │
│ ┌──────────────┐ │ │ /api │ Middleware│ │ │
│ │ Client │─────────────▶│ └──────────┴────────────┘ │ │
│ │ (Mobile) │ API Key └──────────────┬──────────────┘ │
│ └──────────────┘ │ LPUSH │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Redis Queue │ │
│ │ - push_queue │ │
│ │ - push_logs │◀─────┐ │
│ │ - rate_limit │ │ │
│ └────────┬────────┘ │ │
│ │ BRPOP │ │
│ ┌──────────────┐ ▼ │ │
│ │ MySQL │◀──────────────┌──────────────────┐ │ │
│ │ Database │ Schedule │ Worker Pool │───────┘ │
│ │ │ Token │ │ │
│ │ - scheduled │ Topic │ - FCM Sender │ │
│ │ - test_tkn │ │ - Retry Logic │ │
│ │ - topics │ │ - Result Logger │ │
│ └──────┬───────┘ └────────┬─────────┘ │
│ │ 10s Check │ HTTP/2 │
│ │ ▼ │
│ └───────────────────────┌──────────────────┐ │
│ │ Firebase │ │
│ │ FCM (Google) │ │
│ └────────┬─────────┘ │
│ │ Push │
│ ▼ │
│ ┌──────────────────┐ │
│ │ User Devices │ │
│ │ iOS / Android │ │
│ └──────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────────────┘
Gin Framework 기반의 고성능 REST API. 요청을 받아 Redis 큐에 빠르게 저장하고 즉시 응답합니다.
고루틴 기반 멀티스레드 워커. 큐에서 메시지를 가져와 병렬로 처리합니다.
인메모리 메시지 큐로 초고속 처리. LPUSH/BRPOP 패턴으로 안정적인 메시지 전달을 보장합니다.
스케줄 메시지와 로그를 영구 저장. 시스템 재시작 후에도 데이터가 안전하게 보관됩니다.
Redis 큐를 활용한 초고속 메시지 처리로 실시간으로 사용자에게 알림을 전달합니다. API 요청 후 밀리초 단위로 큐에 저장되어 즉시 처리됩니다.
최대 500개의 디바이스에 한 번에 메시지를 전송할 수 있습니다. 토큰 배열을 자동으로 배치 단위로 분할하여 처리하므로 수천, 수만 명의 사용자에게도 효율적으로 전송 가능합니다.
각 사용자에게 맞춤형 메시지를 전송할 수 있습니다. ${name}, ${points}, ${product} 같은 변수를 활용하여 사용자별로 다른 내용의 알림을 제공하세요.
원하는 시간에 자동으로 메시지를 발송할 수 있습니다. 이벤트 알림, 리마인더 등을 미리 설정하고 정확한 시각에 전송하세요. MySQL에 영구 저장되어 재부팅 후에도 안전합니다.
사용자를 그룹으로 분류하여 관심사별로 메시지를 보낼 수 있습니다. 뉴스, 공지사항, 카테고리별 알림 등에 활용하세요. FCM 토픽 구독 관리 기능을 완벽하게 지원합니다.
웹 대시보드를 통해 전송 상태를 실시간으로 확인할 수 있습니다. 큐 상태, 전송 로그, 시스템 로그, 스케줄 목록 등을 한눈에 파악하고 관리하세요.
네트워크 오류나 일시적인 장애 발생 시 자동으로 재시도하여 메시지 전송률을 최대화합니다. 지수 백오프(Exponential Backoff) 알고리즘을 사용합니다.
개발 환경과 프로덕션 환경을 명확히 분리하여 안전하게 테스트할 수 있습니다. 개발 모드에서는 사일런트 푸시로 전송되어 실제 사용자에게 알림이 가지 않으며, 테스트 모드로 등록된 테스트 토큰에만 메시지를 보낼 수 있습니다.
server.env: development
(사일런트 모드, 알림 없음)
server.env: production
(일반 모드, 알림 포함)test: true 추가 시
등록된 테스트 토큰만 수신 가능
API 키 인증, IP 화이트리스트, Rate Limiting, Basic Auth 등 다층 보안 체계로 시스템을 보호합니다. Telegram OTP 인증으로 웹 대시보드 테스트 모드 전환을 안전하게 관리합니다.
모든 전송 내역이 Redis에 저장됩니다. 전송 시간, 타겟 정보, 메시지 내용, 성공/실패 여부, FCM 응답 등 모든 정보를 추적할 수 있습니다.
Redis 큐의 상태를 실시간으로 조회하고 관리할 수 있습니다. 큐에 쌓인 메시지 수 확인, 큐 초기화, 메시지 재처리 등 대기열을 완벽하게 제어할 수 있습니다.
API 요청 속도를 제한하여 시스템 과부하를 방지합니다. IP별, API 키별로 초당 요청 수를 제한하고, 분산 환경에서도 일관된 속도 제한을 보장합니다.
RESTful API를 통해 모든 기능을 프로그래밍 방식으로 제어할 수 있습니다.
JSON 형식의 요청/응답으로 다양한 언어에서 쉽게 통합 가능합니다.
단일 토큰에 푸시 메시지 전송. 변수 치환을 지원하여 개인화된 메시지를 보낼 수 있습니다.
여러 토큰에 동시 전송. 최대 500개까지 자동 분할 처리. 대량 발송에 최적화되어 있습니다.
FCM 토픽에 메시지 전송. 구독한 모든 사용자에게 한 번에 알림을 보냅니다.
타깃별 개인화 전송. 각 토큰마다 다른 변수 값으로 맞춤형 메시지를 전송합니다.
💡 자동 최적화: 동일한 메시지 5개 이상 시 Multicast 사용
시스템 상태 조회. 큐 길이, 워커 상태, 메모리 사용량 등을 실시간으로 확인합니다.
전송 로그 조회. 페이지네이션을 지원하며 전송 결과를 상세하게 확인할 수 있습니다.
예약된 메시지 목록 조회. 대기 중인 스케줄을 확인하고 관리할 수 있습니다.
예약 메시지 취소. 아직 전송되지 않은 스케줄을 삭제할 수 있습니다.
토픽 목록 관리. 등록된 모든 FCM 토픽을 조회하고 관리합니다.
다양한 방법으로 Pushman을 활용할 수 있습니다.
웹 UI 대시보드부터 RESTful API까지 완벽하게 지원합니다.
직관적인 웹 인터페이스로 모든 기능을 쉽게 관리할 수 있습니다.
표준 HTTP API로 모든 언어에서 쉽게 통합 가능합니다.
시스템 상태를 한눈에 확인하고 관리할 수 있습니다.
모든 전송 내역을 상세하게 기록하고 추적할 수 있습니다.
다양한 프로그래밍 언어로 HTTP 요청을 통해 쉽게 통합할 수 있습니다.
RESTful API 기반으로 모든 언어에서 사용 가능합니다.
컨텍스트 지원, 타입 안전
Async/await, Type hints
TypeScript, Promise
PSR-4, Guzzle HTTP
개발 환경과 프로덕션 환경을 명확히 분리하고,
안전한 테스트 환경을 구축할 수 있는 다양한 모드를 제공합니다.
test: true 파라미터로 등록된 테스트 토큰에만 전송하여
프로덕션 환경에서 안전하게 테스트할 수 있습니다.
서버 전체를 사일런트 모드로 동작시켜 개발 환경에서 안전하게 테스트할 수 있습니다.
알림창 없이 데이터만 전송되므로 실제 사용자에게 방해되지 않습니다.
server.env: development
server.env: production
development + test: false
development + test: true
production + test: false
production + test: true
💡 Tip:
개발 모드는 서버 설정(config.yaml)에서 제어하며,
테스트 모드는 API 요청마다 test: true 파라미터로 제어합니다.
⚠️ 테스트 모드는 Production 환경에서만 동작하며, Development 모드에서는 무시됩니다.
실전 벤치마크 기반의 검증된 성능 지표입니다.
고루틴 기반 동시성 처리로 높은 처리량을 보장합니다.
API 응답 시간
(큐 저장까지)
초당 처리 가능
요청 수
Redis 큐
초당 Push/Pop
Worker당 초당
FCM 전송 수
엔터프라이즈급 보안 기능으로 시스템과 데이터를 안전하게 보호합니다.
모든 API 요청에 X-API-Key 헤더를 통한 인증이 필요합니다. 설정 파일에서 API 키를 관리하며, 키가 없는 요청은 자동으로 거부됩니다.
특정 IP 주소만 API에 접근할 수 있도록 제한합니다. CIDR 표기법을 지원하여 네트워크 단위로 접근을 관리할 수 있습니다.
Redis 기반 분산 Rate Limiter로 초당 요청 수를 제한합니다. DDoS 공격과 과도한 요청으로부터 시스템을 보호합니다.
웹 대시보드는 HTTP Basic Authentication으로 보호됩니다. 관리자만 시스템 상태와 로그를 확인할 수 있습니다.
리버스 프록시(Nginx, Caddy 등)를 통해 HTTPS를 적용할 수 있습니다. 모든 데이터 전송이 암호화됩니다.
모든 API 요청과 전송 내역을 로그에 기록합니다. 보안 사고 발생 시 추적과 분석이 가능합니다.
다양한 산업과 비즈니스 시나리오에서 Pushman을 활용할 수 있습니다.
주문 확인, 배송 알림, 특가 세일 정보를 고객에게 실시간으로 전달하세요. 장바구니 이탈 고객에게 리마인더를 보내 구매 전환율을 높일 수 있습니다. 재입고 알림, 쿠폰 만료 알림 등으로 재방문을 유도하세요.
⏰ 스케줄 전송: 타임세일 오픈 시각에 맞춰 사전 예약 발송, 장바구니 담은 후 1시간/24시간 후 자동 리마인더 전송, 매일 오전 9시 신상품 알림 발송, 쿠폰 만료 D-3/D-1 자동 알림 등
새로운 댓글, 좋아요, 팔로우 알림을 사용자에게 즉시 전송하세요. 사용자 참여를 높이고 활발한 커뮤니티를 만들 수 있습니다. 실시간 채팅, 멘션, 친구 요청 등 즉각적인 알림이 필요한 모든 경우에 활용하세요.
⏰ 스케줄 전송: 주간/월간 활동 요약 리포트 매주 일요일 발송, 인기 게시물 다이제스트 매일 저녁 발송, 커뮤니티 이벤트 시작 1시간 전 사전 알림, 비활동 사용자 재참여 유도 메시지 정기 발송 등
거래 내역, 입출금 알림, 보안 경고를 안전하게 전송하세요. 실시간 알림으로 고객의 자산을 보호하고 신뢰를 구축할 수 있습니다. 이상 거래 탐지, 계좌 잔액 부족, 대출 상환 알림 등에 활용하세요.
⏰ 스케줄 전송: 대출 상환일 D-7/D-3/D-1 자동 알림, 카드 결제일 사전 안내, 월간 자산 리포트 매월 1일 발송, 정기 적금 만기 알림, 투자 수익률 주간 리포트 등
이벤트 시작, 보상 획득, 친구 요청 등을 플레이어에게 알려주세요. 푸시 알림으로 재방문율을 높이고 게임 몰입도를 향상시킬 수 있습니다. 한정 이벤트, 길드 전쟁, 에너지 충전 완료 등 시간에 민감한 알림에 최적입니다.
⏰ 스케줄 전송: 길드 전쟁/레이드 시작 30분 전 사전 알림, 일일 퀘스트 리셋 알림 매일 자정 발송, 시즌 종료 D-7/D-3/D-1 카운트다운 알림, 휴면 유저 복귀 이벤트 안내 정기 발송, 주간 랭킹 보상 월요일 발송 등
속보, 관심 주제 업데이트를 독자에게 신속하게 전달하세요. 토픽별 구독 기능으로 사용자가 원하는 콘텐츠만 받아볼 수 있습니다. Breaking News, 라이브 스코어, 날씨 알림 등에 활용하세요.
⏰ 스케줄 전송: 아침 브리핑 뉴스 매일 오전 7시 발송, 인기 기사 다이제스트 매일 저녁 9시 발송, 주말 특집 기사 금요일 저녁 발송, 정기 구독 콘텐츠 발행 시각 예약 전송, 스포츠 경기 시작 1시간 전 프리뷰 발송 등
운동 리마인더, 건강 체크 알림, 약 복용 시간을 알려주세요. 예약 전송 기능으로 사용자의 건강 관리를 도울 수 있습니다. 진료 예약, 검사 결과, 건강 목표 달성 등을 알림으로 관리하세요.
⏰ 스케줄 전송: 약 복용 알림 매일 정해진 시간 자동 발송, 진료 예약 D-3/D-1 리마인더, 운동 루틴 알림 매일 저녁 6시 발송, 물 마시기 알림 2시간마다 발송, 주간 건강 리포트 일요일 발송, 정기 검진 D-30/D-7 안내 등
주문 접수, 배달 시작, 배달원 위치, 도착 예정 시간을 실시간으로 알려주세요. 고객 만족도를 높이고 불안감을 해소할 수 있습니다. 프로모션, 쿠폰, 단골 할인 등 마케팅 메시지도 효과적으로 전달하세요.
⏰ 스케줄 전송: 점심/저녁 시간대 특가 프로모션 사전 발송, 주말 할인 쿠폰 금요일 발송, 단골 고객 리워드 매월 1일 지급 안내, 비오는 날 배달비 할인 기상 예보 연동 발송, 재주문 유도 메시지 마지막 주문 후 7일 경과 시 발송 등
시스템 알림, 워크플로우 승인, 작업 완료 등 비즈니스 이벤트를 전달하세요. 팀 협업 도구, 프로젝트 관리, CRM 시스템 등에 통합하여 업무 효율을 높이고 실시간 커뮤니케이션을 강화하세요.
⏰ 스케줄 전송: 주간 업무 리포트 매주 월요일 오전 발송, 프로젝트 마일스톤 D-7/D-3 알림, 정기 백업 완료 알림 매일 새벽 발송, 라이선스 만료 D-30/D-14/D-7 안내, 월간 사용량 리포트 매월 1일 발송, 시스템 점검 예정 사전 공지 등
Pushman의 모든 기능을 활용하기 위한 완벽한 문서를 제공합니다.
설치부터 운영까지 필요한 모든 정보가 담겨 있습니다.
설치 및 설정 가이드. 요구사항, 빌드, 실행 방법을 단계별로 안내합니다.
전체 API 레퍼런스. 모든 엔드포인트와 요청/응답 예시를 제공합니다.
보안 가이드. API 키, IP 필터링, Rate Limiting 설정 방법을 설명합니다.
설정 가이드. config.yaml의 모든 옵션과 환경변수를 상세히 설명합니다.
성능 최적화 가이드. 벤치마크 결과와 튜닝 방법을 제공합니다.
클라이언트 라이브러리 가이드. Go, Python, Node.js, PHP 사용 예시를 제공합니다.
FCM 토픽 가이드. 토픽 구독/해제, 전송 방법, 베스트 프랙티스를 설명합니다.
배치 전송 가이드. 단일/배치/멀티캐스트 방식 비교와 최적화 전략을 제공합니다.
개발 모드 가이드. 개발/테스트 모드 차이와 사일런트 푸시 설정을 설명합니다.
간단한 API 호출만으로 강력한 푸시 알림 시스템을 구축할 수 있습니다.
복잡한 설정 없이 즉시 사용 가능하며, 확장성과 안정성이 검증되었습니다.
고성능 백엔드
인메모리 메시지 큐
경량 데이터베이스 · 영속성
FCM Push Gateway
경량 웹 프레임워크
컨테이너 기반 배포