반응형

Docker (Spring Boot + PWA) 기반 웹 푸시 알림 시스템 설계 및 구현 개요
1. 프로젝트 개요
홈페이지나 기타 시스템들을 운영하다 보면 '공지사항을 올려도 사용자들이 잘 보지 않는다'는 문제가 반복적으로 발생한다.
이 프로젝트는 이러한 문제를 해결하기 위해
모바일 앱 없이도, 웹(PWA)만으로 실시간 알림을 제공하는 웹 푸시 시스템을 Docker 기반 구축하는 것을 목표로 한다.
아래와 같은 조건을 전제로 설계함.
- Docker 기반 서비스 분리
- Spring Boot 내장 WAS 사용
- 1만명 이상 푸시 발송 가능
- 운영 및 유지보수 고려
2. 프로젝트 목적
- Docker 기반 서비스 구성
- Spring Boot 내장 Tomcat 사용
- 푸시 알림 + 큐 처리
- 관리자 페이지에서 공지 작성 → 즉시 발송
- 최소한의 인프라로 안정적인 대량 알림 처리
3. 전체 시스템 구조
[Internet]
|
[Nginx (Docker)]
|
├─ [Spring Boot API (Docker)]
│ ├─ 푸시 구독/해지 API
│ ├─ 관리자 공지 작성
│ ├─ Push 발송 모듈
│ └─ Scheduler / Async 처리
│
├─ [Redis (Docker)]
│ └─ Push Message Queue
│
└─ (추후 확장 가능)
아키텍처 설계 원칙
- 컨테이너 1개 = 서비스 1개
- 외부 트래픽은 Nginx만 노출
- 컨테이너 간 통신은 Docker Network
4. Docker 기반 구성 이유
ⓐ 운영 안정성: 서비스별 장애 격리 가능
ⓑ 배포 단순화: 이미지 빌드
ⓒ 확장성 확보: 추후 서버 증설 시 동일 구조 재사용 가능
5. 주요 컨테이너 역할
#Nginx 컨테이너
HTTPS 처리 (웹 푸시는 HTTPS 필수)
Reverse Proxy
외부 유일 진입 지점
#Spring Boot 컨테이너
Push 구독/해지 API
관리자 공지 작성 페이지
푸시 발송 로직
Scheduler + 비동기 처리
web-push-java 라이브러리 사용
Tomcat은 내장 WAS 사용
별도 WAS 컨테이너 불필요
#Redis 컨테이너
Push 발송 대기 큐
대량 발송 시 안정적인 처리
서버 재기동 시 메시지 유실 방지
1만 명 규모에서는
In-memory Queue만으로도 충분하지만 운영 안정성을 고려해 Redis를 선택

반응형
'SideProject' 카테고리의 다른 글
| Docker 기반 웹 푸시 알림 시스템 - 2 (0) | 2026.01.19 |
|---|---|
| 단축URL 구현하기 (네이버 me2.do 서비스 종료) (2) | 2025.01.20 |