SideProject

Docker 기반 웹 푸시 알림 시스템 - 3

싹다배워 2026. 1. 27. 10:09
반응형

Spring Boot 기반 웹 푸시 알림 서비스 - DB 테이블 설계


1. DB 테이블 설계

아래와 같은 요구사항 충족을 위해 푸시 발송 로직보다 먼저 DB 구조를 설계했다.

  • 누가 알림을 받았는지
  • 어떤 메시지가 언제 발송되었는지
  • 발송 성공/실패 여부
  • 특정 사용자 또는 전체 발송 이력 조회
  • 향후 재발송, 통계, 로그 관리

2. 전체 테이블 구성 개요

4개의 핵심 테이블로 구성 (테이블명은 대외비)

테이블명 역할
A 알림 대상 사용자 정보
B 웹 푸시 구독 정보
C 발송할 알림 메시지
D 알림 발송 이력

 

각 테이블은 역할을 명확히 분리하여 확장성과 유지보수성을 고려하여 설계했다.


DB ERD

3. 알림 대상 사용자 테이블(A)

알림을 받을 수 있는 사용자 정보를 관리하는 테이블

설계 포인트

  • USER_NUMB를 기준 키로 사용
  • 학생 / 직원 / 일반 등 사용자 유형 확장 가능
  • 공통 관리 컬럼을 포함하여 이력 관리 용이

4. 웹 푸시 구독 정보 테이블(B)

사용자가 브라우저에서 푸시를 허용하면 생성되는 실제 푸시 발송에 필요한 핵심 정보를 저장하는 테이블

설계 포인트

  • 한 사용자가 여러 기기/브라우저를 가질 수 있도록 분리
  • 브라우저 종류, OS 정보 저장
  • 향후 특정 브라우저만 발송하는 구조로 사용 가능

5. 발송 메시지 테이블(C)

관리자가 작성한 발송 대산 메시지를 저장하는 테이블

설계 포인트

  • 메시지 내용과 발송 상태 분리
  • 실제 발송 대상과는 독립적으로 관리
  • 동일 메시지 여러 사용자에게 발송 가능

6. 알림 발송 이력 테이블(D)

실제 어떤 사용자에게 어떤 메시지가 발송되었는지를 관리하는 테이블

설계 포인트

  • 발송 성공/실패 여부 기록
  • 실패 사유 저장(가능하다면..)
  • 재발송, 통계, 로그 활용

7. 시퀀스 설계

DB가 Oracle 10g라는 환경을 고려하여 별도 시퀀스 생성

CREATE SEQUENCE SEQ_SUBS_NUMB START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_MESG_NUMB START WITH 1 INCREMENT BY 1;
CREATE SEQUENCE SEQ_SEND_NUMB START WITH 1 INCREMENT BY 1;

8. 마무리

이번 포스팅에서는 웹 푸시 알림 서비스 개발에 앞서 설계한 DB 구조를 정리했다.

다음 단계로는

  • Spring Boot + MyBatis 기반 비즈니스 로직 구현
  • 실제 메시지 생성 및 발송 이력 처리
  • Web Push 연동

순서로 개발 진행 예정이다.

반응형